;----------------------------------- DIS: PUSH DPH PUSH DPL SETB RS1 MOV R0,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#LS0 LS2: MOV A,@R0 MOVC A,@A+DPTR MOV R1,#0DCH MOVX @R1,A MOV A,R2 inc R1 MOVX @R1,A LS1: DJNZ R3,LS1 CLR C RRC A MOV R2,A DEC R0 JNZ LS2 movx @r0,a dec r0 cpl a movx @r0,a CLR RS1 POP DPL POP DPH RET
;---------------------------------------------
LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0C6H DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;---------------------------------------------
-20-
KEY: SETB RS1 MOV R2,#0FEH MOV R3,#08H MOV R0,#00H LP1: MOV R1,#0DDH MOV A,R2 MOVX @R1,A RL A MOV R2,A inc r1
MOVX A,@R1 CPL A ANL A,#0FH JNZ LP0 INC R0 DJNZ R3,LP1 XP33: MOV A,#20H XP3: mov r2,a clr a mov r1,#0ddh movx @r1,a mov a,r2 CLR RS1 RET ;---------------------------- LP0: CPL A JB ACC.0,XP0 MOV A,#00H SJMP LPP XP0: JB ACC.1,XP1 MOV A,#08H SJMP LPP XP1: JB ACC.2,XP2 MOV A,#10H
-21-
SJMP LPP XP2: JB ACC.3,XP33 MOV A,#18H LPP: ADD A,R0 sjmp xp3 ;-------------------------------- LEDP: MOV 50H,#7EH MOV A,#10H MOV R0,#79H LEDS:
MOV @R0,A
INC R0
CJNE R0,#7EH,LEDS INC A MOV @R0,A RET
;-------------------------------- LCK0: LCALL X2 JB ACC.4,LDFC LCALL X3 DB 79H,7EH SJMP LCK0
LDFC: CJNE A, #16H,LCK0 MOV A, 7AH SWAP A ORL A, 79H MOV 22H, A CJNE A, #60H,LE09 LE09: JNC LE24 MOV A, 7CH SWAP A ORL A, 7BH MOV 21H, A CJNE A, #60H,LE15 LE15: JNC LE24
-22-
MOV A, 7EH SWAP A ORL A, 7DH MOV 20H, A CJNE A, #24H,LE21 LE21: JNC LE24 RET
;--------------------------------- LE24: CLR 8CH LJMP CHK00 ;-------------------------------- END
实验十一 二进制转换到BCD
一、实验目的
将给定的一个二进制数,转换成二进制编码的十进制(BCD)码。
二、实验内容
掌握简单的数值转换算法,基本了解数值的各种表达方法。
三、程序框图
四、实验过程
本程序中需要转换的二进制数为FAH。由于八位内存存储的最大数据为FFH即十进制的255,故所转换的十进制数只有百位、十位和个位。百位的BCD码即待转换二进制数除以100得到的商,余数保存;用余数除以10得到十位BCD码,所得余数即为个位BCD码。将转换后BCD码三位装入20H-22H内存即可。
五、实验结果及分析
-23-