第五章 单片机内部资源应用(二).ppt_第1页
第五章 单片机内部资源应用(二).ppt_第2页
第五章 单片机内部资源应用(二).ppt_第3页
第五章 单片机内部资源应用(二).ppt_第4页
第五章 单片机内部资源应用(二).ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机接口技术及应用单片机接口技术及应用第五章第五章 单片机内部资源应用单片机内部资源应用(二二)万旭万旭M.T.:660109)QQ:8543101744:18:262浙江师范大学第五章第五章 单片机内部资源应用单片机内部资源应用课程目录浙江师范大学4:18:274浙江师范大学MCS-51内部有一个可编程全双工串行接口,具有UART(通用异步接收和发送器)的全部功能,该串行口,有4种工作方式,以供不同场合使用。波特率可由软件设置,通过对串口编程,可以实现串并转换,双机通信及多机通信。4:18:275浙江师范大学全双工串行接口全双工串行接口(UART)(UART)数据

2、通信的数据通信的几个术语:几个术语: 并行并行:数据各位数据各位同时同时进行传送进行传送 串行串行:数据数据逐位逐位顺序进行顺序进行传送传送全双工全双工:(:(串行通信串行通信) )收收/ /发发可同时可同时进行进行 半双工半双工:(:(串行通信串行通信) )收收/ /发发不可不可同时进行同时进行异步串行通信异步串行通信: :以字符为单位进行传送以字符为单位进行传送 同步串行通信同步串行通信: :以数据块以数据块为单位进行传送为单位进行传送 波特率波特率(bps.)(bps.): :单位时间传送的位数单位时间传送的位数4:18:27浙江师范大学6发送接收发送接收A端B端 半双工制式发送接收接收

3、发送A端B端 全双工制式4:18:277浙江师范大学MCS-51单片机串行口的内部有三个特殊功能寄存器:SBUF、SCON、PCON,发送SBUF(99H)接收SBUF(99H)同步时钟门电路发送控制器接收控制器输入移位寄存器串行口控制寄存器(98H)内部总线1串行口中断TIRITXD(P3.1)RXD(P3.0)4:18:278浙江师范大学两个同名的两个同名的接收接收/ /发送缓冲寄存器发送缓冲寄存器SBUFSBUF 指令指令 MOV SBUFMOV SBUF,A A ; ;启动启动一次数据发送一次数据发送, ,可向可向SBUFSBUF 再发送下一个数再发送下一个数 指令指令 MOV AMO

4、V A,SBUF SBUF ; ;完成完成一次数据接收一次数据接收,SBUF,SBUF可再可再 接收下一个数接收下一个数接收接收/ /发送数据发送数据, ,无论是否采用中断无论是否采用中断方式工作方式工作, ,每每接收接收/ /发送一个数据都必须用发送一个数据都必须用指令对指令对RI/TIRI/TI清清0 0,以备下一次收以备下一次收/ /发。发。串行口相关的串行口相关的SFRSFR(SCON,PCON)(SCON,PCON)1. 串行口的结构2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:

5、SCON(98H)位位76543210功能功能SM0SM1SM2RENTB8RB8TIRISCON(98H)SM0、SMl:串行口工作方式选择位:串行口工作方式选择位SM0SM1工作方式功能说明001101010123同步移位寄存器输入/输出,波特率为fOSC/128位UART,波特率可变(TI溢出率/n,n=16或32)9位UART,波特率为fosc/n,n=32或64)9位UART,波特率可变(TI溢出率/n,n=16或32)4:18:279浙江师范大学位位76543210功能功能SM0SM1SM2RENTB8RB8TIRISM2:多机通信控制位,用于方式:多机通信控制位,用于方式2和方式

6、和方式3中。中。在方式在方式2和方式和方式3处于接收方式时处于接收方式时 若若SM2=1,表示置多机通信功能。,表示置多机通信功能。 若若SM2=0,不论接收到的第,不论接收到的第9位位RB8是是0还是还是l,TI、RI都以正常都以正常方式被激活,接收到的数据装入方式被激活,接收到的数据装入SBUF。在方式在方式1,若,若SM2=1,则只有收到有效的停止位后,则只有收到有效的停止位后,RI=1。在方式。在方式0中,中,SM2=0。2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98

