HEX2BCD_ :
;把TH0 TL0的數(shù)值轉(zhuǎn)成十進(jìn)制, 分別存入R4(高位) R3 R2 R1 R0。
mov r1,inl
mov r0,inh
;------------------------------------------------------------------
CALL HEX2BCD ;調(diào)用子程序把R0 R1中的數(shù)字,轉(zhuǎn)換成BCD碼,送到R2 R3 R4
;-------下面,把萬千百十個(gè)位,分別存入R4 R3 R2 R1 R0
MOV A, R4
MOV B, #16
DIV AB ;除以16,目的是分離出高、低四位
MOV R1, A ;存放十位
MOV R0, B ;存放個(gè)位
MOV A, R2
MOV R4, A ;存放萬位
MOV A, R3
MOV B, #16
DIV AB
MOV R3, A
MOV R2, B
mov dm4,r4
mov dm3,r3
mov dm2,r2
mov dm1,r1
mov dm0,r0
RET
;------------------------------------------------------------------
;兩個(gè)字節(jié)的二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼的程序如下:
;功能:16位二進(jìn)制數(shù)變換成為 BCD 碼;
;入口:R0 R1 中是 16 位二進(jìn)制數(shù),其中R0中是高 8 位;
;出口:R2 R3 R4 中是 BCD 碼,其中R2中是萬位,R3中是千、百位,R4中是十、個(gè)位。
HEX2BCD:
CLR A
MOV R2, A ;先清零
MOV R3, A
MOV R4, A
MOV R5, #16 ;共轉(zhuǎn)換十六位數(shù)
LOOP2:
CLR C
MOV A, R1 ;從待轉(zhuǎn)換數(shù)的高端移出一位到Cy
RLC A
MOV R1, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R4 ;送到BCD碼的低端
ADDC A, R4 ;帶進(jìn)位加。自身相加,相當(dāng)于左移一位
DA A ;十進(jìn)制調(diào)整,變成BCD碼
MOV R4, A
MOV A, R3
ADDC A, R3
DA A
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP2 ;共轉(zhuǎn)換十六位數(shù)
RET
;------------------------------------------------------------------
;--------------------------------------------------
;T0計(jì)數(shù)中斷
T0_interrupt:
CLR TF0
INC T0_COUNT ;T0計(jì)數(shù)中斷數(shù)加1
RETI