《C51系列单片机有一个全双工的串行口.ppt》由会员分享,可在线阅读,更多相关《C51系列单片机有一个全双工的串行口.ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 80C5180C51系系列列单单片片机机有有一一个个全全双双工工的的串串行行口口,这这个个口口既既可可以以用用于于网网络络通通信信,也也可可以以实实现现串串行行异异步步通通信信,还还可可以以作作为为同同步步移移位位寄寄存存器使用。器使用。6-2 80C516-2 80C51串行口串行口一、串行口特殊功能寄存器一、串行口特殊功能寄存器1 1、串行数据缓冲器串行数据缓冲器SBUFSBUF在在逻辑上逻辑上只有一个只有一个,既表示发送寄存器,又表示接收寄存器,具有同一,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址个单元地址99H99H,用,用同一寄存器名同一寄存器名SBUFSBUF。在在物
2、理上有两个物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。器。发发送送时时,只只需需将将发发送送数数据据输输入入SBUFSBUF,CPUCPU将将自自动动启启动动和和完完成成串串行行数数据据的的发发送;送;接接收收时时,CPUCPU将将自自动动把把接接收收到到的的数数据据存存入入SBUFSBUF,用用户户只只需需从从SBUFSBUF中中读读出出接接收数据收数据。2 2、串行控制寄存器串行控制寄存器SCONSCON3 3、电源控制寄存器电源控制寄存器PCONPCONSCONSCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0
3、D0位名称位名称SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI位地址位地址9FH9FH9EH9EH9DH9DH9CH9CH9BH9BH9AH9AH99H99H98H98H功能功能工作方式工作方式选择选择多机通信多机通信控制控制接收接收 允许允许发送发送 第第9 9位位接收接收 第第9 9位位发送发送 中断中断接收接收 中断中断1)1)SM0 SM1SM0 SM1 串行口工作方式选择位。串行口工作方式选择位。2)2)SM2SM2 多机通信控制位。多机通信控制位。3)3)RENREN 允许接收控制位。允许接收控制位。REN=1REN=1,允许接收。,允许接
4、收。4)4)TB8TB8 方式方式2 2和方式和方式3 3中要发送的第中要发送的第9 9位数据。位数据。5)5)RB8RB8 方式方式2 2和方式和方式3 3中要接收的第中要接收的第9 9位数据。位数据。6)6)TITI 发送中断标志。发送中断标志。7)7)RIRI 接收中断标志。接收中断标志。PCONPCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称SMODSMODGF1GF1GF0GF0PDPDIDLIDLSMOD=1SMOD=1,串行口波特率加倍。串行口波特率加倍。PCONPCON寄存器不能进行位寻址。寄存器不能进行位寻址。二、二、串行工作方式串行工作方
5、式 80C5180C51串行通信共有串行通信共有4 4种工作方式,由串行控制寄存器种工作方式,由串行控制寄存器SCONSCON中中SM0 SM1SM0 SM1决定。决定。1 1、串行工作方式、串行工作方式0 0(同步移位寄存器工作方式)(同步移位寄存器工作方式)以以RXDRXD(P3.0P3.0)端作为数据移位的输入)端作为数据移位的输入/输出端,输出端,以以TXDTXD(P3.1P3.1)端输出移位脉冲。)端输出移位脉冲。移位数据的发送和接收以移位数据的发送和接收以8 8位为一帧,不设起始位和停止位,无论输入位为一帧,不设起始位和停止位,无论输入/输出,输出,均低位在前高位在后。均低位在前高
6、位在后。其帧格式为:其帧格式为:D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7 方式方式0 0可将串行输入输出数据转换成并行输入输出数据。可将串行输入输出数据转换成并行输入输出数据。数据发送数据发送 在移位时钟脉冲(在移位时钟脉冲(TXDTXD)的控制下,数据从串行口)的控制下,数据从串行口RXDRXD端逐位移入端逐位移入74HC164 SA74HC164 SA、SBSB端。当端。当8 8位数据全部移出后,位数据全部移出后,SCONSCON寄存器的寄存器的TITI位被自位被自动置动置1 1。其后。其后74HC16474HC164的内容即可并行输出。的内容即可并行输出。74HC
7、164 CLR74HC164 CLR为清为清0 0端,输端,输出时出时CLRCLR必须为必须为1 1,否则,否则74HC164 Q074HC164 Q0Q7Q7输出为输出为0 0。串串行行口口作作为为并并行行输输出出口口使使用用时时,要要有有“串串入入并并出出”移移位位寄寄存存器配合。器配合。(2)(2)数据接收数据接收 串串行行口口作作为为并并行行输输入入口口使使用用时时,要要有有“并并入入串串出出”的移位寄存器配合。的移位寄存器配合。74HC165 74HC165 S/LS/L端端为为移移位位/置置入入端端,当当S/L=0S/L=0时时,从从Q0Q0Q7Q7并并行行置置入入数数据据,当当S
8、/L=1S/L=1时时,允允许许从从Q QH H端端移移出出数数据据。在在80C5180C51串串行行控控制制寄寄存存器器SCONSCON中中的的REN=1REN=1时时,TXDTXD端端发发出出移移位位时时钟钟脉脉冲冲,从从RXDRXD端端串串行行输输入入8 8位位数数据据。当当接接收收到到第第8 8位位数数据据D7D7后,置位中断标志后,置位中断标志RIRI,表示一帧数据接收完成。,表示一帧数据接收完成。波特率波特率方式方式0 0 波特率固定,为单片机晶振频率的十二分之一。波特率固定,为单片机晶振频率的十二分之一。应用举例应用举例【例【例6-16-1】电路如图所示,试编制程序按下列顺序要求
9、每隔】电路如图所示,试编制程序按下列顺序要求每隔0.50.5秒循环操作。秒循环操作。1)8个发光二极管全部点亮;个发光二极管全部点亮;2)从左向右依次暗灭,每次减少一个,直至全灭;从左向右依次暗灭,每次减少一个,直至全灭;3)从左向右依次点亮,从左向右依次点亮,每次亮一个;每次亮一个;4)从右向左依次点亮,从右向左依次点亮,每次亮一个;每次亮一个;5)从左向右依次点亮,从左向右依次点亮,每次增加一个,每次增加一个,直至全直至全部点亮;部点亮;6)返回从返回从2)不断循环)不断循环解:编程如下:解:编程如下:LIGHT:MOV SCON,#00H LIGHT:MOV SCON,#00H ;串行口
10、方式串行口方式0 0 CLR ES CLR ES ;禁止串行中断禁止串行中断 MOV DPTR,#TAB MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址置发光二极管亮暗控制字表首址LP1:MOV R7,#0 LP1:MOV R7,#0 ;置顺序编号置顺序编号0 0LP2:MOV A,R7 LP2:MOV A,R7 ;读顺序编号读顺序编号 MOVC A,A+DPTR MOVC A,A+DPTR ;读控制字读控制字 CLR P1.0 CLR P1.0 ;关闭并行输出关闭并行输出 MOV SBUF,A MOV SBUF,A ;启动串行发送启动串行发送 JNB TI,$JNB TI,$;等
11、待发送完毕等待发送完毕 CLR TI CLR TI ;清发送中断标志清发送中断标志 SETB P1.0 SETB P1.0 ;开启并行输出开启并行输出 LCALL DLY500ms LCALL DLY500ms ;调用延时调用延时0.50.5秒子程序秒子程序(参阅例参阅例4-13)4-13)INC R7 INC R7 ;指向下一控制字指向下一控制字 CJNE R7,#30,LP2 CJNE R7,#30,LP2;判循环操作完否判循环操作完否?未完继续未完继续 SJMP LP1 SJMP LP1 ;顺序编号顺序编号0 02929依次操作完毕依次操作完毕,从从0 0开始重新循环开始重新循环TAB:
12、TAB:DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00HDB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;从左向右依次暗灭从左向右依次暗灭,每次减少一个每次减少一个,直至全灭直至全灭;DB 80H,40H,20H,10H,08H,04H,02H,01H DB 80H,40H,20H,10H,08H,04H,02H,01H;从左向右依次点亮从左向右依次点亮,每次亮一个每次亮一个 DB 02H,04H,08H,10H,20H,40H,80H DB 02H,04H,08H,10H,20H,40H,80H;从右向左依次点亮从右向左依次点亮,每
13、次亮一个每次亮一个 DB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEHDB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;从左向右依次点亮从左向右依次点亮,每次增加一个每次增加一个,直至全部点亮直至全部点亮;【例】电路如图所示,试【例】电路如图所示,试编制程序输入编制程序输入K1K1K8K8状状态数据,并存入内态数据,并存入内RAM RAM 40H40H。解:编程如下:解:编程如下:KIN:KIN:MOV SCON,#00HMOV SCON,#00H;串行口方式串行口方式0 0 CLR ES CLR ES ;禁止串行中断禁止串行中断 CLR P1.0 CLR P1.
14、0 ;锁存并行输入数据锁存并行输入数据 SETB P1.0 SETB P1.0 ;允许串行移位操作允许串行移位操作 SETB REN SETB REN ;允许并启动接收(允许并启动接收(TXDTXD发送移位脉冲)发送移位脉冲)JNB RI,$JNB RI,$;等待接收完毕等待接收完毕 MOV 40H,SBUF MOV 40H,SBUF;存入存入K1K1K8K8状态数据状态数据 RET RET ;2 2、串行工作方式串行工作方式1 1 方式方式1 1是一帧是一帧1010位的异步串行通信方式,包括位的异步串行通信方式,包括1 1个起始位,个起始位,8 8个数据个数据位和一个停止位位和一个停止位。其
15、帧格式为:其帧格式为:起始起始D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7停止停止 数据发送数据发送 发发送送时时只只要要将将数数据据写写入入SBUFSBUF,在在串串行行口口由由硬硬件件自自动动加加入入起起始始位位和和停停止止位位,构构成成一一个个完完整整的的帧帧格格式式。然然后后在在移移位位脉脉冲冲的的作作用用下下,由由TXDTXD端端串串行行输出。一帧数据发送完毕,将输出。一帧数据发送完毕,将SCONSCON中的中的TITI置置1 1。数据接收数据接收 接接收收时时,在在REN=1REN=1前前提提下下,当当采采样样到到RXDRXD从从1 1向向0 0跳跳变变状状态态
16、时时,就就认认定定为为已已接接收收到到起起始始位位。随随后后在在移移位位脉脉冲冲的的控控制制下下,将将串串行行接接收收数数据据移移入入SBUFSBUF中中。一一帧帧数数据据接接收收完完毕毕,将将SCONSCON中中的的RIRI置置1 1,表表示示可可以以从从SBUFSBUF取取走走接接收到的一个字符。收到的一个字符。2 2SMODSMOD3232foscfosc12 12 波特率波特率 在在实实际际应应用用时时,通通常常是是先先确确定定波波特特率率,后后根根据据波波特特率率求求T1T1定定时初值,因此上式又可写为:时初值,因此上式又可写为:波特率波特率 方式方式1 1波特率可变,由定时波特率可
17、变,由定时/计数器计数器T1T1的计数溢出率来决定。的计数溢出率来决定。波特率波特率=2=2SMODSMOD(T1T1溢出率)溢出率)/32/32 其中其中SMODSMOD为为PCONPCON寄存器中最高位的值,寄存器中最高位的值,SMOD=1SMOD=1表示波特率倍表示波特率倍增。增。T1T1初值初值=256 =256 应用举例应用举例【例例6-36-3】设设甲甲乙乙机机以以串串行行方方式式1 1进进行行数数据据传传送送,fosc=11.0592MHzfosc=11.0592MHz,波波特特率率为为1200b/s1200b/s。甲甲机机发发送送的的1616个个数数据据存存在在内内RAM RA
18、M 40H40H4FH4FH单单元元中中,乙乙机机接接收后存在内收后存在内RAM 50HRAM 50H为首地址的区域中为首地址的区域中。T1T1初值初值 =256-=232=E8H=256-=232=E8H3232121200121200解:解:串行方式串行方式1 1波特率取决于波特率取决于T1T1溢出率溢出率(设设SMOD=0),SMOD=0),计算计算T1T1定时初值:定时初值:11059200110592002 20 0甲机发送子程序:甲机发送子程序:MOV TMOD,#20HMOV TMOD,#20H;置置T1T1定时器工作方式定时器工作方式2 2MOV TL1,#0E8HMOV TL
19、1,#0E8H;置置T1T1计数初值计数初值MOV TH1,#0E8HMOV TH1,#0E8H;置置T1T1计数重装值计数重装值CLR ET1CLR ET1;禁止禁止T1T1中断中断SETB TR1SETB TR1;T1;T1启动启动MOV SCON,#40HMOV SCON,#40H;置串行方式置串行方式1,1,禁止接收禁止接收MOV PCON,#00HMOV PCON,#00H;置置SMOD=0(SMODSMOD=0(SMOD不能位操作不能位操作)CLR ESCLR ES;禁止串行中断禁止串行中断MOV R0,#40HMOV R0,#40H;置发送数据区首地址置发送数据区首地址MOV R
20、2,#16MOV R2,#16;置发送数据长度置发送数据长度A,R0A,R0 ;读一个数据读一个数据MOVMOVSBUF,ASBUF,A;发送发送JNBJNBTI,$TI,$;等待一帧数据发送完毕等待一帧数据发送完毕CLRCLRTITI;清发送中断标志清发送中断标志INCINCR0R0;指向下一字节单元指向下一字节单元DJNZDJNZR2,TRSAR2,TRSA;判判1616个数据发完否个数据发完否?未完继续未完继续RET RET ;TXDA:TXDA:TRSA:TRSA:MOV TMOD,#20HMOV TMOD,#20H;置置T1T1定时器工作方式定时器工作方式2 2MOV TL1,#0E
21、8HMOV TL1,#0E8H;置置T1T1计数初值计数初值MOV TH1,#0E8HMOV TH1,#0E8H;置置T1T1计数重装值计数重装值CLR ET1CLR ET1;禁止禁止T1T1中断中断SETB TR1SETB TR1;T1;T1启动启动MOV SCON,#40HMOV SCON,#40H;置串行方式置串行方式1,1,禁止接收禁止接收MOV PCON,#00HMOV PCON,#00H;置置SMOD=0(SMODSMOD=0(SMOD不能位操作不能位操作)CLR ESCLR ES;禁止串行中断禁止串行中断MOV R0,#50HMOV R0,#50H ;置接收数据区首地址置接收数据
22、区首地址MOV R2,#16MOV R2,#16 ;置接收数据长度置接收数据长度SETB RENSETB REN;启动接收启动接收JNBJNB RI,$RI,$;等待一帧数据接收完毕等待一帧数据接收完毕CLRCLR RI RI;清接收中断标志清接收中断标志MOVMOV A,SBUF A,SBUF ;读接收数据读接收数据MOVMOV R0,A R0,A;存接收数据存接收数据INCINC R0 R0;指向下一数据存储单元指向下一数据存储单元DJNZDJNZ R2,RDSB R2,RDSB;判判1616个数据接收完否个数据接收完否?未完继续未完继续RET RET ;乙机接收子程序:乙机接收子程序:R
23、XDB:RXDB:RDSB:RDSB:方方式式2 2是是一一帧帧1111位位的的串串行行通通信信方方式式,即即1 1个个起起始始位位,8 8个个数数据位,据位,1 1个可编程位个可编程位TB8/RB8TB8/RB8和和1 1个停止位,个停止位,其帧格式为:其帧格式为:3 3、串行工作方式串行工作方式2 2起始起始D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7TB8/RB8TB8/RB8停止停止波特率波特率=2=2SMOD SMOD fosc/64 fosc/64 可编程位可编程位TB8/RB8TB8/RB8既可作奇偶校验位用,也可作控制位(多既可作奇偶校验位用,也可作控制位(
24、多机通信)用,其功能由用户确定。机通信)用,其功能由用户确定。数据发送和接收与方式数据发送和接收与方式1 1基本相同,区别在于方式基本相同,区别在于方式2 2把发送把发送/接接收到的第收到的第9 9位内容送入位内容送入TB8/RB8TB8/RB8。波特率:方式波特率:方式2 2波特率固定,即波特率固定,即fosc/32fosc/32和和fosc/64fosc/64。如用公式表如用公式表示则为:示则为:【例【例6-46-4】设计一个串行方式设计一个串行方式2 2发送子程序(发送子程序(SMOD=1SMOD=1),),将片内将片内RAM 50HRAM 50H5FH5FH中的数据串行发送,第中的数据
25、串行发送,第9 9数据位作为数据位作为奇偶校验位。接到接收方核对正确的回复信号(用奇偶校验位。接到接收方核对正确的回复信号(用FFHFFH表表示)后,再发送下一字节数据,否则再重发一遍。示)后,再发送下一字节数据,否则再重发一遍。解:程序如下:解:程序如下:MOV A,R0 MOV A,R0 ;读数据读数据MOV C,PSW.0 MOV C,PSW.0 ;奇偶标志送奇偶标志送TB8TB8MOV TB8,C MOV TB8,C ;MOV SBUF,A MOV SBUF,A ;启动发送启动发送JNB TI,$JNB TI,$;等待一帧数据发送完毕等待一帧数据发送完毕CLR TI CLR TI ;清
26、发送中断标志清发送中断标志SETB REN SETB REN ;允许接收允许接收CLR RI CLR RI ;清接收中断标志清接收中断标志JNB RI,$JNB RI,$;等待接收回复信号等待接收回复信号MOV A,SBUF MOV A,SBUF ;读回复信号读回复信号CPL A CPL A ;回复信号取反回复信号取反JNZ TRLP JNZ TRLP ;非全非全0(0(回复信号回复信号FFH,FFH,错误错误),),转重发转重发INC R0 INC R0 ;全全0(0(回复信号回复信号=FFH,=FFH,正确正确),),指向下一数据存储单元指向下一数据存储单元CJNE R0,#60H,TRL
27、P CJNE R0,#60H,TRLP ;判判1616个数据发送完否个数据发送完否?未完继续未完继续RET RET ;TRLP:TRLP:MOV SCON,#80H MOV SCON,#80H ;置串行方式置串行方式2,2,禁止接收禁止接收MOV PCON,#80H MOV PCON,#80H ;置置SMOD=1SMOD=1MOV R0,#50HMOV R0,#50H;置发送数据区首址置发送数据区首址TRS2:TRS2:【例例6-56-5】编编制制一一个个串串行行方方式式2 2接接收收子子程程序序,接接收收上上例例发发送送的的1616个个数数据据,存存首首址址为为40H40H的的内内RAMRA
28、M中中,并并核核对对奇奇偶偶校校验验位位,接接收收核核对对正正确确,发发出出回回复复信信号号FFHFFH;发发现现错错误误,发出回复信号发出回复信号00H00H,并等待重新接收。,并等待重新接收。RXD2:MOV SCON,#80H RXD2:MOV SCON,#80H ;置串行方式置串行方式2,2,禁止接收禁止接收 MOV PCON,#80H MOV PCON,#80H ;置置SMOD=1SMOD=1 MOV R0,#40H MOV R0,#40H ;置接收数据区首址置接收数据区首址 SETB REN SETB REN ;启动接收启动接收RWAP:JNB RI,$RWAP:JNB RI,$;
29、等待一帧数据接收完毕等待一帧数据接收完毕 CLR RI CLR RI ;清接收中断标志清接收中断标志 MOV A,SBUF MOV A,SBUF ;读接收数据读接收数据,并在并在PSWPSW中产生接收数据的奇偶值中产生接收数据的奇偶值 JB PSW.0,ONE JB PSW.0,ONE ;P=1,;P=1,转另判转另判 JB RB8,ERR JB RB8,ERR ;P=0,RB8=1,;P=0,RB8=1,接收有错接收有错;P=0,RB8=0,;P=0,RB8=0,接收正确接收正确,继续接收继续接收RLOP:MOV R0,A RLOP:MOV R0,A ;存接收数据存接收数据 INC R0 I
30、NC R0 ;指向下一数据存储单元指向下一数据存储单元RIT:MOV A,#0FFH RIT:MOV A,#0FFH ;置回复信号正确置回复信号正确FDBK:MOV SBUF,A FDBK:MOV SBUF,A ;发送回复信号发送回复信号 CJNE R0,#50H,RWAP CJNE R0,#50H,RWAP ;判判1616个数据接收完否个数据接收完否?未完继续未完继续 CLR REN CLR REN ;16;16个数据正确接收完毕个数据正确接收完毕,禁止接收禁止接收 RET RET ;ONE:JNB RB8,ERR ONE:JNB RB8,ERR ;P=1,RB8=0,;P=1,RB8=0,
31、接收有错接收有错 SJMP RIT SJMP RIT ;P=1,RB8=1,;P=1,RB8=1,接收正确接收正确,继续接收继续接收ERR:CLR A ERR:CLR A ;接收有错接收有错,置回复信号错误标志置回复信号错误标志 SJMP FDBK SJMP FDBK ;转发送回复信号转发送回复信号解:程序如下:解:程序如下:方方式式3 3同同样样是是一一帧帧1111位位的的串串行行通通信信方方式式,其其通通信信过过程程与与方方式式2 2完完全全相相同同,所所不不同同的的仅仅在在于于波波特特率率。方方式式2 2的的波波特特率率只只有有固固定定的的两两种种,而而方方式式3 3的的波波特特率率则则
32、与与方方式式1 1相相同同,即即通通过过设设置置T1T1的的初初值值来来设定波特率。设定波特率。4、串行工作方式串行工作方式3 35 5、串行口四种工作方式的比较、串行口四种工作方式的比较 四种工作方式的区别主要表现在帧格式及波特率两个方面。四种工作方式的区别主要表现在帧格式及波特率两个方面。表表6-2 6-2 四种工作方式比较四种工作方式比较工作方式工作方式帧帧 格格 式式波波 特特 率率方式方式0 08 8位位全全是是数数据据位位,没没有有起起始始位位、停停止止位位固固定定,即即每每个个机机器器周周期期传传送送一位数据一位数据方式方式1 11010位位,其其中中1 1位位起起始始位位,8,
33、8位位数数据据位位,1,1位停止位位停止位不不固固定定,取取决决于于T1T1溢溢出出率率和和SMODSMOD方式方式2 21111位位,其其中中1 1位位起起始始位位,9,9位位数数据据位位,1,1位停止位位停止位固定固定,即即2 2SMODSMODfosc/64fosc/64方式方式3 3同方式同方式2 2同方式同方式1 1 解解决决的的方方法法只只有有调调整整单单片片机机的的时时钟钟频频率率foscfosc,通通常常采采用用11.0592MHz11.0592MHz晶振晶振。6 6、常用波特率及其产生条件常用波特率及其产生条件 常用波特率通常按规范取常用波特率通常按规范取12001200、24002400、48004800、96009600、,若采用,若采用晶振晶振12MHz12MHz和和6MHz6MHz,则计算得出的,则计算得出的T1T1定时初值将不是一个整数,产生定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。波特率误差而影响串行通信的同步性能。