电子设计竞赛训练教程第四章42键盘显示电路设计 下载本文

内容发布更新时间 : 2024/5/25 4:13:12星期一 下面是文章的全部内容请认真阅读。

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