A-A+

编制一个串行方式2接收子程序 接收上例发送的数据 并核对奇偶校验位 接收核对正确 发出回复信

2022-08-13 22:12:38 问答库 阅读 199 次

问题详情

编制一个串行方式2接收子程序,接收上例发送的数据,并核对奇偶校验位,接收核对正确,发出回复信号00H,存首址为2000H的外RAM中;发现错误,发出回复信号册,并等待重新接收。

参考答案

程序如下:
ORG 0000H ;复位地址
LJMP BRXD ;转乙机初始化程序
ORG 0023H ;串行中断入口地址
LJMP BIS ;转乙机串行中断服务程序
ORG 0100H ;初始化程序首地址
BRXD:MOV SCON,#90H ;置串行方式2,允许接收
MOV PCON,#00H ;置SMOD=0
MOV DPTR,#2000H ;置接收数据区首址
MOV IE,#10010000B ;串口开中
LJMP MAJN ;转主程序,并等待甲机发送数据(串口中断)
ORG 0200H ;乙机中断服务程序首地址
BIS:JNB TI,BISR ;判发送/接收中断?接收中断,转接收处理
CLR TI ;发送中断,清发送中断标志
RETI ;串行中断返回
BISR:CLR RI ;清接收中断标志
MOV A,SBUF ;读甲机发送信号,并在PSW中产生接收数据的奇偶值
JB PSW.0,ONE ;P=1,转另判
JB RB8,ERR ;P=0,RB8=1,接收有错;P=0,RB8=0,接收正确
RIT:MOVX @DPTR,A ;存接收数据
INC DPTR ;指向下一数据存储单元
MOV A,#00H ;置回复信号正确
FDBK:MOV SBUF,A ;发送回复信号
RETI ;串行中断返回
ONE:JNB RB8,ERR ;P=1,RB8=0,接收有错
SJMP RIT ;P=1,RB8=1,接收正确,转存接收数据
ERR:MOV A,#FFH ;接收有错,置回复信号错误标志
SJMP FDBK ;转发送回复信号

考点:奇偶,串行