📄 带纠错码的串行通信子程序.asm
字号:
;功能:发送方将数据连发三此,接受方按位进行最大概率纠错。程序返回时,若标志位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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -