资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章 单片机的串行通信,北华航天工业学院 电子工程系,Prof.胡辉 Tel:2083013,本章学习目标,单片机串行通信,I/O,接口的结构,串行通信控制寄存器,单片机串行通信的工作方式,以及串行通信应用。,一、串行通信方式,-信息传输在一个方向上只占用一跟通信线,它既作为数据线,又作为联络线。,信息各式上分,异步通信方式按字符传输,同步通信方式按数据块传输,0,1,停止位,起始位,低位,高位,7位数据位,奇偶校验,停止位,第N个字符,第N-1个字符,2同步通信SYNC(Synchronous Data Communication),在同步通信中,数据或字符开始处是用一同步字符来指示(一般约定为12个字符),以实现发送端和接收端同步,一旦检测到约定同步字符,下面就连续按顺序接收数据。,7.1.2 串行通信的波特率,波特率(band rate)是异步通信中数据传送速率的单位,其意义是每秒传送多少位二进制数。,例如:数据传送的速率为120个字符每秒,每个字符由1个起始位、8个数据位和1个停止位组成,则其传送波特率为:,10b120s1200bs1200波特,7.1.3 串行通信的方式,按照数据传送方向,串行通信可分为半双,工(,half duplex,)制式和全双工(,full duplex,)制式。,1,半双工制式,在半双工制式下,甲机和乙机之间只有一个通信回路,接收和发送不能同时进行,只能分时发送和接收。,2,全双工制式,在全双工制式下,甲、乙两机之间数据的发送和接收可以同时进行,称为全双工传送。,不管哪种形式的串行通信,在两机之间均应有共地线。,7.2.2,单片机串行口的控制,1,串行口控制寄存器,SCON,发送/接收1帧数据为11位,其中1位起始位、8位数据位、1位控制/校验位和1位停止位。,MOVPCON,00H ;,DJNZR7,TRS;,3 单片机串行口的应用,在方式0下,串行口通信的波特率是固定的,其值为fosc/12(fosc为主机频率)。,START:MOVR7,20,(7)本次通信结束后,主、从机重置SM21,主机可再对其他从机寻址。,控制/校验位为第9位数据。,MOVTH1,0E8H,DL1:JNBT1,DL1;,WAIT:JNBTI,$;,并行通信方式空间上区分各位数据,SJMP SR1,在方式0下,串行口作同步移位寄存器用,以8位数据为一帧,先发送或接收最低位,每个机器周期发送或接收一位,故其波特率是固定的,为fosc12。,采用定时器1方式2作波特率发生器,波特率为1200波特,fosc110592MHz,预置值TH10E8H。,(1)SM0、SM1:串行口工作方式选择位。,(2)SM2:在方式2和方式3中主要用于多机通信控制。,(3)REN:串行接收允许位。由软件置位或清除。软件置1时,串行口允许接收,清零后禁止接收。,(4)TB8:发送数据的第9位。双机通信时它可作奇偶校验位;在多机通信中可作为区别地址帧或数据帧的标识位。,(5)RB8:在方式2和方式3中是接收的第9位数据。,(6)TI:发送中断标志位。,(7)RI:接收中断标志位。,2,专用寄存器,PCON,PCON,的各位的定义和功能如下:,当,SMOD,l,时,方式,1,、,2,、,3,的波特率加倍,否则不加倍。,7.2.3 单片机串行口的工作方式,1,方式,0,串行接口工作方式,0,为同步移位寄存器方式,多用于,I/O,口的扩展,其波特率是固定的,为,f,osc,/12,。,TXD,引脚输出同步移位脉冲,,RXD,引脚串行输入,/,输出。,2,方式,1,在方式,l,时,串行口被设置为波特率可变的,8,位异步通信接口。发送,/,接收,1,帧数据为,10,位,其中,1,位起始位、,8,位数据位(先低位后高位)和,1,位停止位。,3,方式,2,串行口工作为方式,2,时,被定义为,9,位异步通信接口。发送,/,接收,1,帧数据为,11,位,其中,1,位起始位、,8,位数据位、,1,位控制,/,校验位和,1,位停止位。控制,/,校验位为第,9,位数据。,4,方式,3,方式,3,为波特率可变的,11,位异步通信方式,除了波特率有所区别之外,其余同方式,2,。,5,串行通信的波特率,(,1,)方式,0,的波特率,在方式,0,下,串行口通信的波特率是固定的,其值为,f,osc,/12,(,f,osc,为主机频率)。,(,2,)方式,2,的波特率,在方式,2,下,通信波特率为,f,osc,/32,或,f,osc,/64,,根据特殊功能寄存器,PCON,中,SMOD,位的状态来决定串行口在那个波特率下工作。选择公式为:,(,3,)方式,1,或方式,3,的波特率,在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率是可变的。波特率的公式为:,式中:,K,为定时器,T1,的位数。,7.3,单片机串行口的应用,7.3.1,串行口扩展显示器,【例,7,-,1,】用,8,位串入并出移位寄存器,74HC164,扩展显示器。,功能:把数据从显示缓冲区送到数码管。入口;将要显示的数放在以DIS0为首的,8,个单元中。,出口:把预置的数输出以更新原有的显示。,MOVR2,,,08H,;显示,8,个数码管,MOVR0,,,DIS,7,;显示缓冲区未地址送入,R0,DL0,:,MOVA,,,R0,;取要显示数作查表偏移量,MOVDPTR,,,TAB,;指向字形表首,MOVCA,,,A,DPTR,;查表得字形码,MOVSBUF,,,A,;发送显示,DL1:JNBT1,DL1;等待发送完一帧,CLRT1,;清中断标志,准备继续发送,DECR0,;更新显示单元,DJNZR2,,,DL0,;重复显示所有数码管,TAB,:,DB 0C0H,,,0F9H,,,0A4H,,,0B0H,,,99H,;,0,,,1,,,2,,,3,,,4,,,DB 92H,,,82H,,,0F8H,,,80H,,,90H,;,5,,,6,,,7,,,8,,,9,,,DB 88H,,,83H,,,0C6H,,,0A1H,,,86H,;,A,,,B,,,C,,,D,,,E,,,DB 8EH,0BFH,8CH,0FFH;F,P,暗,7.3.2 串行口扩展的键盘,在方式,0,下,串行口作同步移位寄存器用,以,8,位数据为一帧,先发送或接收最低位,每个机器周期发送或接收一位,故其波特率是固定的,为,f,osc,12,。串行数据由,RXD,()端输入或输出。,7.3.3,双机通信,编程使乙机从甲机接收,16,个字节数据块,并存入片外,3000H,300FH,单元。接收过程中要求判奇偶校验标志,RB8,。若出错则置,F0,标志为,1,,若正确则置,F0,标志为,0,,然后返回。,【例,7,-,3,】编程把甲机片内,RAM50H,5FH,单元中的数据块从串行口输出。定义在方式,3,下发送,,TB8,作奇偶校验位。采用定时器,1,方式,2,作波特率发生器,波特率为,1200,波特,,f,osc,11,0592MHz,,,预置值,TH1,0E8H,。,发送子程序如下:,MOVTMOD,,,#20H,;设置定时器,1,为方式,2,MOVTL1,,,0E8H,;设预置值,MOVTH1,,,0E8H,SETBTRI,;启动定时器,1,MOVSCON,,,0C0H,;设置串行口为方式,3,MOVPCON,,,00H,;,SMOD,0,MOVR0,,,#50H,;设数据块指针,MOVR7,,,10H,;设数据长度,10H,TRS,:,MOVA,,,R0,;取数据送至,A,MOVC,,,P,MOVTB8,,,C,;奇偶位,P,送至,TB8,MOVSBUF,,,A,启动发送,WAIT,:,JNBTI,,,$,;判,1,帧是否发送完,CLRTI,INCR0;更新数据单元,DJNZR7,TRS;循环发送至结束,接收子程序编程如下:,MOVTMOD,,,20H,;设置定时器,1,为方式,2,MOVTL1,,,0E8H,;设预置值,MOVTH1,,,0E8H,SETBTR1,;启动定时器,1,MOVSCON,,,0C0H,;设置串行口为方式,3,MOVPCON3,,,00H,;,SMOD,0,MOVDPTR,,,3000H,;设置数据块指针,MOVR7,,,10H,;设数据块长度,SETBREN,;允许接收,WAIT,:,JNBRI,,,$,;判,1,帧是否接收完,CLRRI,MOVA,,,SBUF,;读入,1,帧数据,,,PZ,;奇偶位,P,为,0,则跳转,JNBRB8,,,ERR,;,P,l,,,RB8,0,则出错,SJMPYES,;二者全为,1,则正确,PZ,:,JBRB8,,,ERR,;,P,0,,,RB8,l,则出错,YES,:,MOVX,DPTR,,,A,;正确,存放数据,INCDPTR,;修改地址指针,DJNZR7,,,WAIT,;判断数据块接收完否,CLRPSW.5,;接收正确且接收完清,F0,标志,RET,;返回,ERR,:,SETBPSW.5,;出错则置,F0,标志为“,l,”,RET,;返回,7.3.4,多机通信,多机通信的实现,主要靠主、从机之间正确地设置与判断多机通信控制位,SM2,和发送或接收的第,9,数据位(,D,8,)。以下简述如何实现多机通信。,多机之间的通信过程可归纳如下:,(,1,)主、从机均初始化为方式,2,或方式,3,,置,SM2,1,,允许中断。,(,2,)主机置,TB8,1,,发送要寻址的从机地址。,(,3,)所有从机均接收主机发送的地址,并进行地址比较。,(,4,)被寻址的从机确认地址后,置本机,SM2,0,,向主机返回地址,供主机核对。,(,5,)核对无误后,主机向被寻址的从机发送命令,通知从机接收或发送数据。,(,6,)通信只能在主、从机之间进行,两个从机之间的通信需通过主机作中介。,(,7,)本次通信结束后,主、从机重置,SM2,1,,主机可再对其他从机寻址。,例:主机向02号从机发送50H,5FH,中的数据;02号从机将接收到的数据放到内RAM30H,3FH单元中。,主机程序:,ORG 0030H,MAIN:MOV SCON,,,98H,M1:MOV SBUF,,,02H,L1:JNB TI,$,CLR TI,JNB RI,$,MOV A,SUBF,XRL A,#02H,JZ RHT,AJMP M1,RHT:CLR TB8,MOV R0,,,50H,M1:MOV R7,,1,0H,L3:MOV A,,R,0,MOV SBUF,,A,JNB TI,$,CLR TI,INC R0,DJNZ R7,L3,AJMP MAIN,END,从机程序:,ORG 0030H,MAIN:MOV R0,,,30H,MOV R6,,1,0H,SI:MOV SCON,,,0B0H,SR1:JNB RI,$,CLR RI,SR2:MOV A,SUBF,XRL A,#02H,JNZ SR1,CLR SM2,MOV SBUF,,#02H,JNB TI,$,CLR TI,SR3:JNB RI,$,CLR RI,JNB TB8,RHT,SETB SM2,SJMP SR1,RHT:MOV A,,SBUF,MOV,R,0,,,A,INC R0,DJNZ R6,SR3,AJMP SI,END,END,
展开阅读全文