《数码管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
文章评论(0条评论)
登录后参与讨论