7、H)SCON(98H)4:18:2710浙江师范大学位位76543210功能功能SM0SM1SM2RENTB8RB8TIRIRENREN:允许串行接收控制位:允许串行接收控制位。REN=lREN=l时,允许接收;时,允许接收;REN=0REN=0时,禁止接收时,禁止接收。2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)SCON(98H)4:18:2711浙江师范大学位位76543210功能功能SM0SM1SM2RENTB8RB8TIRITB8:发送数据的第:发送数据的第9位

8、。位。 在在方式方式2和方式和方式3中,中,TB8是第是第9位发送数据,可做奇偶校位发送数据,可做奇偶校验位验位。在在多机通信多机通信中,可作为区别地址帧或数据帧的标识位,中,可作为区别地址帧或数据帧的标识位,一般约定发送地址帧时,一般约定发送地址帧时,TB8为为1,发送数据帧时,发送数据帧时,TB8为为0。TB8由软件置位或复位;由软件置位或复位;2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)SCON(98H)4:18:2712浙江师范大学位位76543210功能功能S

9、M0SM1SM2RENTB8RB8TIRIRB8:接收数据的第:接收数据的第9位。位。在在方式方式2和方式和方式3中,接收第中,接收第9位数据。位数据。在在方式方式1下,若下,若SM2=0,则,则RB8用于存放接收到的停止位方式;用于存放接收到的停止位方式;方式方式0下,不使用下,不使用RB8;2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)SCON(98H)4:18:2713浙江师范大学位位76543210功能功能SM0SM1SM2RENTB8RB8TIRITI:发送中断

10、标志位,用于指示一帧数据发送完否。:发送中断标志位,用于指示一帧数据发送完否。当当TI=l时,向时,向CPU申请串行中断,响应中断后,必须由软件清除申请串行中断,响应中断后,必须由软件清除TI。就是说:就是说:TI在发送前必须由软件复位,发送完一帧后由硬件置位。在发送前必须由软件复位,发送完一帧后由硬件置位。因此,因此,CPU查询查询TI状态便可知一帧信息是否已发送完毕。状态便可知一帧信息是否已发送完毕。2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)SCON(98H)4:

11、18:2714浙江师范大学位位76543210功能功能SM0SM1SM2RENTB8RB8TIRIRI:接收中断标志位。用于指示一帧信息是否接收完。:接收中断标志位。用于指示一帧信息是否接收完。在在方式方式1中,接收到第中,接收到第8位数据时由硬件置位;位数据时由硬件置位;在在其它方式其它方式中在接收停止位的中间点由硬件置位。中在接收停止位的中间点由硬件置位。接收完一帧数据接收完一帧数据RI=l,向,向CPU申请中断,供申请中断,供CPU查询。查询。RI由软件复由软件复位位。2.串行口控制寄存器SCONSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位

12、被清零。SCON的格式如下所示:SCON(98H)SCON(98H)4:18:2815浙江师范大学SCON的所有位复位时被清零。3电源及波特率选择寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,没有位寻址功能。字节地址为87H。在HMOS的8051单片机中,PCON只有最高位被定义,其它位都是虚设的。位位76543210功能功能SMODSSSSSSSSGF11GF00PPDDIDLLPCONPCON的最高位的最高位SMODSMOD为串行口波特率的倍增位。为串行口波特率的倍增位。在方式在方式1 1、2 2和和3 3时,串行通信的波特率与时,串行通信的波特率与SMOD

13、SMOD有关。有关。当当SMOD=lSMOD=l时,通信波特率加倍,时,通信波特率加倍,当当SMOD=0SMOD=0时,波特率不变。其它各位为掉电方式控制位时,波特率不变。其它各位为掉电方式控制位。4:18:2816浙江师范大学串行口有4种工作方式,通过SCON中的SMl、SM0位决定:1工作方式08 8位移位寄存器位移位寄存器I/OI/O方式方式为同步移位寄存器方式,波特率固定为fOSC/l2串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出移位数据的发送和接收以8位为一帧,无需起始位和停止位常用于扩展I/O口4:18:2817浙江师范大学4:18:28浙江师范大

