- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]项目五、串行通信应用
项目五、串行通信应用 波特率/(b/s) fosc/MHz SMOD 定时器1 C/ 模式 初始值 方式0:1 方式2:375 k 方式1、3:62.5 k 19.2 k 9.6 k 4.8 k 2.4 k 1.2 k 137.5 k 110 110 12 12 12 11.059 11.059 11.059 11.059 11.059 11.986 6 12 × 1 1 1 0 0 0 0 0 0 0 × × 0 0 0 0 0 0 0 0 0 × × 2 2 2 2 2 2 2 2 1 × × FFH FDH FDH FAH F4H E8H 1DH 72H FEEBH 表5-4 定时器1产生的常用波特 (六)双机通信设计 1、双机通信硬件电路 图5-10 双机异步通信接口电路 为了增加通信距离,减少通道和电源干扰,可以在通信线路上采用光电隔离的方法, 利用RS-422A标准进行双机通信,实用的接口电路见书图5-11所示。 2、双机通信软件编程 对于双机异步通信的程序通常采用两种方法:查询方式和中断方式。下面通过程序示例介绍这两种方法。 (1)查询方式 甲机发送 编程将甲机片外1000H~101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375kb/s,晶振为12MHz,所以SMOD=1。 参考发送子程序如下: ? MOV SCON,#80H ;设置串行口为方式2 ? MOV PCON,#80H ;SMOD=1 ? MOV DPTR,#1000H ;设数据块指针 ? MOV R7,#20H ;设数据块长度 START: MOVX A,@DPTR ;取数据给A ? MOV C,P ? ? MOV TB8,C ;奇偶位P送给TB8 ? MOV SBUF,A ;数据送SBUF,启动发送 WAIT: JBC TI,CONT ;判断一帧是否发送完。若发送完,清TI,取下一个数据 ? AJMP WAIT ;未完等待 CONT: INC DPTR ;更新数据单元 ? DJNZ R7,START ;循环发送至结束 ? RET ? ? 乙机接收 编程使乙机接收甲机发送过来的数据块,并存入片内50H~6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。 在进行双机通信时,两机应采用相同的工作方式和波特率。参考接收子程序如下: ? MOV SCON,#80H ;设置串行口为方式2 ? MOV PCON,#80H ;SMOD=1 ? MOV R0,#50H ;设置数据块指针 ? MOV R7,#20H ;设置数据块长度 ? SETB REN ;启动接收 WAIT: JBC RI,READ ;判断是否接收完一帧。若完,清RI,读入数据 ? AJMP WAIT ;未完等待 READ: MOV A,SBUF ;读入一帧数据 ? JNB PSW.0,PZ ;奇偶位为0则转 ? JNB RB8, ERR ;P=1,RB8=0,则出错 ? SJMP RIGHT ;二者全为1,则正确 PZ: JB RB8, ERR ;P=0,RB8=1,则出错 RIGHT: MOV @R0, A ;正确,存放数据 ? INC R0 ;更新地址指针 ? DJNZ R7, WAIT ;判断数据块是否接收完 ? CLR PSW.5 ;接收正确,且接收完清F0标志 ? RET ? ;返回 ERR: SETB PSW.5 ;出错,置F0标志为1 ? RET ? ;返回 (2)中断方式 在很多应用中,双机通信的接收方都采用中断的方式来接收数据,以提高CPU的工作效率;发送方仍然采用查询方式发送。 编程将甲机片内60H~6FH单元的数据块从串行口发送,在发送之前将数据块长度发送给乙机,当发送完16个字节后,再发送一个累加校验和。定义双机串行口按方式1工作,晶振为11.059MHz,波特率为2400b/s,定时器1按方式2工作。经计算或查表5-4得到定时器预置值为0F4H,SMOD=0。 参考发送子程序如下: ? MOV TMOD,#20H ;设置定时器1为方式2 ? MOV TL1,#0F4H ;设置预置值 ? MOV TH1,#0F4H ? ? SETB TR1 ;启动定时器1 ? MOV SCON,#50H ;设置串行口为方式1,允许接收 START: MOV R0,#60H ;设置数据指针
您可能关注的文档
最近下载
- 2025届安徽省A10联盟高三上学期开学考-英语试题(含答案).docx VIP
- 周围神经损伤的护理.pptx VIP
- 设计院电气专业面试常见问题汇总与标准答案.pdf VIP
- 2021年福建省福州一中自主招生数学试卷.pdf VIP
- 化学-安徽省1号卷A10联盟2025届高三上学期8月开学摸底考试试题和答案.docx VIP
- 安徽省A10联盟2025届高三上学期8月开学摸底考试生物试卷(含答案).docx VIP
- 2025年营养与膳食.pptx VIP
- 安徽省A10联盟2025届高三上学期8月开学摸底考试地理试卷(含答案).pdf VIP
- 中国通史16.ppt VIP
- 车租赁代驾合同.doc VIP
文档评论(0)