|
匆匆忙忙写的,如果有问题再找我吧,你先试试看,记住先把对应口线改了
#include
#define hang P0 // 行输入低电平为有键按下,高电平为无键按下
#define lie P1 // 列输出低电平进行逐行扫描
#define speaker P2_1 //蜂鸣器低电平有效
volatile unsigned int key_number1,key_number2;
void delay_ms(unsigned int count) // 延时时间count*1ms
{ unsigned int i;
for(;count>0;count--)
{
for(i=0;i<110;i++);
}
}
unsigned int keyscanf(void)// 返回值为键盘扫描值高8为为行码,低8位为列码
{ unsigned char a,b,c,i;
unsigned int d ;
a=0;
b=0;
c=0XFE;
for(i=0;i<8;i++)
{ P1= c;
if(P0!=0xff)//如果有键按下
{ a=P0;
b=P1;
}
c=c<<1;
}
d=(a<<8)+b;
return d;
}
main()
{ while(1)
{key_number1=keyscanf() ;
delay_ms(10);
key_number2=keyscanf() ;
if((key_number1==key_number2)&&(key_number1==0xfefe)) //假设按下低8行第8列的键蜂鸣器叫
{ speaker=0; //蜂鸣器叫 //其他的你自己修改吧
}
}
} |
|