5.8 用89C51/89S51并行口设计显示一个数码的电路,是数码管循环显示“0”~“F”。
答:
ORG 0000H
MOV DPTR,#TAB AGAIN:MOV R0,#0 NEXT:MOV A,R0 MOVC A,@A+DPTR 答: 汇编语言 ORG 0000H MOV A,#08H
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A C语言程序
#include<reg51.h>
#define uint unsighed int #define uchar unsighed char main(){
uchar code tab1[]={0x3f,0s06…} uchar I,m; uint j;
+5V
MOV P3,A MOV R7,#0 DAY:NOP NOP
DJNZ R7,DAY INC R0
CJNZ R0,#10H,NEXT SJMP AGAIN
TAB:DB 3FH,06H… END
5.9 设计一个能显示4位数码的电路,并用C语言和汇编语言编程使“8”能跑马显示8遍。
MOV R2,#08H
AGAIN:MOV A,#01 NEXT:MOV P3,A ACALL DAY RL A
CJNE A,#10H,NEXT DJNZ R2,AGAIN TAB:DB 3FH,06H… END
for(m=0;m<8;i++){ P3=0x01;
For(i=0;i<4;i++){ P1=tab1[8] P3<<=1;
For(j=0;j<=25000;j++)
}}}
Vcc
10uf
RST
1KΩ
P1.0
P1.1P1.2P1.3P1.4P1.5P1.6P1.7
2
1
0373D6Q6GOE
g
a
g
a
89C51
P3.0P3.1P3.2P3.3P3.4
30pf×2
XTAL1TAL2GND