4个按键驱动程序.docx
《4个按键驱动程序.docx》由会员分享,可在线阅读,更多相关《4个按键驱动程序.docx(17页珍藏版)》请在冰豆网上搜索。
![4个按键驱动程序.docx](https://file1.bdocx.com/fileroot1/2023-1/9/98d5fc19-b6e1-4a36-bafb-441118dd7976/98d5fc19-b6e1-4a36-bafb-441118dd79761.gif)
4个按键驱动程序
;4个按键驱动程序
;4X4按键驱动程序
POUTEQUP2
KPINEQUP1
PDIG1EQUP3.0
VALDATA30H
KIDDATA31H
KTMPDATA32H
;*************************
;按键扫描程序;
;模块应用变量
;硬件连接端口:
KPIN
;返回按键值:
VAL
;按键处理应用功能程序:
KEYPFUN
;
;***********************
;内部使用变量定义:
KID=0,KTMP=0
MOVKID,#0
MOVKTMP,#0
MOVVAL,#0
;**********************
KEYS:
MOVDPTR,#KJMP
MOVA,KID
RLA
JMP@A+DPTR
KJMP:
AJMPKEYEN
AJMPKEYDEL
AJMPKEYSCAN
AJMPKEYUP
AJMPKEYFUN
MOVKID,#0
RET
KS:
MOVKPIN,#0FH
NOP
NOP
MOVA,KPIN
ANLA,#0FH
XRLA,#0FH
RET
KEYEN:
ACALLKS
JZKENEXT
MOVKTMP,#0
INCKID
KENEXT:
RET
KEYDEL:
INCKTMP
MOVA,KTMP
CJNEA,#30,KDEXT
MOVKTMP,#0
INCKID
KDEXT:
RET
KEYUP:
ACALLKS
JNZKUPEXT
INCKID
KUPEXT:
RET
;********************
;KPIN:
00001111=0FH
;KVAL:
00001111=F
;KVAL:
00001110=E
;KVAL:
00001101=D
;KVAL:
00001100=C
;KVAL:
00001011=B
;KVAL:
00001010=A
;KVAL:
00001001=9
;KVAL:
00001000=8
;KVAL:
00000111=7
;KVAL:
00000110=6
;KVAL:
00000101=5
;KVAL:
00000100=4
;KVAL:
00000011=3
;KVAL:
00000010=2
;KVAL:
00000001=1
KEYSCAN:
ACALLKS
JZKSEXT
MOVVAL,A
INCKID
RET
KSEXT:
MOVKID,#0
RET
;*************************;
KEYFUN:
MOVKID,#0
MOVDPTR,#KFUN
MOVA,VAL
RLA
JMP@A+DPTR
KFUN:
AJMPKFUNL
AJMPK1FUN
AJMPK2FUN
AJMPK3FUN
AJMPK4FUN
MOVVAL,#0
RET
KFUNL:
NOP
RET
K1FUN:
RET
K2FUN:
RET
K3FUN:
RET
K4FUN:
RET
;******************************
;********************
;KPIN:
00001111=0FH
;KVAL:
00001000=1
;KVAL:
00000100=2
;KVAL:
00000010=3
;KVAL:
00000001=4
;********************
KEYSCAN:
ACALLKS
JZKSEXT
MOVR4,#4
CLRC
KSLP:
RRCA
JCKVAL
DJNZR4,KSLP
KSEXT:
MOVKID,#0
RET
KVAL:
MOVVAL,R4
INCKID
RET
;***********************
;********************
;KPIN:
00001111=0FH
;KVAL:
00001000=4
;KVAL:
00000100=3
;KVAL:
00000010=2
;KVAL:
00000001=1
KEYSCAN:
ACALLKS
JZKSEXT
MOVR4,#0
CLRC
KSLP:
RRCA
JCKVAL
INCR4
CJNER4,#4,KSLP
KSEXT:
MOVKID,#0
RET
KVAL:
INCR4
MOVVAL,R4
INCKID
RET
;************************
;可用于拔码盘
;********************
;KPIN:
00001111=0FH
;KVAL:
00001111=F
;KVAL:
00001110=E
;KVAL:
00001101=D
;KVAL:
00001100=C
;KVAL:
00001011=B
;KVAL:
00001010=A
;KVAL:
00001001=9
;KVAL:
00001000=8
;KVAL:
00000111=7
;KVAL:
00000110=6
;KVAL:
00000101=5
;KVAL:
00000100=4
;KVAL:
00000011=3
;KVAL:
00000010=2
;KVAL:
00000001=1
KEYSCAN:
ACALLKS
JZKSEXT
MOVVAL,A
INCKID
RET
KSEXT:
MOVKID,#0
RET
;*************************
;***************************
;*************************
;KPIN:
D7-D0=0FEH
;D7D6D5D4
;D00123
;D14567
;D289AB
;D3CDEF
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0FEH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
MOVA,KPIN
MOVR4,#4
SETBC
KS2:
RLCA
JNCKVAL
INCR3
DJNZR4,KS2
MOVA,R2
JNBACC.3,KSCEXT
RLA
MOVR2,A
SJMPKS1
KVAL:
MOVVAL,R3
INCKID
RET
KSCEXT:
MOVKID,#0
RET
;************************
;*****************************
;KPIN:
D7-D0=0EFH
;D7D6D5D4
;D0C840
;D1D951
;D2EA62
;D3FB73
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0EFH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
MOVA,KPIN
MOVR4,#4
SETBC
KS2:
RRCA
JNCKVAL
INCR3
DJNZR4,KS2
MOVA,R2
JNBACC.7,KSCEXT
RLA
MOVR2,A
SJMPKS1
KVAL:
MOVVAL,R3
INCKID
RET
KSCEXT:
MOVKID,#0
RET
;************************
;**************************
;KPIN:
D7-D0=0EFH
;D7D6D5D4
;D0FB73
;D1EA62
;D2D951
;D3C840
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0EFH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
MOVA,KPIN
ANLA,#0FH
XRLA,#0FH
JZKS3
MOVR4,#4
SETBC
KS2:
RRCA
JCKVAL
DJNZR4,KS2
KSCEXT:
MOVKID,#0
RET
KS3:
MOVA,R2
JNBACC.7,KSCEXT
RLA
INCR3
MOVR2,A
SJMPKS1
KVAL:
MOVA,R3
RLA
RLA
DECA
ADDA,R4
MOVVAL,A
INCKID
RET
;*************************
;************************
;KPIN:
D7-D0=0EFH
;D7D6D5D4
;D0C840
;D1D951
;D2EA62
;D3FB73
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0EFH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
MOVA,KPIN
ANLA,#0FH
XRLA,#0FH
JZKS3
MOVR4,#0
SETBC
KS2:
RRCA
JCKVAL
INCR4
CJNER4,#4,KS2
KSCEXT:
MOVKID,#0
RET
KS3:
MOVA,R2
JNBACC.7,KSCEXT
RLA
INCR3
MOVR2,A
SJMPKS1
KVAL:
MOVA,R3
RLA
RLA
ADDA,R4
MOVVAL,A
INCKID
RET
;*************************
;*************************
;KPIN:
D7-D0=0FEH
;D7D6D5D4
;D00123
;D14567
;D289AB
;D3CDEF
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0FEH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
MOVA,KPIN
ANLA,#0F0H
XRLA,#0F0H
JZKS3
MOVR4,#0
SETBC
KS2:
RLCA
JCKVAL
INCR4
CJNER4,#4,KS2
KSCEXT:
MOVKID,#0
RET
KS3:
MOVA,R2
JNBACC.3,KSCEXT
RLA
INCR3
MOVR2,A
SJMPKS1
KVAL:
MOVA,R3
RLA
RLA
ADDA,R4
MOVVAL,A
INCKID
RET
;********************
;*******************************
;KPIN:
D7-D0=0EFH
;D7D6D5D4
;D03210
;D17654
;D2BA98
;D3FEDC
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0FEH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
MOVA,KPIN
ANLA,#0F0H
XRLA,#0F0H
JZKS3
MOVR4,#4
SETBC
KS2:
RLCA
JCKVAL
DJNZR4,KS2
KSCEXT:
MOVKID,#0
RET
KS3:
MOVA,R2
JNBACC.3,KSCEXT
RLA
INCR3
MOVR2,A
SJMPKS1
KVAL:
MOVA,R3
RLA
RLA
ADDA,R4
DECA
MOVVAL,A
INCKID
RET
;*********************
;************************
;KPIN:
D7-D0=0EFH
;D7D6D5D4
;D0C840
;D1D951
;D2EA62
;D3FB73
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0FEH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
JBKPIN.4,KSL1
MOVA,#0
SJMPKVAL
KSL1:
JBKPIN.5,KSL2
MOVA,#4
SJMPKVAL
KSL2:
JBKPIN.6,KSL3
MOVA,#8
SJMPKVAL
KSL3:
JBKPIN.7,KS2
MOVA,#12
KVAL:
ADDA,R3
MOVVAL,A
INCKID
RET
KSCEXT:
MOVKID,#0
RET
KS2:
MOVA,R2
JNBACC.3,KSCEXT
RLA
INCR3
MOVR2,A
SJMPKS1
;****************************
;**************************
;KPIN:
D7-D0=0FEH
;D7D6D5D4
;D03210
;D17654
;D2BA98
;D3FEDC
KEYSCAN:
ACALLKS
JZKSCEXT
MOVR2,#0EFH
MOVR3,#0
KS1:
MOVKPIN,R2
NOP
NOP
JBKPIN.0,KSL1
MOVA,#0
SJMPKVAL
KSL1:
JBKPIN.1,KSL2
MOVA,#4
SJMPKVAL
KSL2:
JBKPIN.2,KSL3
MOVA,#8
SJMPKVAL
KSL3:
JBKPIN.3,KS2
MOVA,#12
KVAL:
ADDA,R3
MOVVAL,A
INCKID
RET
KSCEXT:
MOVKID,#0
RET
KS2:
MOVA,R2
JNBACC.7,KSCEXT
RLA
INCR3
MOVR2,A
SJMPKS1
;************************