14、学18经常配合经常配合“串入并出串入并出”“”“并入串出并入串出”移位移位 寄存器一起使用扩展寄存器一起使用扩展接口接口 方式方式0 0工作时,多用查询方式编程:工作时,多用查询方式编程: 发送:发送:MOV SBUFMOV SBUF,A A 接收:接收:JNB RIJNB RI,$ $ JNB TIJNB TI,$ $ CLR RI CLR RI CLR TI CLR TI MOV A, SBUFMOV A, SBUF复位时复位时, ,SCONSCON已经已经被清零被清零, ,缺省值缺省值: : 方式方式0 0接收前接收前, ,务必先置位务必先置位 REN=1REN=1允许允许接收接收数据数

15、据4:18:2819浙江师范大学发送:发送:SBUFSBUF中的串行数据由中的串行数据由RxDRxD逐位移出;逐位移出; TxDTxD输出输出移位时钟移位时钟,频率,频率= =foscfosc/12/12; 每送出每送出8 8位位数据数据TITI就自动置就自动置1 1; 需要用软件清需要用软件清零零TITI。 接收:串行数据由接收:串行数据由RxDRxD逐位移入逐位移入SBUFSBUF中;中; TxDTxD输出输出移位时钟移位时钟,频率,频率= =foscfosc/12/12; 每接收每接收 8 8位数据位数据RIRI就自动置就自动置1 1; 需要用软件清需要用软件清零零RIRI。4:18:2

16、820浙江师范大学串行口方式0的扩展应用串行口常用工作方式串行口常用工作方式0 0扩展出并行扩展出并行I/OI/O口口,工作,工作方式方式1 1、2 2、3 3则常用于串行通信则常用于串行通信74LS16474LS164是是串入并出串入并出芯片;芯片;74LS16574LS165是是并入串出并入串出芯片芯片A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLRA AB BCLKCLKCLRCLRA AB BCLKCLKCLRCLR+5V+5V74LS16474LS16474LS16474LS16474LS1674LS164 4h g f e d c b

17、 ah g f e d c b ah g f e d c b ah g f e d c b a+5V+5V共阳共阳LED LED 数码管数码管VCCVCCTxDTxDRxDRxD5151单片机单片机4:18:2821浙江师范大学例:利用串行口例:利用串行口工作方式工作方式0 0扩展出扩展出8 8位并行位并行I/OI/O口,口,驱动共阳驱动共阳LEDLED数码管显示数码管显示0 09 9。A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLR+5V+5VVCCVCCTxDTxDRxDRxD51单片机单片机74LS1674LS164 4共阳共阳LEDLED

18、数码管数码管4:18:2822浙江师范大学根据通过根据通过串行口串行口和和74LS164 74LS164 驱动共阳驱动共阳LEDLED数码数码管管( (查表查表) )显示显示0-90-9数字的子程数字的子程序:序:DSPLY:MOV DPTR, #TABLEDSPLY:MOV DPTR, #TABLE MOVC A, MOVC A, A+DPTRA+DPTR MOV SBUF, A MOV SBUF, A JNB TI, $ JNB TI, $ CLR TI CLR TI RET RETTABLE:DB 0C0H,0F9H,0A4HTABLE:DB 0C0H,0F9H,0A4H DB 0B0H

19、,99H,92H DB 0B0H,99H,92H DB 82H,0F8H,80H,90H DB 82H,0F8H,80H,90Hh g f e d c b ah g f e d c b a累加器累加器 A1 1 0 0 0 0 0 01 1 0 0 0 0 0 00C0H = 0C0H = “0 0”1 0 1 1 0 0 0 01 0 1 1 0 0 0 00B0H = 0B0H = “3 3”共阳极共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h注意注意: :这里没有设置这里没有设置SCONSCON,而是采用,而是采用了复位

20、后的默认值了复位后的默认值00H00H4:18:2823浙江师范大学常用于串行通讯。除发常用于串行通讯。除发/ /收收8 8位数据外,还位数据外,还 在在D0D0位前有一个起始位位前有一个起始位“0 0”; 在在D7D7位后有一个停止位位后有一个停止位“1 1”。方式方式1 1工作时:工作时: 发送端自动添加发送端自动添加一个起始位和一个停止位一个起始位和一个停止位; 接收端自动去掉一个起始位和一个停止位。接收端自动去掉一个起始位和一个停止位。工作方式工作方式1 1:8:8位位UART(UART(1 1+8+8+1 1位位) )波特率波特率可变可变波特率可变波特率可变 用定时器用定时器T1T1

