unsigned char KEY_Scan()
{
unsigned char temp = 0;
unsigned char com = 0x55 , com1 = 0 , com2 = 0;
P1DIR &= ~(BIT0+BIT1+BIT2+BIT3);//在中断设为输入,用于消抖 因为IO脚默认为输入,所以这句话不要也行,但是
//最好加上使程序清晰
/* delay_us(5); //延迟5ms,消抖 延迟5ms 10ms都行
P1DIR |=(BIT0+BIT1+BIT2+BIT3);
if(P1DIR^=0xf0)
{
com1=P1DIR;
P1DIR |=0x0f;
com2=P1DIR;
}
P1DIR=0xf0;
temp=com1|com2;
if(temp==0xee)com=1;//数字1
if(temp==0xed)com=4;//数字4
if(temp==0xeb)com=7;//数字7
if(temp==0xe7)com=11;//备用键*号键
if(temp==0xd7)com=0;//数字0
if(temp==0xb7)com=14;//备用键*号键
if(temp==0xde)com=2; //数字2
if(temp==0xdd)com=5; //数字5
if(temp==0xdb)com=8;//数字8
if(temp==0xbe)com=3;//数字3
if(temp==0xbd)com=6; //数字6
if(temp==0xbb)com=9;//数字9
if(temp==0x7e)com=16;//数字A键
if(temp==0x7d)com=15;//数字B键
if(temp==0x7b)com=12;//数字C
if(temp==0x77)com=13;//数字D键
return(com);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>