# include <reg51.h>
#define uin16 unsigned int
#define uchar8 unsigned char
#define Key_beep 0x10
#define Model 0x20
#define Plus 0x40
sbit beep=P2^3; //蜂鸣器
uchar8 Trg,Cont,KeyGet;
volatile uchar8 intrcnt;
/******************中断初始化******/
void Timer0Init()
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
void KeyRead()
{
KeyGet=P3^0xff;
Trg = KeyGet & (KeyGet^Cont);
Cont = KeyGet;
}
void Keyproc1()
{
if(Trg&Key_beep)
{
beep=0;
}
}
void Timer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
intrcnt++;
}
void main ()
{
while(1)//20ms刷新一次
{
KeyRead();
Keyproc1();
while(1) //
{
if(intrcnt>20)
{
intrcnt=0;
break;
}
}
}
}
本人小白,最近在努力学习单片机。前面就是看郭天祥的视频,用了他的按键扫描的方法,发现在很多情况下,他的方法不好用。于是在网上看别人发的新型按键扫描方法,但是扫进去,发现不能用,求大神解答下,谢谢。
|