8
20. 根据图7.12,编制一个在两个数码管上显示1和2的显示程序。 答:程序:
MOV P1,#11100001B ;在第一个数码管显示1 MOV P1,#11010010B ;在第二个数码管显示2
21. 根据图8.27,用汇编语言编制一个在8个数码管上轮流显示1~8的程序。
答:程序如下:显示子程序DISPLAY见书,在字段码表最后放不显示的编码00H,显示缓冲区50H~57H;显示效果:在第一个数码管上显示1后,第一个数码管不显示,然后在第二个数码管上显示2,依此类推,直到在第八个上显示8。然后重复。
MOV R1,#50H MOV R4,#08H MOV A,#10H LOOP: MOV @R1,A ;初始化为全部不显示。
INC R1 DJNZ R4,LOOP START:
MOV R2,#01H MOV R4,#08H MOV R1,#50H LOOP2:
MOV A,R2 MOV @R1,A MOV R5,#0FFH LOOP1:
LCALL DISPLAY DJNZ R5,LOOP1 INC R1 INC R2
DJNZ R4,LOOP2
SJMP START END
22 根据图8.27,用C语言编制一个在8个数码管上轮流显示1~8的程序。
#include <reg51.h>
#include <absacc.h> #define uchar unsigned char
//定义绝对地址访问