|
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:ADDR8279_1 EQU 0BFFFH
ADDR8279_2 EQU 0BFFEH
MOV 60H,#00H
MOV 61H,#00H
MOV 62H,#00H
MOV TMOD,#15H
MOV TL0,#00H
MOV TH0,#00H
MOV R7,#14H
MOV TL1,#00H
MOV TH1,#4CH
SETB TR1
SETB TR0
HERE:JBC TF1,NEXT1
SJMP HERE
NEXT1:MOV TL1,#00H
MOV TH1,#4CH
DJNZ R7,HERE
CLR TR0
CLR TR1
AJMP PINYU
PINYU:MOV R6,TH0
MOV R7,TL0
JNB TF0 ,NEXT2
MOV 60H,#06H
MOV 61H,#55H
MOV 62H,#36H
CLR TF0
NEXT2:LCALL HB2
MOV R7,#03H
MOV 65H,R3
MOV 66H,R4
MOV 67H,R5
MOV R0,#60H
MOV R1,#65H
LCALL BCDA
LCALL TRANS
LCALL LED
AJMP MAIN
;;(1) 標(biāo)號: BCDA 功能:多字節(jié)BCD碼加法
;;入口條件:字節(jié)數(shù)在R7中,被加數(shù)在[R0]中,加數(shù)在[R1]中。
;;出口信息:和在[R0]中,最高位進位在CY中。
;;;影響資源:PSW、A、R2 堆棧需求: 2字節(jié)
BCDA: MOV A,R7 ;;;取字節(jié)數(shù)至R2中
MOV R2,A
ADD A,R0 ;;;初始化數(shù)據(jù)指針
MOV R0,A
MOV A,R2
ADD A,R1
MOV R1,A
CLR C
BCD1: DEC R0 ;;;調(diào)整數(shù)據(jù)指針
DEC R1
MOV A,@R0
ADDC A,@R1 ;;;按字節(jié)相加
DA A ;;;十進制調(diào)整
MOV @R0,A ;;;和存回[R0]中
DJNZ R2,BCD1 ;;;處理完所有字節(jié)
RET
;;;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進制整數(shù)在R6、R7中。
;;出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。
;;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
HB2:CLR A ;;;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;;;轉(zhuǎn)換雙字節(jié)十六進制整數(shù)
HB3:MOV A,R7 ;;;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;;;BCD碼帶進位自身相加,相當(dāng)于乘2
ADDC A,R5
DA A ;;;十進制調(diào)整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;;;雙字節(jié)十六進制數(shù)的萬位數(shù)不超過6,不用調(diào)整
DJNZ R2,HB3 ;; ;處理完16bit
RET
TRANS: MOV R0,#62H
MOV R1,#40H
MOV R6,#03H
LAST:MOV A,@R0
ANL A,#0FH
MOV @R1,A
MOV A,@R0
ANL A,#0F0H
SWAP A
INC R1
MOV @R1,A
INC R1
DEC R0
DJNZ R6,LAST
RET
LED:MOV DPTR,#ADDR8279_1
MOV A,#0D1H
MOVX @DPTR,A
WAIT:MOVX A,@DPTR
JB ACC.7,WAIT
MOV A,#00H
MOVX @DPTR,A
MOV A,#2CH
MOVX @DPTR,A
MOV DPTR,#ADDR8279_1
MOV A,#90H
MOVX @DPTR,A
MOV R1,#40H
MOV R7,#06H
MOV DPTR,#ADDR8279_2
LOOP:MOV A,@R1
ADD A,#05H
MOVC A,@A+PC
MOVX @DPTR,A
INC R1
DJNZ R7,LOOP
RET
DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH
END
|
|