21、作波特率发生器:作波特率发生器: 公式:公式:波特率波特率 = =(2 2SMODSMOD/32/32) T1T1的溢出率的溢出率4:18:2824浙江师范大学波特率波特率=(2=(2SMODSMOD/32)/32) T1T1的溢出率的溢出率 溢出率:溢出率:T1T1溢出的频繁程度溢出的频繁程度 即:即:T1T1溢出一次所需时间的倒数。溢出一次所需时间的倒数。 初值初值 X = 2 2n n - - 2 2SMOD SMOD foscfosc32 32 波特率波特率 1212 波特率波特率 = =2 2SMOD SMOD foscfosc32 32 12(212(2n n - - X X) )

22、其中:其中:X X 是定时器初值是定时器初值4:18:2825浙江师范大学 初值初值 X = 2 2n n - - 2 2SMOD SMOD foscfosc32 32 波特率波特率 1212 计算波特率:计算波特率: 要求用要求用T1T1工作于工作于方式方式2 2来产生波特率来产生波特率12001200, 已知晶振频率已知晶振频率=6MHz=6MHz。要求出。要求出T1T1的初值:的初值:初值初值 X = 2 28 8 - - 2 20 0 6 6 10106 632 32 1200 1200 1212= 256 - - = 256 - - 13.026 6 10106 6460800460

23、800 243 = 0F3H 4:18:2826浙江师范大学 表格有多种表格有多种, , 晶振也不止一种晶振也不止一种常用波特率和常用波特率和T1T1初值查表初值查表4:18:2827浙江师范大学RxDRxD引脚为接收端,引脚为接收端,TxDTxD引脚为发送端引脚为发送端, ,由波特率由波特率 发生器发生器T1T1控制发送速度控制发送速度, ,不同于方式不同于方式0 0:收:收/ /发都发都 需要由需要由TxDTxD送出移位时钟送出移位时钟。 T1T1作波特率发生器时作波特率发生器时初始化包括初始化包括: : 选选定时器工作方式定时器工作方式2 2 ( (TMODTMOD选选8 8位自动重装位

24、自动重装);); 将计算将计算( (或查表或查表) )出的出的初值初值X X赋给赋给TH1,TL1TH1,TL1; ; 启动启动T1 T1 (SETB TR1);(SETB TR1); 对对T1T1不要开中断不要开中断 ! !工作方式工作方式1 1的接收的接收/ /发送发送串行口的初始化包括串行口的初始化包括: : 对对SCONSCON选工作方式选工作方式 对对PCONPCON设波特率加倍位设波特率加倍位“SMODSMOD”( (缺省值缺省值=0)=0) 如果是接收数据如果是接收数据, ,仍要先仍要先置置“1 1” RENREN位位 4:18:2828浙江师范大学MAINMAIN: ORG 0

25、023HORG 0023H MOV TMODMOV TMOD,#20H #20H SBR1:JNB RI,SENDSBR1:JNB RI,SEND MOV TL1MOV TL1,#0F3H #0F3H LCALL SINLCALL SIN MOV TH1MOV TH1,#0F3H #0F3H SJMP NEXTSJMP NEXT SETB TR1 SETB TR1 SEND:LCALL SOUT SEND:LCALL SOUT MOV SCON, #50H MOV SCON, #50H NEXT:RETINEXT:RETI SETB EA SIN: SETB EA SIN: SETB ES R

