棉靴厂家
免费服务热线

Free service

hotline

010-00000000
棉靴厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

单片机双机串口通信程序设计

发布时间:2020-06-30 22:21:43 阅读: 来源:棉靴厂家

利用方式1实现单片机双机通信,主频为6M,波特率为2400bps,电路见图5-10。当两个单片机距离较近时,甲、乙两机的发送端与接收端分别直接相联,两机共地。执行程序,甲机将亮灯信号发送给乙机,若通信正常,乙机接收到信号后点亮20个发光二极管。乙机采用查询与中断两种工作方式。当然20个LED乙机可单独控制,也可接受甲机的控制,并执行甲机指令,还需要进一步完善程序.甲机发送程序: org 0000h sta:mov tmod,#20h;设置波特率mov tl1,#0FAh mov th1,#0FAhsetb tr1 mov scon,#40h;置工作方式1 clr ti mov a,#00h 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 ;接收未完等待 read: mov a ,sbuf mov p1,a;接收亮灯信号送P1口 sjmp $ end 乙机中断工作方式接收 org 0000h ajmp main org 0023h ajmp zd ;转串口中断程序 START: MOV TMOD,#20h mov tl1,#0FAh mov th1,#0FAh setb tr1 mov scon,#50h clr ri mov ie,#90h;开中断 MAIN:sjmp $ 主程序 zd:clr ri ;清接收标志 ;==============中断程序还要再完善============== mov a ,sbuf ;读接收信号 mov p1,a MOV R1,A ;将收到的信号送缓存 reti;中断返回 end 单片机双机串口通讯原理图>采用方式2 通信,数据帧格式是11位的,TB8为奇偶校验位,接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。发送波特率375kbps,晶振为12MHz,所以SMOD=l。由于传送数据的波特率与定时器无关,所以程序中无需对定时器编程. 以下程序出自一位单片机大侠之手,借来用用,如果什么什么错误或者需要改进的地方请大家指出,不过我这里基本测试通过了。send: MOVSCON,#80H;设置串行口为方式2MOVPCON,#80H;SMOD=lMOV R0,#50H;设数据块指针MOV R7,#20 ;设数据块长度 STA: MOVA,@R0;取数据给AMOV C,PMOV TB8,C ;奇偶位P送给TB8, MOV SBUF,A ;启动发送 ;==================================================== WAIT: JBCTI,CONT ;若发完一帧数据,清标志后发下一帧数据 AJMP WAIT ;未完等待 ;======================================================= CONT:INCR0 ;修改数据指针DJNZ R7,STA;循环发送至结束 RET ;================;乙机接收程序如下: ;在进行双机通信时,两机应采用相同的工作方式和波特率。 ;============================================= MOVSCON,#90H;设置串行口为方式2,REN为1,允许接收 MOVPCON,#80H;SMOD=1 MOVR0,#50H;设置数据块首址 MOVR7,#20;置数据块长度 ;========================================================= WAIT:JBCRI,READ;接收完一帧数据则RI清零并读入数据 AJMP WAIT;未完等待 ;========================================== READ:MOV A,SBUF ;读入数据 JNB PSW.0,PZ ;收到数为偶数则转 JNB RB8,ERR;收到数为奇数,发端为偶数则通信出错 SJMPRIGHT ;相符则正确 PZ:JB RB8,ERR ;收到数为偶数,发端为奇数则出错 ;======================================== RlGHT:MOV@R0,A ;通信正确,存放数据 INC R0;更改地址指针 DJNZR7,WAIT;数据块接收完否,未完继续 CLR PSW.5;通信正确,置F0为0 RET ;返回 ERROR:SETBPSW.5;通信出错,置F0为l RET ;返回

黑龙江定做劳保工服

临沂定做职业装

东营工作服定做

相关阅读