C51江协源代码(加详细的注释) 1.2 LED闪烁

文章提供了两种在STC单片机中实现约500ms延时的方法,一种通过循环计数,另一种通过简化版延时函数。这两种方法都在main函数中用于控制LED的亮暗切换,展示了如何利用延时函数实现特定时间间隔的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <REGX52.H>	 //右键添加而来
void Delay500ms()		//@12.000MHz,这里使用stc软件可以生成
{
	unsigned char i, j, k;

	//_nop_();生成的这里可以不要,如果你不是要的特别精确的化,你要加上这个,
    //就需要加一个头文件#include<INTRINS.H>
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
  while(1)
  {
    P2=0xFE;//代表0000 0001 所以显示第一个灯
	Delay500ms(); //调用上面
    P2=0xFF;//ff代表0000 0000 是所有led都不亮
	//只有上面的话由于单片机的速度问题,导致
	//亮,暗变化太快,而导致看起来没变化
	Delay500ms();//调用上面
  }
}
//也可以采用下面的代码,只不过不是特别的精确,50000在我的电脑上大约是450ms
#include"reg52.h"
sbit led1=P2^0;
//下面是延时代码
typedef unsigned int u16;//定义成两个字节,用u16
void delay(u16 xus)
{
	while(xus--);
}
void main()
{
	
	while(1){
		led1=0;//点亮
		delay(50000);//大约450ms 
		led1=1;//熄灭
		delay(50000);
	}
}
/*上面那个延时代码,可以写为//简略写法,只是时间不太准;
void delay(xus)
{
	while(xus--);
}*
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值