26、ET SETB ES RET LCALL SOUT LCALL SOUT SOUTSOUT: : SJMP $ RET SJMP $ RET串行串行通信通信方式方式1 1应用应用例:用例:用T1T1工作于方式工作于方式2 2,产生波特率,产生波特率12001200bpsbps4:18:2829浙江师范大学由于波特率固定由于波特率固定, ,常用于单片机间通讯。常用于单片机间通讯。 数据由数据由8+18+1位组成,通常附加的一位组成,通常附加的一位位( (TB8/RB8)TB8/RB8)用于用于“奇偶校验奇偶校验”。 工作方式工作方式2 2: : 9 9位位UART UART ( (1 1+8+8

27、+1 1+ + 1 1位位) ) 两种两种波特率波特率 方式方式2 2的波特率的波特率 = = foscfosc 2 2SMODSMOD/64 /64 即即: : f foscosc 1/32 1/32 或或 f foscosc 1/64 1/64 两种两种0D0D1D2D3D4D5D6D70/118位数据位数据起始位起始位停止位停止位4:18:2830浙江师范大学例:发送中断服务程序,以TB8作为奇偶校验位,处理方法:数据写入SBUF之前,先将数据的奇偶位写入TB8。CPU执行一条写SBUF的命令后,便立即启动发送器发送,发送完一帧信息后,TI被置1,再次向CPU申请中断。因此在进入中断服务

28、子程序后,必须将TI清零。4:18:2831浙江师范大学 PIPL: PUSH PSW ;保护现场;保护现场 PUSH A CLR TI ;清零发送中断标志;清零发送中断标志 MOV A,R0 ;取数据;取数据 MOV C,P ;奇偶位送;奇偶位送C MOV TB8,C ;奇偶位送;奇偶位送TB8 MOV SBUF,A ;发送数据;发送数据 INC R0 ;数据指针加;数据指针加1 POP A ;恢复现场;恢复现场 POP PSW RETI4:18:2832浙江师范大学工作方式工作方式3 3: :当当SM0,SM1SM0,SM1为为1111时时, ,串行口工作于方式串行口工作于方式3 3 9

29、9位位UART(1+8+1+1UART(1+8+1+1位位) ) 波特率波特率可变可变串口方式串口方式3 3和方式和方式2 2唯一的区别是波特率机制不同唯一的区别是波特率机制不同。方式方式2 2的波特率固定为时钟周期的的波特率固定为时钟周期的3232或或6464分频,分频,不可变。此工作方式与其他串行通讯设备连接困不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。难,因此不常用。方式方式3 3的的波特率可变波特率可变,按公式,按公式计算:计算: 波特率波特率= =(2(2SMODSMOD/32)/32) T1T1的溢出率的溢出率 波特率波特率 = =2 2SMOD SMOD foscf

30、osc32 32 12(2 12(2n n - X)- X)其中:其中:X X 是定时器初值是定时器初值4:18:2833浙江师范大学3 MCS-51单片机串行通信的波持率随串行口工作方式选择不同而异,它除了与系统的振荡频率fosc,电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置有关。收发双方必须采用相同的波特率。方式方式0和方式和方式2的波特率是固定的的波特率是固定的;方式方式1和方式和方式3的波特率是可变的,由定时器的波特率是可变的,由定时器T1的的溢出率决定。溢出率决定。4:18:2834浙江师范大学1方式0和方式2方式0: 波特率为时钟频率的1/12,即fOSC/12,

