- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
双机通信 下面以A机发送,B机接收为例,说明发送和接收程序的设计方法 设A、B两机均选用11 .0592 MHz的振荡频率,波特率为1200bit/s,定时器Tl选用工作方式2,SMOD位为0,则计数初值为: X=E8H,所以T1的初值为TH1=TL1=E8H 双机通信 利用8051的串行口进行两个8051之间的串行异步通信, 通信双方可以遵循如下约定: 1)设A机为发送者,B机为接收者。 2)当A机开始发送时,先发一个“AA”信号,B机收到后回答一个“ BB ”,表示同意接收。 3)当A机收到‘‘ BB”后,开始发送数据,每发送一次求一次“校验和”。“校验和”是每发送的一个字节数据(或命令代码)都累加到一个单元中去,累加过程中发生多次向高位进位(丢失),最后在累加单元中所剩余的结果。假定数据块长度为20个字节,数据缓冲区起始地址为30H,数据块发完后再发送“校验和”。 4)B机接收数据并将其转存到数据缓冲区,起始地址也为30H,每接收一次也计算一次“校验和”,当接收完一个数据块后,再接收从A机发来的“校验和”,并将它与B机求出的“校验和”进行比较。若二者相等,说明接收正确,B机回答一个“00”;若两者不等,说明接收不正确,B机回答一个“FF”,请求重发。 5) A机收到一+W的回答后,结束发送。若收到的答复非零,则将数据重发一次。 6)双方均采用串行口方式1进行串行通信。 与IBM PC 计算机的串行通信 IBM PC 是国内目前应用最广泛的微机,在与单片机串行接口后,可以方便地构成主从分布式多微机系统。从机作数据采集或实时控制,主机作数据处理和中央管理等。这种多微机系统在过程控制、仪器仪表、生产自动化和企业管理等方面都有广泛应用。此外,微机与单片机串行接口后,可以大大方便单片机的开发过程。 串行通信的接口电路 串行通信程序设计 串行通信程序设计主要有微机发送接收程序和单片机发送接收程序。 微机上的发送和接收程序主要采用计算机高级语言编写如:C/C++、VB等,在单片机上主要用汇编或C编写,在使用串口前,必须先对串口进行初始化,主要是设置产生波特率的定时器T1、串口控制和中断控制。具体步骤如下: ①确定定时器T1的工作方式—编程TMOD寄存器; ②确定串口的控制模式—编程SCON; ③串口的中断方式,必须开CPU和源中断—编程lE寄存器; ④计算定时器T1的初值—装载TH1,TL1: ⑤启动定时器T1 —编程TCON中的TR1位。 上位机微机 下位单片机程序设计: 设单片机的晶振的频率为11.0592MHz.由于单片机多应用于实时性较强的控制场合,为了尽量少占用CPU 的时间充分发挥CPU 的功能,我们在单片机程序设计中采用中断方式与微机进行通信。主程序读取A/D 转换器输出的数据,当通信条件满足时,就转入中断服务程序.向微机发送数据。单片机通信程序的主要部分为串口初始化和发送和接收程序。串口初始化程序主要是规定双方的通信设置;发送和接收程序则是完成在PC 机发送命令后,发送和接收数据的功能。 (1)串口初始化 ? ? ? ? MOV TMOD #20H;定时器工作在方式2 下 MOV TH1,#0F3H;设置波特率为9600bps MOV TL1,#0F3H SETB TR1;启动定时器1 MOV SCON,#0D0H;串口工作在方式3 下,允许接收 MOV PCON,#00H;令SMOD=0 MOV R0,#50H;串口数据缓冲区地址:50H MOV R7,#10H;数据长度 CLR TI;清TI CLR RI;清RI (2)单片机接收子程序 ? ? WAIT:JBC RI,RESUB;等待接收到数据 SJMP WAIT RESUB:CLR RI MOV A,SUBF;取数据 CJNE A,#11H, WAIT ;检查数据是否接收完毕 JC OVER JB RB8,PCH1;判断奇偶校验是否出错 JB P,PER SJMP PCH2 PCH1:JNB P,PER PCH2:MOV @R0,A;取数据,启动接收 INC R0 DJNZ R7,WAIT;判断数据块是否接收完 OVER: MOV RI,0 RET PER: SET PSW.5;奇偶校验出错 RET (3)单片机发送子程序 ? . TRSUB:CLR TI MOV A,@R0;取数据A MOV C,P 加奇偶校验位 MOV TB8,C MOV SUBF,A;取数据,启动发送 WAIT:JBC TI,CONT;判断发送中断标志 SJMP WAIT CONT:INC R0 DJNZ R7, WAIT R
文档评论(0)