📄 keyscan.c
字号:
#include <at89x51.h>
#include "keyproc.h"
void delay(void)
{
unsigned char i,j;
for(i = 0;i<255;i++)
{
for(j = 0;j<255;j++){}
}
}
void keyscan(void)
{
bit a;
unsigned char b;
// P3_4 = 1;
P1_7 = 0;
a = P3_4;
if(~a)
{
EA = 0;
while(~P3_4){};
sendAddress_key();
EA = 1;
}
P1 = 0x0fe; //line1
b = P1 & 0x0fe;
if(b != 0x0fe)
{
EA = 0; //interrupt disable
//b = b & 0x0fe;
while((P1 | 0x0f) !=0xff){};
switch(b)
{
case 0x0ee:
power_key();break ;
case 0x0de:
number_key(3,"3");break;
case 0x0be:
number_key(2,"2");break;
case 0x7e:
number_key(1,"1");break;
}
EA = 1;
}
P1 = 0x0fd; //line2
b = P1 & 0x0fd;
if(b != 0x0fd)
{
EA = 0; //interrupt disable
while((P1 | 0x0f )!= 0xff){};
//b = b & 0x0fd;
switch(b)
{
case 0x0ed:
menu_key();break ;
case 0x0dd:
number_key(6,"6");break;
case 0x0bd:
number_key(5,"5");break;
case 0x7d:
number_key(4,"4");break;
}
EA = 1;
}
P1 = 0x0fb; //line3
b= P1 & 0x0fb;
if(b != 0x0fb)
{
EA = 0;
delay();
//a=a|0x0fb;
if(b==0x0eb)
{
up_key();
}
else
{
while((P1 | 0x0f) !=0xff){};
switch(b)
{
case 0x0db:
number_key(9,"9");break;
case 0x0bb:
number_key(8,"8");break;
case 0x7b:
number_key(7,"7");break;
}
}
EA = 1;
}
P1 = 0x0f7; //line4
b= P1 & 0x0f7;
if(b != 0x0f7)
{
EA = 0;
delay();
//a=a|0x0f7;
if(b == 0x0e7)
{
down_key();
}
else
{
while((P1 | 0x0f) !=0xff){};
switch(b)
{
case 0x0d7:
enter_key();break;
case 0x0b7:
del_key();break;
case 0x77:
number_key(0,"0");break;
}
}
EA = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -