呼吸灯简单代码

学单片机,又不知道该搞个啥,因为我啥都不会,他们让我搞个呼吸灯,花了三天时间才搞出下面这点,不过可以直接用;

#include <reg52.h>

sfr P4 = 0xe8;					//因为reg52.h里面没有定义它,在STC-SIP里面找到P4是这个值;
sbit LED1 = P4^0;
sbit LED2 = P3^7;

unsigned char x,y;		//这里三个x,y,z 用于控制后面的PWM频率的;
unsigned char z = 10;

void delay(unsigned int a)			//延迟;
{
	unsigned int i,j;
	while(--a)
	{
		i = 2;
		j = 199;
		while(--i)
		{
			while(--j);
		}
	}
}

void timer0Init()
{
	TMOD = 0x02;			// 模式 2;
	TH0 = 0xFF;
	TL0 = 0xFF;
	TR0 = 1;						//开打内部定时器,1 = Enable, 0 = Disable;
	ET0 = 1;						//打开T0中断,1 = Enable, 0 = Disable;
	EA = 1;
}

void rf()						//这里,让x值爬上去,再让x值掉下来,给后面中断使用;
{
	for(x=0;x<z;x++)
	{
		delay(2);
	}
	EA = 0;							//这里起共5行,让灯灭一下,看起来效果好点点。
	LED1 = 1;
	LED2 = 1;
	delay(200);
	EA = 1;
	for(x=z;x>0;x--)
	{
		delay(2);
	}
	delay(10);
}

void main()
{
	timer0Init();
	delay(10);
	while(1)
	{
		rf();
	}
}

void timer0() interrupt 1
{
	y++;
	if(y<=x){LED1 = 1;LED2 = 1;}
	else{LED1 = 0;LED2 = 0;y = 0;}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值