单片机定时器流水灯的修改

放屁蛤蟆 放屁蛤蟆 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

我写这个代码只能实现流水灯,但是实现不了用按键修改流水灯的走向,想知道是代码哪里的问题,求看看

#include <REGX52.H>
#include <INTRINS.H>
static unsigned int s;
unsigned int number;
unsigned char keynum, led;

void Delay(unsigned int x)		//@11.0592MHz
{
	unsigned char i, j;

	while (x--) {
		i = 11;
		j = 190;
		do
		{
			while (--j);
		} while (--i);
	}
}
void Timer0Init(void)		//1毫秒@11.0592MHz
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x66;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时	
	EA = 1;
	ET0 = 1;
}
void key()
{
	if (P3_1 == 0) { Delay(20); while (P3_1 == 0); Delay(20); number = 1; }
}

void main()
{
	Timer0Init();
	P2 = 0xFE;
	while (1)
	{
		if (number == 1)
			led++;
		if (led >= 2)
			led = 0;
		if (s >= 1000)
		{
			s = 0;
			if (led == 0)
				P2 = _crol_(P2, 1);
			if (led == 1)
				P2 = _cror_(P2, 1);
		}
	}
}
void timer() interrupt 1
{
	TL0 = 0x66;
	TH0 = 0xFC;
	s++;
}

 

...全文
评论 3
收藏 已收藏
分享
返回顶部
放屁蛤蟆
QRS 56,758 成员 1,048 内容