📄 键盘扫描程序1.txt
字号:
4×4键盘程序(c语言) 分类:默认栏目#include <AT89X51.C>
unsigned char code table[]={0x01,0x02,0x03,0x04,
0x05,0x06,0x07,0x08
0x09,0x0a,0x0b,0x0c
0x0d,0x0e,0x0f,0x00};
unsigned char temp;
unsigned char key;
unsigned char i,j;
void main(void)
unsigned char loop; //列数
unsigned char mark=0x10; //
while(1) //开始无限循环
{
for(loop=0;loop<4;loop++)//共4列,分别循环4次
p3=~(mark<<loop); //mark=100000<<0,后取反为11100000
temp=p3; //读取p3口当前值
temp=temp&0x0f; //屏蔽高4位
if (temp!=0x0f) //判断temp的值是否等于0x0f
{for(i=50;i>0;i--)
for(j=200;j>0;j--) //等待50次200的循环
temp=p3; //又读一遍
temp=temp&0x0f;
if(temp!= 0x0f) // temp的低4位不等于0x0f
{ switch(temp)
case 0x0e:key=0;break;
case 0x0d:key=1;break;
case 0x0b:key=2;break;
case 0x07:key=3;break;
break;
default;break;
key=key+loop*4; // 每循环一次,k的值就加4
//send key value by uart 传送key的值
while ((p3&0x0f)!=0x0f); //如果按键没有松开就一直等
}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -