非编码键盘的扫描程序设计(4)

2018-12-22 19:42

武汉理工大学《计算机控制技术》课程设计说明书

本次选择使用编程扫描的方法,所以在一开始的时候就要通过初始化程序定义8155PA、PB、PC口的工作方式。

本次选用软件方法去抖动,所以要编写去抖动延时程序。

5.2 程序流程图

程序流程图如图5-1所示。

图5-1 键盘扫描流程图

开 始 否 有键闭合? 是 调用去抖动延时子程序 否 有键闭合? 是 计算键值并入栈保护 否 闭合键释放? 是 键号 A,出栈 返 回 14

武汉理工大学《计算机控制技术》课程设计说明书

5.3源程序

ORG 0000H AJMP MAIN ORG 0100H MAIN: NOP ;8155控制字

KD1:MOV DPTR ,#7F00H ;PA,PBMOV A,#03H MOVX @DPTR,A

LCALL KEY1 ;KEY1:ACALL KS1 ; JNZ

LK1 ;

AJMP KEY1

;LK1:ACALL DELA12 ;12ms ACALL KS1 ; JNZ

LK2 ;

AJMP KEY1

;LK2:MOV R2,#0FEH ;R2=11111110B

MOV

R4,#00H

LK4:MOV DPTR,#7F01H MOV A,R2 MOVX @DPTR,A

INC DPTR ; INC DPTR MOVX

A,@DPTR

JB ACC.0,LONE ;

口为输出,PC口为输入调用扫描子程序 有无键按下子程序 有键按下,转去抖延时程序

无键按下,继续扫描

延时程序调用 判断键是否真正按下 有键按下,转逐列扫描

无键按下,继续扫描

存放键值

使PA0=0

指向PC口

读入行状态

第0行无键按下,转LONE

15

;R4 ; ;武汉理工大学《计算机控制技术》课程设计说明书

MOV A,#00H ;有键按下,设置行首键号 AJMP

LKP ;转求键号

;第1行无键按下,转LTWO

LONE:JB ACC.1,LTWO

MOV

A,#06H ;有键按下,设置行首键号

AJMP LKP ;转求键号

LTWO:JB ACC.2,LTHR MOV

A,#0CH ;

AJMP LKP LTHR:JB ACC.3,LFOR

MOV A,#012H

LFOR:JB ACC.4,LFIV MOV A,#18H LFIV:JB ACC.5,NEXT MOV A,#1EH

LKP: ADD ACC,R4 ;

PUSH ACC ;LK3: ACALL KS1 ; JNZ LK3 ; POP

ACC ;

AJMP OVER

;NEXT:INC R4 ; MOV

A,R2

; JNB ACC.7,KND

RL A ; MOV R2,A ;

AJMP LK4 ;LTHR:JB ACC.3,NEXT

MOV A,#18H ;LKP: ADD A,R4

;

;第2行无键按下,转LTHR

有键按下,设置行首键?

;转求键号

;第3行无键按下,查下一列 ;有键按下,设置行首键

求键号,键号=行首键号+列号 保护键号

等待键释放 键未释放,继续等待 键释放,键号送A

键扫描结束

列号加1,指向下一列

判断8列扫描完否

;8列扫描完,继续

扫描字左移一位 送扫描字 转下一列扫描

;第3行无键按下,查下一列

有键按下,设置行首键

求键号,键号=行首键号+列号

16

武汉理工大学《计算机控制技术》课程设计说明书

PUSH ACC ;保护键号

LK3:ACALL KS1 ;等待键释放

JNZ LK3 ;键未释放,继续等待 POP ACC ; 键释放,键号送A AJMP

OVER

;键扫描结束

NEXT:INC R4

;列号加1,指向下一列

MOV A,R2 JNB ACC.7,KND

; 8列扫描完,继续

RL A ;字左移一位 MOV R2,A ;送扫描字 AJMP LK4 ;下一列扫描

KND:AJMP KEY1

OVER:RET ;扫描结束 KS1:MOV DPTR,#7F01H ;向PA口

MOV A,#00H ;扫描字 MOVX

@DPTR,A

;描字送PA口

INC DPTR INC DPTR MOVX

;向PC口

A,@DPTR ;入PC口状态

CPL ;高电平表示有键按下 ANL A,#0FH ;蔽高4位 RET

;晶振为6MHz时的12ms延时子程序 DELL:MOV R7,#12 DEL:MOV R6,#250 NN:DJNZ R6,NN DJNZ R7,DEL RET

17

武汉理工大学《计算机控制技术》课程设计说明书

END

6调试记录及结果分析

程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。

在调试过程中,会发现程序中的错误,例如分号不是在英文输入状态下输入的,为使程序正常运行,要对这些错误进行改正。

编写的程序能够完成按键识别和去抖动的功能。

18


非编码键盘的扫描程序设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福寿山镇沿河风光带人行道及铺装项目建设可行性研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: