3.山东大学单片机答案.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
. 单片机原理 -答案 一、问答题 1、利用 MSC1211 或 8051 设计应答方式下的多机通讯程序。通讯参数:晶振 为 11.0592MHz , 9600 ,n ,8,1。通讯过程如下:主机首先发送从机地址,从机收到地址后进行比较, 如果地址相符,则将从机地址回发给主机作为应答信号。 主机收到从机的地址应答信号后,将内存单元中的120 个数据发送给从机,并 进行数据块校验(将各个数据进行异或) ,若校验正确,则从机发送 00H 给主机, 否则发送 0FFH 给主机,主机重新发送数据。 (应在适当的地方加程序注释) 解:主机程序如下: ORG 0000H LJMP MAINT ;跳至主程序入口地址 ORG 0023H ;串行口中断服务程序入口 LJMP INTST MAINT : MOV SCON ,#90H ;置工作方式 2,并允许接收 MOV TMOD , #20H ;置 T1 工作方式 2 MOV TH1, #0FDH MOV TL1, #0FDH MOV DPTR, #ADDR ;设置数据块首址 ADDR 的地址指针 MOV R0, #120 ;设置发送字节数 MOV R1, #00H ;设置校验和的初值 MOV R2, #NAME SETB TB8 ;置位 TB8 位,作为发送地址桢信息特征 ’. . SETB TR1 SETB EA ; CPU 开中断 SETB ES ;允许串行口中断 MOV A , R2 ;发送地址桢信息 MOV SBUF, A SJMP $ ;中断服务程序 INTST: MOV A , TB8 ;判断是发送地址还是数据,若为数据则转 LOOP0 CJNE A , 01H , LOOP0 CLR TI ;地址桢信息发送完后清发送中断 LOOP0 : JB RI, LOOP1 ;检查是否是接受中断?若 RI=1 则转入接受乙机发送应答 信息 CLR TI ;因 RI=0 ,表明是甲机发送中断数据的中断请求。 CPU 响应中断, 在中断服务程序中应清中断标志 MOV A, TB8; CJNE A, #01H ,LOO3 ;若为发送数据中断则转 LOOP3 继续发送数据 LJMP ENDT ;甲机发送一数据完毕跳至中断返回程序 LOOP1 : CLR RI ;清接受中断标志 MOV A, TB8 ;判断是发送地址还是数据,若为数据则转 LOOP2 CJNE A, #01H ,LOOP4 ;若 TB8 为 0 则接受的为乙机数据校验应答 MOV A, SBUF;取乙机的应答数据 CJNE A, @R2,LOOP2 ;若乙机应答信息不是从机地址, 则地址传送不正 确,则转 LOOP2 程序重新发送地址信息,否则清 TB8,发送数据 CLR TB8 LOOP3 : MOVX A, @DPTR ;取下一个数 MOV SBUF, A ;启动串行口,发送新的数据 ’. . XRL A,@R1 MOV @R1,A INC DPTR ;修改地址指针 DEC R0 ;修改发送字节数记数值 CJNE R0, #00H , ENDT ;判别 120 个字节数据都发送完没有。如果没有 发送完则跳至中断返回程序。继续发送 MOV A, @R1 MOV SBUF, A ;数据全部发送完毕则发送校验和 LJMP ENDT LOOP4 : MOV A, SBUF;取乙机的应答数据 CJNE A , #00H , LOOP5 ;若数据发送不正确, 则转 LOOP5 重新 发送 CLR ES ;全部发送完毕,禁止串行口中断 LOOP5 : MOV DPTR, #ADDR ;设置数据块首址 ADDR 的地址指针 MOV R0, #120 ;设置发送字节数 MOV R1, #00H ;设置校验和的初值 LJMP LOOP2 LOOP2 : MOV A, R2 ;发送地址桢信息 MOV SBUF, A RETI ENDT: RETI END 从机程序如下: ORG 0000H LJMP MAINR ;跳至主程序入口地址 ORG 0023H ;串行口中断服务程序入口 ’. . LJMP INTSR MAINR : MOV SCON ,#0B0H ;置工作方式 2,并允许接收 MOV TMOD , #20H ;置 T1 工作方式 2 MOV TH1, #0FDH MOV TL1, #0FDH MOV DPTR, #ADDR ;设置数据块接收首址为 ADDR MOV R0, #120 ;设置接收字节数 MOV R2, #NAME MOV R1, #00H ;设置校验和的初值 SETB RB8 ;置位 RB8 位,作为接受地址信息特征 SETB TR1 SETB EA ; CPU 开中断 SETB ES ;允许串行口中断

文档评论(0)

182****8891 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档