第1个回答 2009-06-03
下面的程序是59秒计数器的程序,是完全可以运行的,也是数码管实现的,你回去改改,应该好改的,思路是一样的。
sh_c equ 41h
g_c equ 42h
second equ 43h
dula bit P2.6;
wela bit P2.7;
mov second,#0
main:
mov a,second
cjne a,#60,loop1
mov second,#0;
loop1: mov a,second
mov b,#10
div ab
mov sh_c,a
mov g_c,b
mov 30h,#40h
loop: call display
djnz 30h,loop
inc second
ajmp main
delayxms:mov 52h,#4 ;50h,51h,52h用于延时 50h为参数x 延时1*x ms
delaya: mov 51h,#191
nop
nop
djnz 51h,$
djnz 52h,delaya
djnz 50h,delayxms
ret ;延时返回
display: ;显示程序
MOV DPTR,#TABLE
clr dula;
mov a,sh_c
MOVC a,@A+DPTR
mov p0,a ; ;显示十位
setb dula;
clr dula;
clr wela;
mov P0,#7eh;
setb wela;
clr wela;
mov 50h,#5h
call delayxms
mov a,g_c
MOVC a,@A+DPTR
mov p0,a ; ;显示个位
setb dula;
clr dula;
mov P0,#7dh;
setb wela;
clr wela;
mov 50h,#5h
call delayxms
ret
table:db 3fh,06h,5bh,4fh,66h,6dh,7d,07h,
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h