定时器扫描数码管

利用中断调用函数

 按键每隔20ms记住

#include <REGX52.H>
unsigned char KeyNumber;
unsigned char key;
void Init()
{
	TMOD=0x01;
	TL0=0x18;
	TH0=0xFC;
	TR0=1;
	ET0=1;
	EA=1;
}
unsigned char Key()
{
	unsigned char Temp;//按键清0
	Temp=KeyNumber;
	KeyNumber=0;
	return Temp;
}
void Key_Loop()
{
	static unsigned NowState,LastState;
	
	if(P3_1==0){KeyNumber=1;}
	if(P3_0==0){KeyNumber=2;}
	if(P3_2==0){KeyNumber=3;}
	if(P3_3==0){KeyNumber=4;}
	LastState=NowState
	NowState=KeyNumber;
	if(LastState==1&&NowState==0)
	{
			KeyNumber=1;
	}
	if(LastState==2&&NowState==0)
	{
		KeyNumber=2;
	}
	if(LastState==3&&NowState==0)
	{
		KeyNumber=3;
	}
	if(LastState==4&&NowState==0)
	{
		KeyNumber=4;
	}
	
}
int main(){
	Init();
	while(1)
	{
		key=Key();
		
	}
}


void Timer()interrupt 1
{
	static unsigned int T0Count;
	TL0=0x18;
	TH0=0xFC;
	T0Count++;
	if(T0Count>=20)
	{
		T0Count=0;
		Key_Loop();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值