求各位前辈给写一个0-999秒的计时器的汇编程序,89c51的单片机

求各位前辈给写一个0-999秒的计时器的汇编程序,89c51的单片机,P0口控制段,P2口控制位,P3.3做按键控制启动.停止,要启用内部计数器的那种,11.0592MHZ的晶震.
求各位前辈帮帮忙
急!!!!!!
是要采用中断与定时/计数器的那种
请各位前辈帮帮忙

我这是(单片机0--999999计数器程序)稍微修改一下就可以了

org 00h
a_bit equ 30h ;个位数存放处
b_bit equ 31h ;十位数存放处
c_bit equ 32h ;百位数存放处
d_bit equ 33h ;千位数存放处
e_bit equ 34h ;万位数存放处
f_bit equ 35h ;十万位数存放处
org 0000h
ajmp star
org 0030h
star: MOV sp,#60h
clr p2.0
clr p2.7
MOV a,#00h ;;清0
MOV a_bit,a
MOV b_bit,a
MOV c_bit,a
MOV d_bit,a
MOV e_bit,a
MOV f_bit,a
stlop: acall display ;显示
inc a_bit
MOV a,a_bit
cjne a,#10,stlop;
MOV a_bit,#00h
inc b_bit
MOV a,b_bit
cjne a,#10,stlop
MOV b_bit,#00h
inc c_bit
MOV a,c_bit
cjne a,#10,stlop
MOV c_bit,#00h
inc d_bit
MOV a,d_bit
cjne a,#10,stlop
MOV d_bit,#00h
inc e_bit
MOV a,e_bit
cjne a,#10,stlop
MOV e_bit,#00h
inc f_bit
MOV a,f_bit
cjne a,#10,stlop
MOV f_bit,#00hajmp stlop;显示子程序
display:
MOV dptr,#numtab ;指定查表启始地址
MOV r0,#4dpl1:
MOV r1,#250 ;显示1000次
dplop: MOV a,a_bit ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
MOV p0,a ;送出个位的7段代码
clr p2.6 ;开个位显示
acall d1ms ;显示1ms
setb p2.6
MOV a,b_bit ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
MOV p0,a ;送出十位的7段代码
clr p2.5 ;开十位显示
acall d1ms ;显示1ms
setb p2.5
MOV a,c_bit ;取百位数
MOVC A,@A+DPTR ;查百位数的7段代码
MOV p0,a ;送出百位的7段代码
clr p2.4 ;开百位显示
acall d1ms ;显示1ms
setb p2.4
MOV a,d_bit ;取千位数
MOVC A,@A+DPTR ;查千位数的7段代码
MOV p0,a ;送出千位的7段代码
clr p2.3 ;开千位显示
acall d1ms ;显示1ms
setb p2.3
MOV a,e_bit ;取万位数
MOVC A,@A+DPTR ;查万位数的7段代码
MOV p0,a ;送出万位的7段代码
clr p2.2 ;开万位显示
acall d1ms ;显示1ms
setb p2.2
MOV a,f_bit ;取十万位数
MOVC A,@A+DPTR ;查十万位数的7段代码
MOV p0,a ;送出十万位的7段代码
clr p2.1 ;开十万位显示
acall d1ms ;显示1ms
setb p2.1
djnz r1,dplop ;100次没完循环
djnz r0,dpl1 ;4个100次没完循环
ret;1MS延时(按12MHZ算);
====================================================
D1MS: MOV R7,#2
DJNZ R7,$
RET;7段数码管各划的数字排列表
numtab:
db 21H,77H,0A2H,62H,74H,68H,28H, 73H,20H,60H; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-30
前段时间给别人了一个100天的倒计时程序。如果有意思可以写一个计时器,你需要的应该是正计时吧,到了999秒之后呢,是停止还是归零。
相似回答