资源描述:
《51单片机键盘扫描程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、OUTBITEQU08002H;位控制口OUTSEGEQU08004H;段控制口INEQU08001H;键盘读入口LEDBUFEQU40H;显示缓冲ORG0000HLJMPSTARTORG0100HLEDMAP:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;八段管显示码DB7FH,6fH,77H,7CH,39H,5EH,79H,71HDB00H,49HDELAY:MOVR7,#00H;延时子程序DELAYLOOP:DJNZR7,DELAYLOOPDJNZR6,DELAYLOOPRETDISPLAYLED:MOVR0,#
2、LEDBUFMOVR1,#06H;共6个八段管MOVR2,#00100000B;从左边开始显示LOOP:MOVDPTR,#OUTBITMOVA,#0HMOVX@DPTR,A;关所有八段管MOVA,@R0MOVDPTR,#LEDMAPMOVCA,@A+DPTR;由序码求段码MOVDPTR,#OUTSEGMOVX@DPTR,AMOVDPTR,#OUTBITMOVA,R2MOVX@DPTR,A;显示一位八段管MOVR6,#01HCALLDELAYMOVA,R2;显示下一位RRAMOVR2,AINCR0DJNZR1,LOOPRETTESTKEY:M
3、OVDPTR,#OUTBITMOVA,#00HMOVX@DPTR,A;输出线置为0MOVDPTR,#INMOVXA,@DPTR;读入键状态CPLAANLA,#0FH;高四位不用RETKEYTABLE:DB16H,15H,14H,0FFH;键码定义DB13H,12H,11H,10HDB0DH,0CH,0BH,0AHDB0EH,03H,06H,09HDB0FH,02H,05H,08HDB00H,01H,04H,07HGETKEY:MOVDPTR,#OUTBITMOVP2,DPHMOVR0,#LOW(IN)MOVR1,#00100000BMOVR
4、2,#06HKLOOP:MOVA,R1;找出键所在列CPLAMOVX@DPTR,ACPLARRAMOVR1,A;下一列MOVXA,@R0CPLAANLA,#0FHJNZLOOP1;该列有键入DJNZR2,KLOOPMOVR2,#0FFH;没有键按下,返回0ffhSJMPEXITLOOP1:MOVR1,A;键值=列X4+行MOVA,R2DECARLARLAMOVR2,A;r2=(r2-1)*4MOVA,R1;r1中为读入的行值MOVR1,#04HLOOP2:RRCA;移位找出所在行JCEXITINCR2;r2=r2+行值DJNZR1,LOOP
5、2Exit:MOVA,R2;取出键码MOVDPTR,#KEYTABLEMOVCA,@A+DPTRMOVR2,AWAIT:MOVDPTR,#OUTBIT;等键释放CLRAMOVX@DPTR,AMOVR6,#10HCALLDELAYCALLTESTKEYJNZWAITMOVA,R2RETSTART:MOVSP,#60HMOVLEDBUF+0,#11H;显示三092MOVLEDBUF+1,#00HMOVLEDBUF+2,#09HMOVLEDBUF+3,#02HMOVLEDBUF+4,#0MOVLEDBUF+5,#0MAIN:CALLDISPLAY
6、LED;显示CALLTESTKEY;有键入?JZMAIN;无键入,继续显示CALLGETKEYMOVR5,A;读入键码ANLA,#0F0H;显示键码SWAPAMOVLEDBUF+4,AMOVA,R5ANLA,#0FHMOVLEDBUF+5,ALJMPMAINEND