初学者:问题出在哪里?请老师们指教
我在用89C51做一个时钟的实验时,在实验板上运行时,每分钟的时间要慢5秒左右,30H是分钟的个
位,31H是分钟的十位,32H是小时的个位,33H是小时的十位,晶振为6MHZ,按照定时时间来算这几
句应该是不要的inc 21h
mov a,21h
cjne a,#10,toreti
mov 21h,#0
但是不要的话时间都少了一个数量级,但加上去的话每分钟还是要慢5秒左右,真是不知问题出在
哪儿,请老师们指点,谢谢!!
ORG 0000H ;程序入口地址
AJMP MAIN
ORG 000BH
AJMP WT0
ORG 20H
main:mov sp,#40h
mov 20h,#0
mov 21h,#0
mov 22h,#0
mov 30h,#0
mov 31h,#0
mov 32h,#2
mov 33h,#1
mov th0,#0f8h
mov tl0,#30h
mov tmod,#01h
clr p2.4
setb ea
setb et0
setb tr0
setb it0
setb ex0
pk1:jb p2.0,pk2 ;小时设定
jnb p2.0,pk1
inc 32h
mov a,33h
mov b,#10
mul ab
add a,32h
cjne a,#24,dd1
mov 32h,#0
mov 33h,#0
dd1:mov a,32h
cjne a,#10,pk2
mov 32h,#0
inc 33h
pk2:jb p2.1,pk1 ;分钟设定
jnb p2.1,pk2
inc 30h
mov a,31h
mov b,#10
mul ab
add a,30h
cjne a,#60,dd2
mov 30h,#0
mov 31h,#0
dd2:mov a,30h
cjne a,#10,pk1
mov 30h,#0
inc 31h
ajmp pk1
WT0:push acc
push psw
mov th0,#0f8h
mov tl0,#30h ;50ms
inc 20h
mov a,20h
cjne a,#250,toreti ;1s
mov 20h,#0
inc 21h
mov a,21h
cjne a,#10,toreti ;????
mov 21h,#0
inc 22h
mov a,22h
cjne a,#60,toreti
mov 22h,#0
inc 30h ;分钟个位
mov a,30h
cjne a,#10,toreti
mov 30h,#0
inc 31h
mov a,31h
cjne a,#6,toreti
mov 31h,#0
inc 32h
mov a,33h
mov b,#10
mul ab
add a,32h
cjne a,#24,el0
mov 32h,#0
mov 33h,#0
ajmp toreti
el0:mov a,32h
cjne a,#10,toreti
mov 32h,#0
inc 33h
toreti:acall led
pop psw
pop acc
reti
led: mov r7,#0fh ;显示程序
mov r0,#30h
mov DPTR,#TAB
mov a,@r0
movc a,@a+DPTR
mov p1,a
clr p3.0
djnz r7,$
mov r7,#0fh
inc r0
setb p3.0
mov a,@r0
movc a,@a+DPTR
mov p1,a
clr p3.1
djnz r7,$
mov r7,#0fh
inc r0
setb p3.1
mov a,@r0
movc a,@a+DPTR
mov p1,a
clr p3.2
djnz r7,$
mov r7,#0fh
inc r0
setb p3.2
mov a,@r0
movc a,@a+DPTR
mov p1,a
clr p3.3
djnz r7,$
setb p3.3
ret
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
end
发表时间:2002年9月27日0:39:00