矩阵键盘汇编程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4*4矩阵键盘扫描汇编程序(基于51单片机)

// 程序名称:4-4keyscan.asm

;// 程序用途:4*4矩阵键盘扫描检测

;// 功能描述:扫描键盘,确定按键值。程序不支持双键同时按下,;// 如果发生双键同时按下时,程序将只识别其中先扫描的按键

;// 程序入口:void

;// 程序出口:KEYNAME,包含按键信息、按键有效信息、当前按键状态

;//================================================================= =====

PROC KEYCHK

KEYNAME DATA 40H ;按键名称存储单元

;(b7-b5纪录按键状态,b4位为有效位,

;b3-b0纪录按键)

KEYRTIME DATA 43H ;重复按键时间间隔

SIGNAL DATA 50H ;提示信号时间存储单元

KEY EQU P

3 ;键盘接口(必须完整I/O口)

KEYPL EQU P0.6 ;指示灯接口

RTIME EQU 30 ;重复按键输入等待时间

KEYCHK:

;//=============按键检测程序======================================== =====

MOV KEY,#0FH ;送扫描信号

MOV A,KE

Y ;读按键状态

CJNE A,#0FH,NEXT1 ;ACC<=0

FH

; CLR

C ;Acc等于0FH,则CY为0,无须置0

NEXT1:

; SETB

C ;Acc不等于0FH,则ACC

必小于0FH,

;CY为1,无须置1

MOV A,KEYNAME

ANL KEYNAME,#1FH ;按键

名称屏蔽高三位

RRC

A ;ACC带CY右移一位,纪录当前按键状态

屏蔽低五位

ORL KEYNAME,A ;保留按键状态

;//=============判别按键状态,决定是否执行按键扫描=================== =====

CJNE A,#0C0H,NEXT2 ;110按键稳定闭合,调用按键检测子程序

SJMP KEYSCAN

NEXT2:

CJNE A,#0E0H,NEXT3 ;111按键长闭合,重复输入允许判断

SJMP WAIT

NEXT3:

CJNE A,#0A0H,EXIT ;101干扰,当111长闭合处理

ORL KEYNAME,#0E0H

WAIT:

MOV A,KEYRTIME

JNZ EXI

T ;时间没到,退出

;//=============键盘扫描程序======================================== ======

KEYSCAN:

MOV R1,#

0 ;初始化列地址

MOV R3,#11110111B ;初始化扫描码

LOOP:

MOV A,R3

RL A

MOV R3,

A ;保留扫描码

MOV KEY,

A ;送扫描码

MOV A,KE

Y ;读键盘

屏蔽高四位

CJNE A,#0FFH,NEXT31 ;A不等于F FH,说明该列有按键动作

INC R

1 ;列地址加1,准备扫描下一列

CJNE R1,#4,LOOP ;列地址不等于4,扫描下一列

SJMP EXI

T ;没有按键,退出

;//=============按键判断对应位等于零,说明该行有按键按下============= =====

NEXT31:

JB ACC.0,NEXT32

MOV R2,#

0 ;第0行有按键

SJMP NEXT5

NEXT32:

JB ACC.1,NEXT33

MOV R2,#

1 ;第1行有按键

SJMP NEXT5

NEXT33:

JB ACC.2,NEXT34

MOV R2,#

2 ;第2行有按键

SJMP NEXT5

NEXT34:

MOV R2,#

3 ;第3行有按键

NEXT

5:

;计算按键地址

MOV A,R1

RL A

RL

A ;列地址乘4(每列对应4行)

ADD A,R

2 ;加行地址

MOV DPTR,#KEYTAB

MOVC A,@A+DPTR

ANL KEYNAME,#0E0H

ORL KEYNAME,A ;送

按键(送值的时候已经置按键有效)

MOV KEYRTIME,#RTIME ;送重复按

键等待时间

CLR KEYP

L ;打开指示灯

MOV SIGNAL,#10 ;送

信号提示时间(每次按键闪100ms)

EXIT:

MOV KEY,#0FFH ;置键盘接口高电平

RE

T ;退出

;//=============按键名称表========================================== ======

KEYTAB:

DB 1AH ;扫描码0,对应A ************************** ****************

DB 1BH ;扫描码1,对应B *

*

**

DB

相关文档
最新文档