内容发布更新时间 : 2024/12/27 18:13:10星期一 下面是文章的全部内容请认真阅读。
anl a,#0fh lcall table mov dptr,# 0FEFFh movx @dptr,a acall delay
mov a,#85h ;指向第六位数码管 mov dptr,# 0FFFFh movx @dptr,a
mov a,#0f7h ; mov dptr,# 0FEFFh movx @dptr,a
mov a,#86h ; mov dptr,# 0FFFFh movx @dptr,a
mov a,r2 ; swap a anl a,#0fh lcall table mov dptr,# 0FEFFh movx @dptr,a acall delay
mov a,#87h ; mov dptr,# 0FFFFh movx @dptr,a
mov a,r2 ; anl a,#0fh lcall table mov dptr,# 0FEFFh movx @dptr,a lcall delay
显示‘.’ 指向第七位数码管 取r2中的高四位内容并送数码管显示 指向第八位数码管 取r2中的低四位内容并送数码管显示 25
inc dptr
loop1:movx a,@dptr ;判断键盘有无程序段 anl a,#07h
cjne a,#00h,loop2 ;有按键则转到loop2 ajmp last
loop2:mov dptr,# 0FEFFh ;有按键则将键值送累加器A movx a,@dptr
cjne a,#0c1h,loop3 ;判断是否按键'0'按下 mov a,r4
add a,#1 ;按键'0'按下则时加1 da a mov r4,a
cjne r4,#24h,loop3 mov r4,#00h
loop3:cjne a,#0c8h,loop4 ;判断是否按键'0'按下 mov a,r3
add a,#1 ;按键'1'按下则分加1 da a mov r3,a
cjne r3,#60h,loop4 mov r3,#00h
loop4:cjne a,#0c9h,last ;判断是否按键'0'按下 mov a,r2
add a,#1 ;按键'2'按下则秒加1 da a mov r2,a
cjne r2,#60h,last mov r2,#00h last:ljmp disp
delay:mov r6,#10h ;延时子程序
26
delay0:mov r5,#10h delay1:djnz r5,delay1 djnz r6,delay0 ret
table:inc a ;查表子程序 movc a,@a+pc ret
db 0ch,9fh,4ah,0bh,99h,29h,28h db 8fh,08h,09h
intt0:push psw ;中断服务子程序 push acc clr tr0 mov th0,#3ch mov tl0,#0b0h
djnz r7,next ;判断中断次数=20否? mov r7,#20 mov a,r2
add a,#1 ;秒加1 da a mov r2,a cjne r2,#60h,next
mov r2,#00h ;秒清0 mov a,r3
add a,#1 ;分加1 da a mov r3,a cjne r3,#60h,next
mov r3,#00h ;分清0 mov a,r4
27
add a,#1 ;时加1 da a mov r4,a cjne r4,#24h,next mov r4,#00h next:setb tr0 pop acc pop psw reti end
28