数码管0-99计数器》 "eczd$~l
p f!z0{$a
a_bit equ 20h ;个位数存放处 'vnjja~ra
b_bit equ 21h ;十位数存放处 hl.t9o
temp equ 22h ;计数器寄存器 {]u4w/_u>
qgk}xpvc
star: MOV temp,#0 ;初始化计数器 nawlw-/)
stlop: acall display g<k[:{c
inc temp $uhhp\f
MOV a,temp w.xvj=l'
cjne a,#100,next ;=100重来 "n1h`s@f^
MOV temp,#0 zg-l.\_cp+
next: ljmp stlop b3xct^
;显示子程序 #qb0z}s
display: MOV a,temp ;将temp中的十六进制数转换成10进制 {yb!~8
MOV b,#10 ;10进制/10=10进制 w+~sx`
div ab %;xg=
MOV b_bit,a ;十位在a tqaj,$[u
MOV a_bit,b ;个位在b dx1u/`y
i3q>x5:
MOV dptr,#numtab ;指定查表启始地址 -v4@.r
MOV r0,#4 #"s .j4<,
dpl1: MOV r1,#250 ;显示1000次 d9n!{j40d
dplop: MOV a,a_bit ;取个位数 by27w a<1
MOVc a,@a+dptr ;查个位数的7段代码 >8u=2\k5
MOV p0,a ;送出个位的7段代码 swp\c
clr p2.7 ;开个位显示 pf* ^r%;
acall d1ms ;显示1ms ihs| 1'k
setb p2.7 ><2nkwiug
MOV a,b_bit ;取十位数 @9a7&?ka
MOVc a,@a+dptr ;查十位数的7段代码 ) d8tww(4
MOV p0,a ;送出十位的7段代码 4dg1`}p_tn
clr p2.6 ;开十位显示 k`ofh7!::
acall d1ms ;显示1ms /1;[fb~
setb p2.6 tno nux7p
djnz r1,dplop ;100次没完循环 f[dv 1{
djnz r0,dpl1 ;4个100次没完循环 ,1k9@
ret kl@4r1x$
;1ms延时(按12mhz算) qhb#@|3
;==================================================== -@2as\
d1ms: MOV r7,#80 ->< ?qe
djnz r7,$ f\ /zn+y5
ret [qk<ghkc
;7段数码管各划的数字排列表 0%|;pm w
numtab: db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h l4j4: ss
;0 1 2 3 4 5 6 7 8 9 9~e9|{\$^
end