《单片机c8串行通信.ppt》由会员分享,可在线阅读,更多相关《单片机c8串行通信.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机单片机c8串行通信串行通信1 1实训目的实训目的(1)复习掌握定时器的功能和编程使用。(2)理解串行通信与并行通信的两种方式。(3)掌握串行通信的重要指标:字符帧和波特率。(4)初步了解MCS-51单片机串行口的使用方法。实训实训8 8单片机之间的双机通信单片机之间的双机通信 2 2实训引入实训引入 单片机间经常需要互相传递信息通信.3 3实训程序实训程序甲机发送程序参考如下:甲机发送程序参考如下:MOV TMOD,#20H MOV TL1,#0F4H MOV TH1,#0F4H SETB TR1 MOV SCON,#40H MOV R0,#20H MOV R7,#08H START:M
2、OV A,R0MOV SBUF,A WAIT:JBC TI,CONT AJMP WAIT CONT:INC R0 DJNZ R7,START SJMP$乙机接收及显示程序参考如下:乙机接收及显示程序参考如下:MOV TMOD,#20H MOV TL1,#0F4H MOV TH1,#0F4H SETB TR1 MOV SCON,#40H MOV R0,#20H MOV R7,#08H SETB RENWAIT:JBC RI,READ AJMP WAIT READ:MOV A,SBUF MOV R0,A INC R0 DJNZ R7,WAITDISP:LCALL DISPLAY SJMP DISP
3、4.4.实训分析与总结实训分析与总结 分析程序可以看出,通信双方都有对单片机定时器的编程(注意发送、接收程序的前4条指令),而且双方对定时器的编程完全相同。这说明,MCS-51单片机在进行串行通信时,是与定时器的工作有关的。定时器用来设定串行通信数据的传输速度。在串行通信中,传输速度是用波特率来表征的,有关波特率与定时器的关系以及编程在8.3.3节介绍。什么是串行通信?什么是串行通信?vv串行通信和并行通信串行通信和并行通信 计算机1 GND 计算机2 GND并行通信 计算机1 GND 计算机2 GND发送接收串行通信并行通信:数据的各位并行通信:数据的各位并行通信:数据的各位并行通信:数据的
4、各位同时同时同时同时传送;传送;传送;传送;串行通信:数据串行通信:数据串行通信:数据串行通信:数据一位一位一位一位一位一位一位一位顺序传送。顺序传送。顺序传送。顺序传送。串行通信的分类:串行通信的分类:异步异步异步异步(Asynchronous Communication)(Asynchronous Communication)(Asynchronous Communication)(Asynchronous Communication)同步同步同步同步(Synchronous Communication)(Synchronous Communication)(Synchronous Com
5、munication)(Synchronous Communication)串行通信制式:串行通信制式:单工单工单工单工(a)a)a)a)、半双工半双工半双工半双工(b)b)b)b)和和和和全双工全双工全双工全双工(c)c)c)c)(simplex half duplex full (simplex half duplex full (simplex half duplex full (simplex half duplex full duplex)duplex)duplex)duplex)发送器A站接收器B站单工通信(a)发收A站发收B站发收A站发收B站(b)(c)MCS-51的串行接口的串
6、行接口vv概述概述有一个可编程全双工串行通信接口(有一个可编程全双工串行通信接口(有一个可编程全双工串行通信接口(有一个可编程全双工串行通信接口(UART)UART)UART)UART)(Universal Asychronous Receiver/Transmitter(Universal Asychronous Receiver/Transmitter(Universal Asychronous Receiver/Transmitter(Universal Asychronous Receiver/Transmitter )管脚:管脚:管脚:管脚:TXDTXDTXDTXD(P3.1P3.1
7、P3.1P3.1)、)、)、)、RXDRXDRXDRXD(P3.0P3.0P3.0P3.0)可同时发送、接收数据可同时发送、接收数据可同时发送、接收数据可同时发送、接收数据(Transmit/Receive)Transmit/Receive)有四种工作方式,帧格式有有四种工作方式,帧格式有有四种工作方式,帧格式有有四种工作方式,帧格式有8 8 8 8、10101010、11111111位。位。位。位。波特率波特率波特率波特率(Baud rate)(Baud rate)(Baud rate)(Baud rate)可设置可设置可设置可设置 波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/
8、s,即位/秒。MCS-51串行接口的结构串行接口的结构MCS-51串行接口寄存器SBUFSBUF串行口数据缓冲器串行口数据缓冲器串行口数据缓冲器串行口数据缓冲器vv共两个:一个发送寄存器共两个:一个发送寄存器共两个:一个发送寄存器共两个:一个发送寄存器SBUFSBUF,一个接收,一个接收,一个接收,一个接收SBUFSBUF,二者二者二者二者共用一个地址共用一个地址共用一个地址共用一个地址9999H H。SCONSCON串行口控制寄存器串行口控制寄存器串行口控制寄存器串行口控制寄存器PCONPCON电源及波特率选择寄存器电源及波特率选择寄存器电源及波特率选择寄存器电源及波特率选择寄存器控制寄存器
9、控制寄存器SCONSM0SM1SM2RENTB8RB8TIRI工作方式选择多机通信控制位允许串行接收位接收数据的第9位发送数据的第9位接收中断标志发送中断标志9FH9EH9DH9CH9BH9AH99H98HSM0 SM1工作方式工作方式功能功能波特率波特率0 0方式方式08位同步移位寄存器位同步移位寄存器fosc/120 1方式方式110位位UART可变可变1 0方式方式211位位UARTfosc/64或或fosc/321 1方式方式311位位UART可变可变串行方式的定义例:设串行口工作在方式例:设串行口工作在方式例:设串行口工作在方式例:设串行口工作在方式1 1 1 1,允许接收,则指令为
10、:,允许接收,则指令为:,允许接收,则指令为:,允许接收,则指令为:MOV SCON,#01010000BMOV SCON,#01010000BMOV SCON,#01010000BMOV SCON,#01010000B串行通信只用该位,为串行通信只用该位,为串行通信只用该位,为串行通信只用该位,为1 1时,波特率时,波特率时,波特率时,波特率22;为;为;为;为0 0时不变。时不变。时不变。时不变。电源及波特率选择寄存器电源及波特率选择寄存器PCONPCONSMOD GF1 GF0PDIDL87H串行口四种工作方式应用比较串行口四种工作方式应用比较vv方式的选择由方式的选择由方式的选择由方式
11、的选择由SM1SM1、SM0SM0实现。实现。实现。实现。工作方式功能说明波特率方式08位同步移位寄存器常用于扩展I/O口fosc/12方式110位UART8位数据、起始位、结束位可变(取决于定时器1溢出率)方式211位UART8位数据、起始位0、结束位1和奇偶校验位fosc/64或fosc/32方式311位UART数据、起始、校验、结束位可变(取决于定时器1溢出率)波特率的设定可参见表8.2,实际无需计算。方式方式0 0 在方式在方式在方式在方式0 0 0 0下,串行口作同步移位寄存器用,其波特率固下,串行口作同步移位寄存器用,其波特率固下,串行口作同步移位寄存器用,其波特率固下,串行口作同
12、步移位寄存器用,其波特率固定为定为定为定为f f f foscoscoscosc/12/12/12/12。串行数据从串行数据从串行数据从串行数据从RXD(P3.0)RXD(P3.0)RXD(P3.0)RXD(P3.0)端输入或输出,同步移端输入或输出,同步移端输入或输出,同步移端输入或输出,同步移位脉冲由位脉冲由位脉冲由位脉冲由TXD(P3.1)TXD(P3.1)TXD(P3.1)TXD(P3.1)送出。这种方式常用于扩展送出。这种方式常用于扩展送出。这种方式常用于扩展送出。这种方式常用于扩展I/OI/OI/OI/O口。口。口。口。方式0用于扩展I/O口输出方式0用于扩展I/O口输入方式110
13、位的帧格式 串行口为波特率可调的10位通用异步接口UART。每发送或接收的一帧信息中,包括1位起始位0,8位数据位和1位停止位1。方式方式2 2 串行口为串行口为串行口为串行口为11111111位位位位UARTUARTUARTUART,传送波特率与传送波特率与传送波特率与传送波特率与SMODSMODSMODSMOD有关。发送或接有关。发送或接有关。发送或接有关。发送或接收的一帧数据中包括收的一帧数据中包括收的一帧数据中包括收的一帧数据中包括1 1 1 1位起始位位起始位位起始位位起始位0 0 0 0,8 8 8 8位数据位,位数据位,位数据位,位数据位,1 1 1 1位可编程位位可编程位位可编
14、程位位可编程位(用于奇偶校验用于奇偶校验用于奇偶校验用于奇偶校验)和和和和1 1 1 1位停止位位停止位位停止位位停止位1 1 1 1。11位的帧格式方式方式3 3 方式方式方式方式3 3 3 3为波特率可变的为波特率可变的为波特率可变的为波特率可变的11111111位位位位UARTUARTUARTUART通信方式,除了波通信方式,除了波通信方式,除了波通信方式,除了波特率以外,方式特率以外,方式特率以外,方式特率以外,方式3 3 3 3和方式和方式和方式和方式2 2 2 2完全相同。完全相同。完全相同。完全相同。MCS-51串行口的波特率串行口的波特率1.1.1.1.方式方式方式方式0 0
15、0 0和方式和方式和方式和方式2 2 2 2的波特率是固定的的波特率是固定的的波特率是固定的的波特率是固定的 在方式2中,波特率取决于PCON中的SMOD值:当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32.即波特率=。oscSMODf642 在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变2.2.2.2.方式方式方式方式1 1 1 1和方式和方式和方式和方式3 3 3 3的波特率可变,由定时器的波特率可变,由定时器的波特率可变,由定时器的波特率可变,由定时器1 1 1 1的溢出率决定的溢出率决定的溢出率决定的溢出率决定波特率/(b/s)fo
16、sc/MHzSMOD定时器1C/模式初始值方式0:1 M方式2:375 k方式1、3:62.5 k19.2 k9.6 k4.8 k2.4 k1.2 k137.5 k11011012121211.05911.05911.05911.05911.05911.9866121110000000000000000222222221FFHFDHFDHFAHF4HE8H1DH72HFEEBHT波特率=单片机之间的通信双机异步通信接口电路RS-422ARS-422A双机异步通信接口电路双机异步通信接口电路双机异步通信接口电路双机异步通信接口电路双机通信软件编程双机通信软件编程查询方式查询方式 1)甲机发送甲机
17、发送 编程将甲机片外1000H101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375 kb/s,晶振为12 MHz,SMOD=1。参考发送子程序如下:参考发送子程序如下:参考发送子程序如下:参考发送子程序如下:MOV MOV SCONSCON,#80H#80H ;设置串行口为方式设置串行口为方式设置串行口为方式设置串行口为方式2 2 MOV MOV PCONPCON,#80H#80H ;SMOD=1SMOD=1 MOV MOV DPTRDPTR,#1000H#1000H ;设数据块指针设数据块指针设数据块指针设数据块指针 MOV MOV R7R7,#20H#2
18、0H ;设数据块长度设数据块长度设数据块长度设数据块长度 START START:MOVX A MOVX A,DPTR DPTR ;取数据给取数据给取数据给取数据给A A MOV MOV C,P C,P MOV MOV TB8,C TB8,C ;奇偶位奇偶位奇偶位奇偶位P P送给送给送给送给TB8TB8 MOV MOV SBUF,A SBUF,A ;数据送数据送数据送数据送SBUFSBUF,启动发送启动发送启动发送启动发送 WAIT:JBC TI,CONT WAIT:JBC TI,CONT ;判断一帧是否发送完。若送完,清判断一帧是否发送完。若送完,清判断一帧是否发送完。若送完,清判断一帧是否
19、发送完。若送完,清TITI,取下一个数据取下一个数据取下一个数据取下一个数据 AJMP WAIT AJMP WAIT ;未完等待未完等待未完等待未完等待 CONTCONT:INC DPTR INC DPTR ;更新数据单元更新数据单元更新数据单元更新数据单元 DJNZ R7,START DJNZ R7,START ;循环发送至结束循环发送至结束循环发送至结束循环发送至结束 RET RET 2)乙机接收乙机接收 编程使乙机接收甲机发送过来的数据块,并存入片内50H6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。在进行双机通信时,两机应采用相同的工作方式和
20、波特率。参考接收子程序如下:参考接收子程序如下:参考接收子程序如下:参考接收子程序如下:MOV SCONMOV SCON,#80H#80H ;设置串行口为方式设置串行口为方式2 2 MOV PCONMOV PCON,#80H#80H ;SMOD=1SMOD=1MOV R0MOV R0,#50H#50H ;设置数据块指针设置数据块指针MOV R7MOV R7,#20H#20H ;设置数据块长度设置数据块长度SETB REN SETB REN ;启动接收启动接收WAITWAIT:JBC RIJBC RI,READ READ ;判断是否接收完一帧。若完,清判断是否接收完一帧。若完,清RIRI,读入数
21、据读入数据AJMP WAIT AJMP WAIT ;未完等待未完等待READREAD:MOV AMOV A,SBUF SBUF ;读入一帧数据读入一帧数据a aJNB PSW.0,PZ JNB PSW.0,PZ ;奇偶位为奇偶位为0 0则转则转JNB RB8,ERR JNB RB8,ERR ;P=1P=1,RB8=0RB8=0,则出错则出错 SJMP RIGHT SJMP RIGHT ;二者全为二者全为1 1,则正确,则正确 PZ:JB RB8,ERR PZ:JB RB8,ERR ;P=0P=0,RB8=1RB8=1,则出错则出错RIGHT:MOV R0,A RIGHT:MOV R0,A ;正确,存放数据正确,存放数据INC R0 INC R0 ;更新地址指针更新地址指针DJNZ R7,WAIT DJNZ R7,WAIT ;判断数据块是否接收完判断数据块是否接收完CLR PSW.5 CLR PSW.5 ;接收正确,且接收完清接收正确,且接收完清F0F0标志标志RET RET ;返回返回 ERR:SETB PSW.5 ERR:SETB PSW.5 ;出错,置出错,置F0F0标志为标志为1 1RET RET ;返回返回
限制150内