⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 键盘.asm

📁 键盘扫描输出点初始化
💻 ASM
字号:
org 0000h
ajmp main
org 0030h
main:
setb p3.3   ;键盘扫描输出点初始化
mov r2,#14h
m1:
clr p3.5    ;74LS164输出端初始化置"1"
nop
nop
nop
nop
setb p3.5
nop
nop
nop
nop
djnz r2,m1
m2:
mov dptr #tab  ;将表头防入DPTR  ICALLKEY;调用键盘扫描程序
clr p3.3    ;输出0电平进行初始化扫描
mov r2,#14h   ;共20个按键
mov r3,#00h  ;键值初始化置"0"
m3:
clr p3.5    ;移位时钟脉冲开始
nop
nop
nop
setb p3.5
nop
nop
setb p3.3
nop
nop       ;每移一位,键盘接收端检测一次  

key:
jnb p3.4,delay2   ;检测接收端是否为"0",如是去抖程序
lcall delay2    ;再次调用去抖程序
jnb p3.4,k1   ;如是转向K1
inc r3
djnz r2,m3    ;否则转向M3
ljmp m2 
k1:
mov a,r3
add a,a    ;指令为二个字节
jmp @a+dptr  ;转向键值入口地址表
tab:
ajmp opr1
ajmp opr2
ajmp opr3
ajmp opr4
ajmp opr5
ajmp opr6
ajmp opr7
ajmp opr8
ajmp opr9
ajmp opr10
ajmp opr11
ajmp opr12
ajmp opr13
ajmp opr14
ajmp opr15
ajmp opr16
ajmp opr17
ajmp opr18
ajmp opr19
ajmp opr20
opr1:
ljmp m1   ;一键轮空
opr2:
lcall display
lcall start
ljmp m1
opr3:
lcall display
lcall putin
ljmp m1
opr4:
jnb psw.5,n0
lcall display
lcall key0
n0:
ljmp m1
opr5:
lcall display
lcall exit
ljmp m1
opr6:
ljmp m1
opr7:
lcall display
lcall enter
ljmp m1
opr8:
jnb psw.5,n1
lcall display
lcall key1
n1:
ljmp m1
opr9:
jnb psw.5,n2
lcall display
lcall key2
n2:
ljmp m1
opr10:
jnb psw.5,n3
lcall display
lcall key3
n3:
ljmp m1
opr11:
ljmp m1
opr12:
lcall display
lcall scanf
ljmp m1
opr13:
jnb psw.5,n4
lcall display
lcall key4
n4:
ljmp m1
opr14:
jnb psw.5,n5
lcall display
lcall key5
n5:
ljmp m1
opr15:
jnb psw.5,n6
lcall display
lcall key6
n6:
ljmp m1
opr16:
ljmp m1
opr17:
lcall display
lcall clean
ljmp m1
opr18:
jnb psw.5,n7
lcall display
lcall key7
n7:
ljmp m1
opr19:
jnb psw.5,n8
lcall display
lcall key8
n8:
ljmp m1
opr20:
jnb psw.5,n9
lcall display
lcall key9
n9:
ljmp m1

delay2:    ;去抖延时程序
mov r5,#08h
l7:
mov r6,#0fah
l8:
djnz r6,l8
djnz r5,l7
ret
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -