资源描述:
《《键盘子程序》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、键盘扫描图a4*4键盘图b4*3键盘扫描步骤:1.P2.3=0行扫描初值;2.P2左移检测列;3.P2右移扫描行;4.计数指针到表中取码(读入键盘值由表中的数据一一对应)。;**********************键盘扫描子程序SCANKEY**********;4*4键盘扫描子程序;行接P2.0-P2.3,列接P2.4-P2.7;调用该子程序扫描一遍键盘;键盘如有按键,则标志位FLAG_KEY=1;输入键盘码放入键盘存储器KEYBUFF;面板上键盘为123C;456D789E;A0BF;***************
2、************************SCANKEY:MOVR3,#0F7H;扫描初值(P2.3=0)MOVR2,#00H;R2为取键盘码指针L2:MOVA,R3;开始扫描MOVP2,A;扫描值输出至P2口MOVA,P2;读入P2值,判断是否有键按下MOVR4,A;存入P2值,以判断是否放开按键SETBC;后用带循环移位MOVR5,#04H;先扫描4列(如为4*3键盘此处MOVR5,#03H)L3:RLCA;先从P2.3相接这一行P2.4-P2.7哪个键按下了JNCKEYIN;C=0则有键按下,跳至KEYININ
3、CR2;C=1表明没有键按下,取码指针加1DJNZR5,L3;3列扫描完毕?MOVA,R3;扫描值载入SETBCRRCA;扫描下一行MOVR3,A;存回扫描寄存器JCL2;4行扫完?没有则回L2继续扫描RET;一遍扫描完返回;-------------------------------------------------KEYIN:MOVR7,#60;30MS消抖动(晶振12MHZ)D2:MOVR6,#248DJNZR6,$DJNZR7,D2D3:MOVA,P2;读入P2值,判断换键是否松开XRLA,R4;与上次值XX比
4、较JZD3;ACC=0表示未放MOVA,R2;按钮已松开,取码指针载入MOVDPTR,#KEYSCAN_TABMOVCA,@A+DPTRSETBFLAG_KEY;键盘扫描一次有输入标志位置位MOVKEYBUFF,A;键盘码放入键盘存储器KEYBUFFRET;===========================================;键盘扫描码KEYSCAN_TAB:DB01H,02H,03H,0CHDB04H,05H,06H,0DHDB07H,08H,09H,0DHDB0AH,00H,0BH,0FH;-----
5、------------------------------;***************键盘扫描结束****************************;**********************键盘扫描子程序SCANKEY**********;4*3键盘扫描子程序;行接P2.0-P2.3,列接P2.4-P2.6;调用该子程序扫描一遍键盘;键盘如有按键,则标志位FLAG_KEY=1;输入键盘码放入键盘存储器KEYBUFF;面板上键盘为1234;5678;90AB;*************************
6、**************SCANKEY:MOVR3,#0F7H;扫描初值(P2.3=0)MOVR2,#00H;R2为取键盘码指针L2:MOVA,R3;开始扫描MOVP2,A;扫描值输出至P2口MOVA,P2;读入P2值,判断是否有键按下MOVR4,A;存入P2值,以判断是否放开按键SETBCMOVR5,#03H;先扫描3列RLCA;由于P2.7没有接,故先左移一位,让P2.6位进入CyL3:RLCA;先从P2.3相接这一行P2.4-P2.6哪个键按下了JNCKEYIN;C=0则有键按下,跳至KEYININCR2;C=1
7、表明没有键按下,取码指针加1DJNZR5,L3;3列扫描完毕?MOVA,R3;扫描值载入SETBCRRCA;扫描下一行MOVR3,A;存回扫描寄存器JCL2;4行扫完?没有则回L2继续扫描RET;一遍扫描完返回;-------------------------------------------------KEYIN:MOVR7,#60;30MS消抖动(晶振12MHZ)D2:MOVR6,#248DJNZR6,$DJNZR7,D2D3:MOVA,P2;读入P2值,判断换键是否松开XRLA,R4;与上次值XX比较JZD3;A
8、CC=0表示未放MOVA,R2;按钮已松开,取码指针载入MOVDPTR,#KEYSCAN_TABMOVCA,@A+DPTRSETBFLAG_KEY;键盘扫描一次有输入标志位置位MOVKEYBUFF,A;键盘码放入键盘存储器KEYBUFFRET;==============================