31、固定不变。方式2: 波特率取决于PCON中的SMOD值,选定公式为波特率=2SMODfosc/64,固定为二种: 当当SMOD=l时,波特率为时,波特率为fosc/32;当当SMOD=0时,波特率为时,波特率为fosc/64。4:18:2835浙江师范大学2方式1和方式3 在方式l和方式3下,波特率由定时器Tl的溢出率和SMOD共同决定,因而波特率也是可变的。 相应公式为: 波特率=2SMOD /32 n(定时器T1的溢出率)溢出率为溢出周期的倒数,所以波特率为:波特率 = 定时器T1的溢出率取决于定时器T1的预置值。X)k12(2OSCf32SMOD24:18:2936浙江师范大学 波特率也

32、是可变的。 溢出周期为:fOSC /121/(2n一X) 式中,n为定时器T1的位数,它和定时器T1的设定方式有关。即:若定时器若定时器T1为方式为方式0,则,则n=13若定时器若定时器T1为方式为方式1,则,则n=16若定时器若定时器T1为方式为方式2或或3,则,则n=84:18:2937浙江师范大学 定时器T1通常采用方式2。 方式2:TH1和TLl分别设定为两个8位重装计数器(当TLl从全“1”变为全“0”时,TH1重装TL1)。 这种方式,不仅可使操作方便,也可避免因重装初值(时间常数初值)而带来的定时误差。 方式1或方式3下所选波特率常常需要通过计算来确定初值。4:18:2938浙江

33、师范大学在波特率的设置中,SMOD位影响着波特率的准确度的问题值得注意。 例:设波特率选为2400, 时,SMOD可以任选为0和1,但是由于对SMOD不同的选择产生不同的波特率误差:1.选择SMOD0时,此时HFoscfSMODN924912322400610602-256 12322-256波特率计数常数MHZfosc6 4:18:2939浙江师范大学将此值置入TH1,可得实际的波特率及误差为:7%24002238.8-24002238.8F9H)8(21261063202N)8(212oscf32SMOD2波特率波特率 误误差差4:18:2940浙江师范大学2SMOD1,此时将此值置入TH

34、1,可得实际的波特率及误差为:HFN324312322400610612-256计计数数常常数数 %16. 024002400-85.240385.2403)382(1261063212波特率误差波特率误差波特率波特率 HF4:18:2941浙江师范大学 SMOD值虽然是可以任意选择的值,但在某些情况下会直接影响波特率误差范围。 通常波特率相对误差不大于2.5,为了保证通信的可靠性,当不同机种相互之间进行通信时,尤其要注意这点。4:18:2942浙江师范大学例:通信波特率为2400bps,fOSC=11.0592MHz,T1工作在方式2,其SMOD=0,计算T1的初值X,且编写初始化程序。 根

35、据 波特率=2SMOD/32n 得n=76800根据n= fOSC/12(2K一X) 得X=244 即:X=F4H,相应的程序为: MOV TMOD,#20H MOV TLl,#0F4H MOV THl,#0F4H SETB TRl4:18:2943浙江师范大学1单片机串行通信口测试 例: 如图将单片机的发送端与接收端接在一起,可以测试单片机的串口通信功能。设单片机主频为6MHz,波特率为2400bps。程序执行后,8个发光二极管闪烁表示通信正常。8051TXDRXDP1.0P1.1P1.7330330330742447424474244.VCC.4:18:2944浙江师范大学定时器采用工作模

36、式2,初值为FAH,程序: ORG 0000H MOV TMOD,#20H ;定时器定时器1设为模式设为模式2 MOV TL1,#0FAH MOV TH1,#0FAH ;置定时器初值置定时器初值 SETB TR1 ;启动启动T1 MOV SCON,#50H ;串口设置为方式串口设置为方式1,REN=1STA: CLR TI ;清发送标志清发送标志 MOV P1,#00H ;送亮灯信号送亮灯信号 ACALL DELAY ;调延时调延时 MOV A,#0FFH MOV SBUF, A ;发送灭灯信号发送灭灯信号4:18:2945浙江师范大学 JXFS: JNB TI, JXFS ;发送等待发送等待

37、 JXJS: JNB RI, JXJS ;接收等待接收等待 CLR RI ;清接收标志清接收标志 MOV A, SBUF ;接收数据接收数据 MOV P1, A ;接收数据接收数据(灭灯信号)送(灭灯信号)送P1口口 ACALL DELAY ;调延时调延时 SJMP STA ;重复重复DELAY: MOV R0,#0FFH ;延时子程序延时子程序DAL: MOV R1,#0FFHDAL1: DJNZ R1,DAL1 DJNZ R0,DAL RET END4:18:2946浙江师范大学2MCS-51单片机双机通信技术 如果两个单片机应用系统相距很近,可将它们的串行口直接相连,即可实现双机通信,如

38、图:8051TXDRXDGND8051RXDTXDGND4:18:2947浙江师范大学为了增加通信距离,减少通道及电源干扰,可以在通信线路上采取光电隔离的方法,利用RS-422标准进行双机通信。一种实用的接口电路如图:12174LS05VCC外 5 V1123123SN7517511431232133474LS0574LS05外 5 VVCCTXDRXD8051(甲 机 )8051(乙 机 )RXDTXDVCC外 5 V外 5 VVCCSN75174SN75175SN7517474LS05外 5 V外 5 VR1R3R2R1R3R24:18:2948浙江师范大学例:利用方式1实现单片机双机通信

39、,主频为6MHz,波特率为2400bps,当两个单片机距离较近时,甲、乙两机的发送端与接收端分别直接相联,两机共地。执行程序,甲机将亮灯信号发送给乙机,若通信正常,乙机接收到信号后点亮8个发光二极管。电路原理图如图所示,下面介绍甲机发送,乙机采用查询与中断两种工作方式接收。8051TXDRXDGND8051RXDTXDGND甲机发送程序:甲机发送程序: ORG 0000H STA: MOV TMOD,#20H ;设置波特率设置波特率 MOV TL1,#0FAH MOV TH1,#0FAH SETB TR1 MOV SCON,#40H ;置工作方式置工作方式1 CLR TI MOV A,#00H

40、 MOV SBUF,A ;发送亮灯信号发送亮灯信号WAIT: JBC TI,CONT ;发送成功清标志发送成功清标志 AJMP WAIT ;等待发送完毕等待发送完毕CONT: SJMP STA ;重复发送重复发送 END乙机查询工作方式接收:乙机查询工作方式接收:ORG 0000H MOV TMOD,#20H ;设置通信波特率设置通信波特率 MOV TL1,#0FAH MOV TH1,#0FAH SETB TR1 MOV SCON,#40H CLR RI SETB REN ;允许接收允许接收WAIT: JBC RI,READ ;接收成功清标志接收成功清标志 AJMP WAIT ;接收未完等待接

41、收未完等待READ: MOV A ,SBUF MOV P1,A ;接收亮灯信号送接收亮灯信号送P1口口 SJMP $ END乙机中断工作方式接收乙机中断工作方式接收: ORG 0000H AJMP MAIN ORG 0023H AJMP ZD ;转串口中断程序MAIN:MOV TMOD,#20H MOV TL1,#0FAH MOV TH1,#0FAH SETB TR1 MOV SCON,#50H CLR RI MOV IE,#90H ;开中断 SJMP $ZD:CLR RI ;清接收标志 MOV A ,SBUF ;读接收信号 MOV P1,A RETI ;中断返回 END4:18:2952浙江

42、师范大学例:编程将甲机片内50H单元开始的20个数据从串行口输出,乙机接收甲机发送过来的数据块,并存入片内 50H开始的20个单元。采用方式2 通信,数据帧格式是11位的,TB8为奇偶校验位,接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。发送波特率375kbps,晶振为12MHz,所以SMOD=l。 由于传送数据的波特率与定时器无关,所以程序中无需对定时器编程。发送子程序如下:发送子程序如下: MOV SCON,#80H ;设置串行口为方式;设置串行口为方式2 MOV PCON,#80H ;SMOD=l MOV R0,#50H ;设数据块指针;设数据块指针 MO

43、V R7,#20 ;设数据块长度;设数据块长度 STA:MOV A,R0 ;取数据给;取数据给A MOV C,P MOV TB8,C ;奇偶位;奇偶位P送给送给TB8, MOV SBUF,A ;启动发送;启动发送WAIT: JBC TI,CONT ;若发完一帧数据,清标志后发;若发完一帧数据,清标志后发 下一帧数据下一帧数据 AJMP WAIT ;未完等待;未完等待CONT: INC R0 ;修改数据指针;修改数据指针 DJNZ R7,STA ;循环发送至结束;循环发送至结束 RET乙机接收程序如下:乙机接收程序如下: 在进行双机通信时,两机应采用相同的工作方式和波特率。在进行双机通信时,两机

44、应采用相同的工作方式和波特率。 参考接收子程序如下:参考接收子程序如下: MOV SCON,#90H ;设置串行口为方式设置串行口为方式2, ;REN为为1,允许接收,允许接收 MOV PCON,#80H ;SMOD=1 MOV R0,#50H ;设置数据块首址设置数据块首址 MOV R7,#20 ;置数据块长度置数据块长度WAIT:JBC RI,READ ;接收完一帧数据则接收完一帧数据则RI清零并清零并 ; 读入数据读入数据 AJMP WAIT ;未完等待未完等待 READ: MOV A,SBUF ;读入数据读入数据 JNB PSW.0,PZ ;收到数为偶数则转收到数为偶数则转乙机接收程序如下:乙机接收程序如下: 在进行双机通信时,两机应采用相同的工作方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论