📄 havekey.c.bak
字号:
/***************************************************************
功能:识别有无按键,当有键按下蜂鸣器发声,直至松开后停止发声
作者:SG
时间:2004-03-15
版本:V1.0
***************************************************************/
sfr KeyPort = 0xa0;
sbit col1 = 0x96; //对应CPU管脚P1.6
sbit col2 = 0x97; //对应CPU管脚P1.7
sbit _Speak = 0xb2; //对应CPU管脚P1.2
/*-------------------------------------------------
功能100uS延时子程序
-------------------------------------------------*/
void Delay_xuS(unsigned int x)
{
unsigned int i,j;
for( i =0;i < x;i++ )
{
for( j =0;j<50;j++ );
}
}
/*--------------------------------------------------
功能:发音子程序每调用一次响一下
---------------------------------------------------*/
void Song()
{
unsigned char i;
for( i = 0;i < 10;i++)
{
_Speak = 0;
Delay_xuS(1);
_Speak = 1;
Delay_xuS(1);
}
}
/*--------------------------------------------------
功能:判别有无按键按下,无返回0,有按下使蜂鸣器发声
并直到按键松开,返回1
---------------------------------------------------*/
bit haveKey()
{
unsigned char temp;
KeyPort = 0xFF;
row1 = 0; //扫描线置低
row2 = 0; //扫描线置低
temp = KeyPort ; //读键盘端口
if( (temp & 0x30) == 0x30 ) //等于FF表示没键按下
{
_ReadKey = 1;
return(0); //无按键返回0
}
do
{
Song(); //发声
temp = KeyPort; //读键盘
}while(temp !=0x30);
_ReadKey = 1; //关闭键盘输入口
return(1); //有按键返回1
}
/*--------------------------------------------------
主程序
功能:识别有无按键,当有键按下蜂鸣器发声,
直至松开后停止发声
---------------------------------------------------*/
void main()
{
while(1)
{
if ( haveKey() ) //识别有无按键
{
_Speak = 1; //停止发声
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -