MOVR4,#20DELAY:D1:MOVR5,#248R5, $DJNZDJNZR4,D1DJNZR3,DELAYRET;左移TAB:DBO1H,03H,O7H,OFH.1FH,3FH,7FH,OFFH.OAH;右移TAB1:DB 8OH.OCOH.OEOH.OFOH.OF8H.OFCH.OFEH,OFFH,OAH;闪烁TAB2:DB OFFH.OOH.OFFH.OOH.OFFH.OOH.OFFH.OOH.OAHTAB3:,流水追逐DBO1H.02H,O6H.O8H.10H.20H,60H,80H.OAHEND
DELAY: MOV R4,#20 D1: MOV R5,#248 DJNZ R5, $ DJNZ R4, D1 DJNZ R3, DELAY RET TAB : DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0AH ; 左移 TAB1: DB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH,0AH ; 右移 TAB2: DB 0FFH,00H,0FFH,00H,0FFH,00H,0FFH,00H,0AH ; 闪烁 TAB3: DB 01H,02H,06H,08H,10H,20H,60H,80H,0AH ; 流水追逐 END
5. 1.3矩阵式键盘应用实例【例3】4×4键盘硬件电路如下图所示。设计采用键盘扫描法得到键码值的程序。解:键盘输入程序设计有以下几个方面。1)判别键盘上有无键闭合其方法为:P1.0~P1.3输出0,然后读P1口,若高4位P1.4~P1.7全为1,则键盘上没有闭合键,若P1.4~P1.7不全为1,则有键处于闭合状态。(2)去除键的机械抖动其方法为:当判别到键盘上有键闭合后,延时一段时间再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合状态,否则认为键抖动
5.1.3 矩阵式键盘应用实例 【例3】 4×4键盘硬件电路如下图所示。设计采用键盘扫描法 得到键码值的程序。 解:键盘输入程序设计有以下几个方面。 (1) 判别键盘上有无键闭合 其方法为:P1.0~P1.3输出0,然后读P1口,若高4位 P1.4~P1.7全为1,则键盘上没有闭合键,若P1.4~P1.7不 全为1,则有键处于闭合状态。 (2) 去除键的机械抖动 其方法为:当判别到键盘上有键闭合后,延时一段时间再 判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处 于稳定的闭合状态,否则认为键抖动
(3)判别闭合键的键号其方法为:对键盘的行线进行扫描,P1.3~P1.0依次循环输出1110、1101、1011和0111,相应地读P1口,若高4位P1.7~P1.4全为“1”,则说明该行上没有键闭合:否则,这一行上有键闭合,而且就是行线为0,列线为0的交又键。高4位和低四位合并即得到键码值。例如,P1.3~P1.0输出“1110时,读入P1.7~P1.4为“1101”时,即不全为“1”,说明有键按下,那一个键呢?显然是P1.0与P1.5交又的键。将高四位和低四位合并后的值为“11011110”:也就是该键的键码值。依此类推可得各键的健码值。各键和对应的键码值如下图所示。(4)使CPU对键的一次闭合仅作一次处理采用的方法是等待闭合键释放以后再作处理
(3) 判别闭合键的键号 其方法为:对键盘的行线进行扫描,P1.3~P1.0依次循环 输出1110、1101、1011和0111,相应地读P1口,若高4位 P1.7~P1.4全为“1”,则说明该行上没有键闭合;否则,这 一行上有键闭合,而且就是行线为0,列线为0的交叉键。高 4位和低四位合并即得到键码值。 例如,P1.3~P1.0输出“1110”时,读入P1.7~P1.4为 “1101”时,即不全为“1”,说明有键按下,那一个键呢? 显然是P1.0与P1.5交叉的键。将高四位和低四位合并后的值 为“11011110”;也就是该键的键码值。依此类推可得各键 的健码值。各键和对应的键码值如下图所示。 (4) 使CPU对键的一次闭合仅作一次处理 采用的方法是等待闭合键释放以后再作处理
P1.089S51PI.1NTclrenter出FPP1.2Ve031EAV景89RESERESE骏P1.3长显ALPEP1.6P1.5P1.4RESEVocX1X10uF12MHz1k230pF=30pFGND1k2
各键和对应的键码值P1.7P1.6P1.5P1.4#01110111101101111101011111100111P1.3P1.2Chrenter01111011101110111101101111101011P1.1801111101101111011101110111101101P1.0011111101011111011011110111011104×4键盘参考程序如下。该程序可作为子程序来调用,入口参数无,出口参数为键码值,存于A。本例的另一种实现方法:以上程序所得到的键码值,离散性较大,不利于用指令对按键进行处理。可采用按键编码为依次排列键号的程序设计方法
各键和对应的键码值 ▪ 4×4键盘参考程序如下。该程序可作为子程序来调 用,入口参数无,出口参数为键码值,存于A。 ▪ 本例的另一种实现方法:以上程序所得到的键码值, 离散性较大,不利于用指令对按键进行处理。可采 用按键编码为依次排列键号的程序设计方法