- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)