|||
;***********************************************************************************
;子程序名:SWITCH_BCD
;功 能:将拨码开关的4位HEX转换为按位编号的加法BCD
;说 明:转换原理为将对应的位数相加得到一个0-9的数字
; D3=4,D2=3,D1=2,D0=1
; 00H=0: 01H=1: 02H=2: 03H=3: 04H=3: 05H=4: 06H=5: 07H=6: 08H=4:
; 09H=5: 0AH=6: 0BH=7: 0CH=7: 0DH=8: 0EH=9: 0FH=0:
;调 用:无
;堆栈需求:两字节
;入口参数:R0: 存放转换数据的首地址 R7: 需转换数据的个数
;修 改 值:R0,R7
;返 回 值:原地址单元
;程序设计:李尚
;设计时间:2005.03.16
;版 本 号:20050316
;***********************************************************************************
SWITCH_BCD:
CJNE @R0,#00H,SB1
MOV @R0,#00H
AJMP SWITCH_NEXT
SB1:
CJNE @R0,#01H,SB2
MOV @R0,#01H
AJMP SWITCH_NEXT
SB2:
CJNE @R0,#02H,SB3
MOV @R0,#02H
AJMP SWITCH_NEXT
SB3:
CJNE @R0,#03H,SB4
MOV @R0,#03H
AJMP SWITCH_NEXT
SB4:
CJNE @R0,#04H,SB5
MOV @R0,#03H
AJMP SWITCH_NEXT
SB5:
CJNE @R0,#05H,SB6
MOV @R0,#04H
AJMP SWITCH_NEXT
SB6:
CJNE @R0,#06H,SB7
MOV @R0,#05H
AJMP SWITCH_NEXT
SB7:
CJNE @R0,#07H,SB8
MOV @R0,#06H
AJMP SWITCH_NEXT
SB8:
CJNE @R0,#08H,SB9
MOV @R0,#04H
AJMP SWITCH_NEXT
SB9:
CJNE @R0,#09H,SB10
MOV @R0,#05H
AJMP SWITCH_NEXT
SB10:
CJNE @R0,#0AH,SB11
MOV @R0,#06H
AJMP SWITCH_NEXT
SB11:
CJNE @R0,#0BH,SB12
MOV @R0,#07H
AJMP SWITCH_NEXT
SB12:
CJNE @R0,#0CH,SB13
MOV @R0,#07H
AJMP SWITCH_NEXT
SB13:
CJNE @R0,#0DH,SB14
MOV @R0,#08H
AJMP SWITCH_NEXT
SB14:
CJNE @R0,#0EH,SB15
MOV @R0,#09H
AJMP SWITCH_NEXT
SB15:
CJNE @R0,#0FH,SB16
MOV @R0,#00H
AJMP SWITCH_NEXT
SWITCH_NEXT:
INC R0
DJNZ R7,SWITCH_BCD
RET