📄 qiangdaqi.asm
字号:
;实验 抢答器
;weikun /2007/2/16
; QQ:35028935
org 0000h
ajmp main
org 0030h
main:
mov dptr,#tab ;将表头放入DPTR
lcall key ;调用键盘扫描程序
ST: CLR P2.1 ;开显示
movc a,@a+dptr ;查表后将键值送入ACC
mov p0,a ;将Acc值送入P0口
mov r2,#0ffh
lin1: ;输出声音
clr p3.3
lcall d25ms ;调用延时程序
cpl p3.3
lcall d25ms ;调用延时程序
cpl p3.3
djnz r2,lin1
cly: nop
sjmp cly ;反复循环显示
KEY: LCALL KS ;调用检测按键子程序
JNZ K1 ;有键按下继续
LCALL DELAY2 ;无键按调用延时去抖
AJMP KEY ;返回继续检测按键
K1: LCALL DELAY2
LCALL DELAY2 ;有键按下延时去抖动
LCALL KS ;再调用检测按键程序
JNZ L6 ;确认有按下进行下一步
AJMP KEY ;无键按下返回继续检测
L6: JB P1.0,L1 ;P1.0等于1跳转到L1
MOV A,#00H ;将第1键值送入ACC
AJMP LK ;回主程序
L1: JB P1.1,L2 ;P1.1等于1跳转到L2
MOV A,#01H ;将第2键值送入ACC
AJMP LK ;回主程序
L2: JB P1.2,L3 ;P1.2等于1跳转到L3
MOV A,#02H ;将第3键值送入ACC
AJMP LK ;跳转到键值处理程
L3: MOV A,#03H ;将第4键值送入ACC
LK:
RET
KS: MOV P1,#0FH ;将P1口高四位置0低四位值1
MOV A,P1 ;读P1口
XRL A,#0FH ;将A中的值与A中的值相异或
RET ;子程序返回
DELAY2: ;40ms延时去抖动子程序
MOV R5,#08H
L7: MOV R6,#0FAH
L8: DJNZ R6,L8
DJNZ R5,L7
RET
d25ms:
MOV R6,#0FFH;延时子程序
lin: DJNZ R6,lin
RET
tab:
db 7eh,0a2h,62h,74h
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -