;功能:发送方将数据连发三此,接受方按位进行最大概率纠错。程序返回时,若标志位ERR返回为1,则表示 ;通信失败;否则。接收结果放在A寄存器中。 ;程序清单: JERR_COM:CLR ERR ;清除错误标志 MOV R6,#00H ;查询串行接受标志 RCH3:JB RI,RCH0 DJNZ R6,RCH3 SETB ERR SJMP RTEXT RCH0:CLR RI MOV 28H,SBUF MOV R6,#00H RCH1:JB RI,RCH4 DJNZ R6,RCH1 SETB ERR SJMP RTEXT RCH4:CLR RI MOV A,SBUF MOV R6,#00H RCH2:JB RI,RCH5 DJNZ R6,RCH2 SETB ERR SJMP RTEXT RCH5:CLR RI MOV B,SBUF LCALL BITCH RTEXT:RET ;串行发送子程序 DO:CLR TI MOV SBUF,A DO0:JNB TI ,DO0 CLR TI LCALL C_DELAY MOV SBUF,A DO1:JNB TI,DO1 CLR TI LCALL C_DELAY MOV SBUF,A DO2:JNB TI ,DO2 CLR TI LCALL C_DELAY RET ;按照最大概率确定每一位子程序 BITCH:MOV C,40H ANL C,ACC.0 JC RTCH0 MOV C,40H ANL C,B.0 JC RTCH0 MOV C,ACC.0 ANL C,B.0 CLR 40H JNC RTCH1 RTCH0:SETB 40H RTCH1:MOV C,41H ANL C,ACC.1 JC RTCH2 MOV C,41H ANL C,B.1 JC RTCH2 MOV C,ACC.1 ANL C,B.1 CLR 41H JNC RTCH3 RTCH2:SETB 41H RTCH3:MOV C,42H ANL C,ACC.2 JC RTCH4 MOV C,42H ANL C,B.2 JC RTCH4 MOV C,ACC.2 ANL C,B.2 CLR 42H JNC RTCH5 RTCH4:SETB 42H RTCH5:MOV C,43H ANL C,ACC.3 JC RTCH6 MOV C,43H ANL C,B.3 JC RTCH6 MOV C,ACC.3 ANL C,B.3 CLR 43H JNC RTCH7 RTCH6:SETB 43H RTCH7:MOV C,44H ANL C,ACC.4 JC RTCH8 MOV C,44H ANL C,B.4 JC RTCH8 MOV C,ACC.4 ANL C,B.4 CLR 44H JNC RTCH9 RTCH8:SETB 44H RTCH9:MOV C,45H ANL C,ACC.5 JC RTCH10 MOV C,45H ANL C,B.5 JC RTCH10 MOV C,ACC.5 ANL C,B.5 CLR 45H JNC RTCH11 RTCH10:SETB 45H RTCH11:MOV C,46H ANL C,ACC.6 JC RTCH12 MOV C,46H ANL C,B.6 JC RTCH12 MOV C,ACC.6 ANL C,B.6 CLR 46H JNC RTCH13 RTCH12:SETB 46H RTCH13:MOV C,47H ANL C,ACC.7 JC RTCH14 MOV C,47H ANL C,B.7 JC RTCH14 MOV C,ACC.7 ANL C,B.7 CLR 47H JNC RTCH15 RTCH14:SETB 47H RTCH15:MOV A,28H RET C_DELAY:NOP NOP RET