3.应用举例
假定甲乙机以方式1进行串行数据通信,其波特率为1200。甲机发送,发送数据在外部RAM 4000H~401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM 5000H开始的区域中。
解题说明:
①假设晶振频率为6MHZ,按1200波特率,计算定时器1的计数初值:
t,___ 6 X 10’XI__^-__。___tt
X一256-HH—256-13一243一FZH
—一384 X 1200——”———“———一
②sined—0,波特率不倍增,则应使PCON—00H。
③串行发送的内容包括数据块的首本地址和数据两部分内容。对数据块首本地址以查询方
式传送,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许单行中断。
④数据的传送是在中断服务程序中完成的。数据为ASCll码形式,其最高位作奇偶校验位
使用。MCS-51单片机的PSW中有奇偶校验位P,当累加器A中1的数目为奇数时,P 一
1。但如果直接把P的值送入ASCll码的最高位,又变成了偶校验,与要求不符。为此应把
P值取反后送入最高位才能达到奇偶校验的要求。
下面是发送和接收的参考程序。
甲机发送主程序:
ORG 8023H
AJMP ACINT
ORG 8030H
MOV TMOD,#20H;设置定时器1工作方式2
MOV TLI,#FZH;定时器1计数初值
MOV THI,#FZH;计数重装值
SETB EA;中断总允许
CLR ES;禁止审行中断
MOV PCON,#00H;波特率不倍增
SETB TRI;启动定时器1
MOV SCON,#50H;设置串行口方式1,REN—l
MOV SBUF,#40H;发送数据区首地址高位
SOUTI:JNB TI,$;等待一帧发送完毕
CLR TI;清发送中断标志
MOV SBUF,#00H;发送数据区首地址低位
SOUTZ:JNB TI,$;等待一帧发送完毕
CLR TI
MOV SBUF,#40HI发送数据区本地址高位
SOUT3;JNB TI,$;等待一帧发送完毕
CLR TI;清发送中断标志
MOV SBUF,#IFH;发送数据区未地址低位
SOUT4:JNB TI,$;等待一帧发送完毕
CLR TI
MOV DPTR,#4000H;数据区地址指针
MOV R7,#20H;数据个数
SETB ES;开放串行中断
AHALT:AJMP$;等待中断
甲机中断服务程序:
ORG 8100H
ACINT:MOVX A,@DPTR;读数据
CLR TI;清发送中断
MOV C,P;奇偶标志赋予C
CPL C;C取反
MOV ACC.7,C;送ASCll码高位
MOV SBUF,A;发送字符
CJNE R7,#00H,AENDIS发送完转AENDI
INC DPTR
AJMP AENDZ;未发送完转AENDZ
AENDI:CLR ES;禁止串行中断
CLR TRI;定时器1停止计数
AENDZ:RETI;中断返回
乙机接收主程序:
ORG 8023H
AJMP BCINT
ORG 8030H
MOV TMOD,#20H;设置定时器1工作方式2
MOV THI,#FZH;定时器1计数初值
MOV TLI,#FZH;计数重装值
SETB EA;中断总允许
CLR ES o禁止串行中断
MOV PCON,#00H;波特率不倍增
SETB TRI;启动定时
MOV SCON,#50H;设置串行口方式1,REN—1
MOV DPTR,#5000H;数据存放首地址
MOV R7,#24H;接收数据个数
SINI:JNB RI,$;等待
CLR RI;清接收中断标志
MOV A,SBUF;接收数据区首地址高位
MOVX@DPTR,A;存首地址高位
INC DPTR;地址指针增量
SINZ:JNB RI,$;
CLR RIo
MOV A,SBUF;接收数据区首地址低位
MOVX@DPTR,A;存首地址低位
INC DPTRI
SIN3:JNB RI,$;
CLR RI
MOV A,SBUF;接收数据区末地址高位
MOVX@DPTR,A;存米地址高位
INC DPTR o
SIN4:JNB RI,$;
CLR RI】
MOV A,SBUF;接收数据区本地址低位
MOVX@DPTR,A;存末地址低位
INC DPTR;
SETB ES;开放串行中断
BHALT:AJMP$;等待中断
乙机中断服务程序:
ORG 8100H
BCINT:MOV A,SBUF,接收数据
MOV C,P;奇偶标志赋予C
CPL C;C取反
ANL A,#7FH;删去校验位
MOV@DPTR,A;存数据
CLR RI;清接收中断标志
CJNE R7,#00H,BENDI;接收完转BENDI
INC DPTR
AJMP AENDZ;没接收完转BENDZ
BENDI:CLR ES;禁止审行中断
CLR TRI;定时器豆停止计数
BENDZ:RETI;中断返回
73.3串行工作方式2
/
方式2是11位为一帧的串行通信方式,即1个起始位、9个数据位和1个停止位。
在方式2下,字符还是8个数据位。而第9数据位既可作奇偶校验位使用,也可作控制位使用,其功能由用户确定,发送之前应先在SCON的TB8位中准备好。这可使用如下指令完成:
\SETB TBS ITBS位置1
SETB TBS;TB。位置0
准备好第9数据位之后,再向SBUF写入字符的8个数据位,并以此来启动串行发送。一个字符帧发送完毕后,将TI位置1,其过程与方式1相同。方式2的接收过程也与方式1基本类似,所不同的只在第9数据位上,串行口把接收到的8个数据送入SBUF,而把第9数据位
送入RBS。
方式2的波特率是固定的,且有两种。一种是晶振频率的三十二分之一;另一种是晶振频率的六十四分之一。即fosc/33和fosc/64。如用公式表示则为:
、。__2.
彼特率一十X fOSC
”’“’64 即与PCON寄存器中SMOD位的值有关。当SMOD—0时,波特率为fos。的六十四分之一;当SMOD一1时,波特率等于f。S。的三十二分之一。
73.4串行H作方式3
方式3同样是11位为一帧的串行通信方式,其通信过程与方式2完全相同,所不同的仅
在于波特率。方式2的波特率只有固定的两种,而方式3的波特率则可由用户根据需要设定。其设定方法与方式1一样,即通过设置定时器1的初值来设定波特率。
单片机多机通信
7.4.1 多机通信原理
单片机的多机通信是指一台主机和多台从机之间的通信,其连接如图7-12所示。
图7-12主从式多机通信
主机发送的信息可传送到各个从机或指定的从机,而各从机发送的信息只能被主机接收。由于通信直接以TTL电平进行,因此主从机之间的连线以不超过一公尺为宜。此外,各从机应当编址,以便主机能按地址寻找通讯伙伴。
多机通信时,主机向从机发送的信息分地址和数据两类。以第9数据位作区分标志,为0 时表示数据,为1时表示地址。
通信是以主机发送信息,从机接收信息开始。主机发送时,通过设置TB8位的状态来说明发送的是地址还是数据为0(时表示数据,为1时表示地址)。而在从机方面,为了接收信息,初始化时应把SCON的SM2位置1。因为多机通信时,串行口都工作在方式2或方式3下,接收数据要受SM2位的控制。当SM2=1时,则只有接收到的第9数据位状态为1时,才将数据送SBUF,并置位RI,发出中断请求,否则接收的数据被舍弃。而当SM2=0时,无论第9数据位是0还是1,都把接收到的数据控SBUF,并发出中断请求。
通信开始,主机首先发送地址。各从机接收到地址时,由于SM2=1和RB8=1,所以各从机
都分别发出中断请求,通过中断服务程序来判断主机发送的地址与本从机地址是否相符。若相符,则把该从机的SM2位清0,以准备接收其后传送来的数据。其余从机由于地址不符,则保持SM2=1状态。
此后主机发送数据,由于TB2=0,虽然各从机都能接收到,但只有SM2=0的那个被寻址
的从机才能把数据送SBUF,其余各从机皆因SM2=1和RB8=0,而将数据舍弃。这就是多机通信中主从机一对一的通信情况。通信只能在主从机之间进行,如若进行两个从机之间的通信,需通过主机作中介才能实现。
综上所述,把多机通信的过程总结如下:
①全部从机初始化为工作方式2或方式3,置位SM2;,允许中断。
②主机置位TB8,发送要寻址的从机地址。
③所有从机均接收主机发送的地址,并各自进入中断服务程序,进行地址比较。
④被寻址的从机确认后,把自身的SM2清0,并向主机返回地址供主机核对。
⑤核对无误后,主机TB8=0,向被寻址的从机发送命令,通知从机是进行数据接收还是进行数
据发送。
⑤主从机之间进行数据通信。
742多机通信举例
假定①从机地址为00H~FEH,即允许有255台从机。
②以地址形式发送的命令有FFH,其功能是使所有从机的SM。位置1。
③以数据形式发送的命令有00H(从机接收数据)和01H(从机发送数据)。
④从机返回的状态字格式为夫
一
其中ERR——非法命令位。ERR一1表示从机接收到的是非法命令。
TRDY——发送准备位。TRDY=0从机发送未准备就绪;
TRDY=1,从机发送准备就绪。
RRDY——接收准备位。RRDY=0,从机接收来准备就绪;
RRDY=1,从机接收准备就绪。
1.主机子程序
主机通信以子程序调用形式进行,因此主机通信程序为子程序。在调用主机子程序之前,·
有关寄存器的内容如下:
RO——主机接收的数据块首地址
RI——主机发送的数据块首地址
RZ——寻址的从机地址
R3——主机发出的命令
R4——主机发送的数据块长度
/.一4HIW”
主机通信子程序:厂化e
主机串行口设定为工作方式。,允许接收,置*尼为1.则样制率为11Oil611。一助_。
MOV SCON,#DSH;串行口控制字
MSIOI:MOV A,RZS
MOV SBUF,A;发出从机地址
JNB RI,$;等待从机应答
CLR RI’;从机应答后清RI
MOV A,SBUF;取出从机应答地址
XRL A,RZ;核对应答地址
~JZ MSIO3·;地址相将转
’”’”’:“””’“””,””””;使所有从机’”。-t
SETB TBS;置地址标志
SJMP MSIOI;重发地址
***3:**R*挑;署命令标志
MOV SBUF,R3;发送命令
JNB RI,$;等待从机应答
CLR RI;清RI
MOV A,SBUF‘;取出应答信息
JNB ACC.7,MSIO4;核对命令是否出错
SJMP MSIOZ;命令接收错,重发
*ac《:q*E*3,#00H,*a05;若为从机发送命令,转出
JNB ACCO,MSIOZ;从机接收没准备好,重新联络
5*x:*OV***F,@*0;主机发送数据
JNB TI,$;等待一个字符发送结束
CLR TI;为接收下一字符作准备
INC RO;指向下一字符
DJNZ R4,STX;未发送完,继续
RET;发送完,返回
MSIOS:JNB ACC.1,MSIOZ;从机发送没准备好,重新联络
8*X:州Bm,$;等待主机接收完毕
CLR RI;为接收下一字符准备
MOV A,SBUF;取出接收到的字符
MOV@RI,A;送数据缓冲区
INC RI”;修改地址指针
DJNZ R4,SRX;未接收完,继续
RET;接收完,返回
2从机子程序
从机通信以中断方式进入,其主程序在收到主机发送来的地址后,即发出串行中断请求。中断请求被响应后,进入中断服务程序,进行多机通信。为此,有关从机串行口的初始化,波特
率的设置和串行中断初始化等内容,都应在主程序中予先进行。
假定以slave作为被寻址的从机地址,以民和PSW.1作为本从机发送和接收准备就绪的状态位。
从机通信中断服务程序流程如图7-14所示。
通信中断服务程序
在调用本中断服务程序之前,有关寄存器的内容如下:
RO——从机发送的数据块首地址
RI——从机接收的数据块首地址
RZ——发送数据块长度
R3——接收数据决长度
SSIO:CLR RI;
PUSH A;现场保护
PUSH PSW;
SETB RSI;选择1区工作寄存器
CLR RSO;
MOV A,SBUF;取出接收到的地址
XRL A,#SLA VE;核对是否本机地址
JZSSIOI;是本机地址,转
RETUR:POP PSW;不是呼叫本机,现场恢复
POP A;
RETI;中断返回
SSIOI:CLR SMZ;准备接收命令/数据
MOV SBUF,#SLA VE;发送本机地址,供主机核对
JNB RI,$;等待主机发送命令/数据
CLR RI;清RI
JNB RBS,SSIOZ;是命令/数据,继续
SETB SMZ;复位信号,返回
SJMP RETUR;
ssloz:uov x,ssur;取出命令。
CJNE A,#02H,NEXT;检查命令是否合法
NEXT:JC SSIO3 o合法命令,继续
CLR TI;准备发送
MOV SBUF,#80H;非法命令,发回ERR—1状态字
司MP RETUR;返回
SSIO3:JZ CMOD;是接收命令,转接收
CMDI;JB FO,SSIO4;发送准备就绪,继续
MOV SBUF,#00H;未准备好,发出TRDY—0状态字
SJMP RETUR;返回
SSIO4:MOV SBUF,#02H;发出TRDY—且状态字
CLR TI;
LOOPI:MOV SBUF,@RO;发送一个字符
JNB TI,$;等待发送完毕
CLR TI·;准备下次发送
INC RO;修改数据指针
DJNZ RZ,LOOPI;未发送完,继续
SETB SMZ;发送完,置SM。一1
SJMP RETUR;返回
CMOD:JB PSW.1,SSIOS;接收准备就绪,继续
MOV SBUF,#00H;未准备好,发送RRDY—0状态字
SJMP RETUR;返回
SSIOS;MOV SBUF,#01H;发送RRDY—1状态字
LOOPZ:JNB RI,$;接收一个字符
CLR RI;准备下次接收
MOV@RI,SBUF,存接收数据
INC RI;修改数据指针
DJNZ R3,LOOPZ;未完,继续
四MP RETURN;返回
思考题与练习题
I.假定异步串行通信的字符格式为一个起始位、八个数据位、二个停止住以及奇校验,请画出传送字符“T”的帧格式。
2串行通信有那几种数据通路形式,试举例说明。
3.串行通信的总线标准是什么?有那些内容?。
4.简述串行通信接口芯片UART的主要功能?
5 MCS-sl单片机的串行口共有那几种工作方式?各有什么特点和功能?
6MCS-51单片机四种工作方式的波特率应如何确定?
7.简述单片机多机通信的原理。
8以8031串行口按工作方式1进行串行数据通信。假定波特率为1200hP8,以中断方式传送数据,请编写企双工通信程序。
9.以8031串行口按工作方式3进行串行数据通信。假定波特率为1200bps,第9数据位作奇偶校验位,以中断方式传送数据,请编写通信程序。
第七章习题参考答案 7-1采用图P7-1(a)、(b)所示调制信号进行角度调制时,试分别画出调频波和调相波的瞬时频率与瞬时相位变化波形图及已调波的波形图。 图P7-1 解:(a)
(b) 图P7-1J
7-2有一调角波数学表示式)10cos 03.010sin(12=48t t -v V ,试问这是调频波求 中心角频率,调制角频率以及最大角频偏?[参考答案: rad/s 300=Δm ω] 解:一个角度调制波既可以是调频波又可以是调相波,关键是看已调波中瞬时相位)(Δt φ的表达式与调制信号的关系,与调制信号成正比为调相波,与调制信号的积分成正比为调频波。 由调角波的表达式)10cos 03.010sin(12=48t t -v 得知t t φ410cos 03.0=)(Δ-, 若调制信号t ωV sin =m Ωv ,则)10cos 03.010sin(12=48t t -v 为调频波。 中心频率为rad/s 108C =ω,调制角频率为rad/s 10=4Ω,最大角频偏 300rad/s =rad/s 10×0.03==Δ4f m ΩM ω 7-3 一个调频波的载波频率是10MHz ~7,频偏为00kHz 2,调制频率为0kHz 1,求调制指数。若调制频率降为0Hz 2,求调制指数。[参考答案:20=f1M , 4f210=M ] 解:由于调制频率为0kHz 1,属于单音调制。 ΩV k M m Ωf f = ,又3m Ωf m 10×200×π2==ΔV k ω, 所以 20=10 ×10×π210×200×π2=33 f1M 当调制频率为20Hz 时,43 3 f2 10=20 ×π210×200×π2=M 7-4 一个调相波的载波频率是10MHz ~7,调制指数是20。调制频率同上题,求角频偏。[参考答案:rad/s 10×26.1=Δ6m1ω,rad/s 10×5.2=Δ3m2ω] 解:同样属于单音调制。20==m Ωp p V k M p m Ωp m Ωp p π2=π2==ΔFM V k F V Ωk ω 所以当调制信号的频率为10kHz 时, rad/s 10×26.1=20rad/s ×10×10×π2=Δ63m1ω
第7章 数字信号的基带传输系统 7.1 本章重点 7.1.1 引言 本章主要内容包括数字基带传输系统结构,数字基带信号的定义,基带传输的常用码型及其频谱特性,码间串扰的定义与无码间串扰的基带传输特性,部分响应系统,无码间串扰基带系统的抗噪声性能,眼图的概念,以及时域均衡的基本原理。 7.1.2 数字基带传输的常用码型 设计适用于传输的数字基带信号码型时应考虑以下原则: (1)对信源具有透明性(编码方案要适合于所有的二进制信号,即与信源的统计特性无关); (2)接收端必须能正确解码; (3)没有显著的直流分量,低、高频分量也要小; (4)易于从基带信号中提取位同步(位定时)信息; (5)有在线误码检测功能; (6)编解码设备简单可靠。 目前常用码型包括:单极性码、单极性归零码、双极性码、双极性归零码、差分码、数字双相码、CMI 码、密勒码、AMI 码、HDB3码、二元分组码(mBnB 码)、PST 码和4B3T 码等。 7.1.3 数字基带信号的频谱分析 1.数字基带信号的频谱特性 用g 1(t)、g 2(t)分别代表二进制序列码流中的“1”、“0”码,出现概率分别设为P 和P -1,并且假设二者的出现彼此统计独立,码元宽度为T s ,那么任何一个数字基带脉冲序列的一般表示式可写为 ∑∞ -∞ == n n t s t s ) ()( (7.1) 其中)(t s n 代表任一码元波形 ???---=出现以概率出现 以概率P nT t g P nT t g t s s s n 1)()()(2 1 (7.2) 2.随机脉冲序列的分解 随机脉冲序列分解成稳态分量)(t v 和交变分量)(t u ,即 ()()()s t u t v t =+ (7.3) (1)稳态项()v t
第七章 1、什么是串行异步通信,它有哪些作用? 答:在异步串行通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式参考书。通信采用帧格式,无需同步字符。存在空闲位也是异步通信的特征之一。 2、89C51单片机的串行口由哪些功能部件组成?各有什么作用? 答:89C51单片机的串行接口由发送缓冲期SBUF,接收缓冲期SBUF、输入移位寄存器、串行接口控制器SCON、定时器T1构成的波特率发生器等部件组成。 由发送缓冲期SBUF发送数据,接收缓冲期SBUF接收数据。串行接口通信的工作方式选择、接收和发送控制及状态等均由串行接口控制寄存器SCON控制和指示。定时器T1产生串行通信所需的波特率。 3、简述串行口接收和发送数据的过程。 答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读和写的。当向SBUF发“写”命令时(执行“MOV SBUF,A”),即向缓冲期SBUF装载并开始TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。 在满足串行接口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF 命令时(执行“MOV A, SBUF”),便由接收缓冲期SBUF取出信息通过89C51内部总线送CPU。 4、89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定? 答:89C51串行口有4种工作方式: 方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。 有2种帧格式:10位,11位 方式0:方式0的波特率≌fosc/12(波特率固定为振荡频率1/12) 方式2:方式2波特率≌2SMOD/64×fosc 方式1和方式3:方式1和方式3波特率≌2SMOD/32×(T1溢出速率) 如果T1采用模式2则: 5、若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少?答:已知每分钟传送3600个字符,方式3每个字符11位,则: 波特率=(11b/字符)×(3600字符/60s)=660b/s 6、89C51中SCON的SM2,TB8,RB8有何作用? 答:89c51SCON的SM2是多机通信控制位,主要用于方式2和方式3.若置SM2=1,则允许多机通信。 TB8是发送数据的第9位,在方式2或方式3中,根据发送数据的需要由软件置位或复位。它在许多通信协议中可用作奇偶校验位;在多机通信中作为发送地址帧或数据帧的标志位。RB8是接收数据的第9位,在方式2或方式3中接收到的第9位数据放在RB8位。它或是约定的奇偶校验位,或是约定的地址/数据标示位。