结构推理 编制一个串行方式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        ;转发送回复信号
【答案解析】