📄 key.c
字号:
//one key detect
#include<reg51.h>
#include<stdio.h>
unsigned int KEY1,KEY2;
unsigned int KEY3,KEY4;
unsigned int KEY5,KEY6;
unsigned int KEY7,KEY8;
unsigned char STEPXY[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99};
unsigned int keytmp,tmp;
void delay(unsigned int i)
{
for (;i>0;i--);
}
//main()
void KEY_Scaning(void)
{ // unsigned char STEPXY[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99};
unsigned int keytmp,tmp;
//unsigned int i;
P1=0x00;
//while(1)
{
P3=0xff;
P3=0xfe; //第一行置零
tmp=P3;
keytmp=tmp&0xf0;
if(keytmp!=0xf0)
{
delay(10);
tmp=P3;
keytmp=tmp&0xf0;
if(keytmp!=0xf0)
{
switch(keytmp)
{
case 0xe0:
KEY1=1; break;
case 0xd0:
KEY2=1; break;
case 0xb0:
KEY3=1; break;
case 0x70:
KEY4=1; break;
default :
break;
}
//tmp=P3;
// keytmp=tmp&0xf0;
// while(keytmp!=0xf0)
// {tmp=P3;
// keytmp=tmp&0xf0;}
}
}
P3=0xff;
P3=0xfd; //第二行置零
tmp=P3;
keytmp=tmp&0xf0;
if(keytmp!=0xf0)
{
delay(10);
tmp=P3;
keytmp=tmp&0xf0;
if(keytmp!=0xf0)
{
switch(keytmp)
{
case 0xe0:
KEY5=1; break;
case 0xd0:
KEY6=1; break;
case 0xb0:
KEY7=1; break;
case 0x70:
KEY8=1; break;
default :
break;
}
// tmp=P3;
//keytmp=tmp&0xf0;
//while(keytmp!=0xf0)
//{tmp=P3;
//keytmp=tmp&0xf0;}
}
}
}
}
void INT0ISR(void) interrupt 0 using 3
{ unsigned char STEPXY[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99};
unsigned int i;
P1=0x00;
EX0=0;
KEY_Scaning();
PX0=1;
P3=0xfc;
if(KEY1==1)
{ while(1)
{
for (i=0;i<8;i++)
{
P1=STEPXY[i];
delay(5000);
}
}
}
if(KEY5==1)
{ while(1)
{
P1=0x00;
}
}
EX0=1;
}
main()
{
P1=0x00;
IP=0x0b;
IT0=0;
EX0=1;
PX0=1;
EA=1;
P3=0xfc;
// while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -