单片机双机串口通讯
发送机程序:
ORG 0000H
LJMP MAIN
ORG 0030H ;主程序开始地址
MAIN: MOV SCON,#0C0H ;将串口设置为工作方式3
MOV TMOD,#20H ;在串口方式3下波特率由定时器T1(方式2)设定
MOV TH1,#0FDH ;波特率设定为9600bps,晶振为11.0592MHz
MOV TL1,#0FDH ;
SETB TR1 ;启动T1
LOOP2: MOV R0,#0 ;给R0赋初值,从0开始显示
MOV DPTR,#TAB ;给数据指针DPTR赋所查表格的首地址
LOOP1: MOV A,R0 ;将R0里面的值赋给A
MOVC A,@A+DPTR ;查表得到的值赋给A
MOV C,P ;取奇偶数
MOV TB8,C ;将奇数或者偶数送到TB8,作为奇偶校验位
MOV SBUF,A ;发送数据
WAIT: JBC TI,NEXT ;等待发送完毕,将发送标志位清0
LJMP WAIT ;A里面的数据未发送完,继续等待
NEXT: ACALL DELAY ;发送完毕后等待0.5s让接收机显示0.5s,不然接收机上的显示一直是全亮
INC R0 ;R0加1,显示要发送的下一位数
CJNE R0,#0AH,LOOP1 ;比较R0里面的10个数是否发送完毕,发送完毕后面向下执行程序
LJMP LOOP2 ;跳转到LOOP2继续从0到9显示
DELAY: MOV R7,#250 ;0.5s延时程序(以12MHz计算的)
D1: MOV R5,#250
D2: NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R5,D2
DJNZ R7,D1
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴数码管显示0到9十个数
END
附:
MOV A,@A+DPTR :DPTR相当于TAB,A里面值是0到9由R0赋值给A,当A为0时,就取TAB+0里的数据,下同
数据地址
TAB+0
TAB+1
TAB+2
TAB+3
TAB+4
TAB+5
TAB+6
TAB+7
TAB+8
TAB+9
数据
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
7FH
6FH
接收机程序:
ORG 0000H
LJMP MAIN
ORG 0030H ;主程序开始地址
MAIN: MOV SCON,#0C0H ;将串口设置为工作方式3
MOV TMOD,#20H ;在串口方式3下波特率由定时器T1(方式2)设定
MOV TH1,#0FDH ;波特率设定为9600bps,晶振为11.0592MHz
MOV TL1,#0FDH ;
SETB TR1 ;启动T1
WAIT: JBC RI,LOOP ;判断是否接收到数据,收到数据后将RI清0跳转到LOOP
LJMP WAIT ;没有收到数据,继续等待
LOOP: MOV A,SBUF ;将收到的从SBUF送到A中
JB P,NEXT ;如果P等于0向下执行程序,P等于1跳转到NEXT
JB RB8,ERR ;如果 RB8等于0向下执行程序,RB8等于1跳转到ERR
LJMP RIGHT ;跳转到RIGHT
NEXT: JNB RB8,ERR ;如果RB8等于0跳转到ERR执行,RB8等于1向下执行程序
RIGHT: SETB P1.0 ;奇偶位检验正确,P1.0口灭
MOV P0,A ;奇偶位检验正确,将数据送P0口显示
LJMP WAIT ;跳转到WAIT,等待接收下一个要显示的数据
ERR: CLR P1.0 ;奇偶位校验错误,P1.0口亮
LJMP WAIT ;跳转到WAIT继续接收下一个数据
END
将程序下载后,两个单片机连接好通上电就开始显示了
接收程序也可单独用作PC与单机串口调试用
本程序经过单片机实验通过,可用
本文档为【单片机双机串口通讯】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。