8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁

Posted Neutionwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁相关的知识,希望对你有一定的参考价值。

建议先看《8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED》,我们从这个基础上修改代码。

代码修改如下:

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;


sbit led=P2^2;		 //将单片机的P2.2端口定义为led

/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}

/*******************************************************************************
 * 函 数 名       : main
 * 函数功能		 : 主函数
 * 输    入       : 无
 * 输    出    	 : 无
*******************************************************************************/
void main()
{
	while(1)
	{
		led=0;
		delay(50000); //大约延时450ms
		led=1;
		delay(50000); //大约延时450ms	
	}		
}
  • 代码中使用了 typedef 对数据类型进行声明定义,这是C语言的一个语法,这个很好理解,在这里就是使用 u16 代替 unsigned int,在8位单片机中表示16位数据,可以表示从 065535(2^16-1) 这些数,同理使用 u8 代替 unsigned char
  • 增加 delay 函数,该函数实现死循环的自减,从而达到延时的目的,以后我们会知道这种方式是不建议使用的,然在这里粗略可实现LED延时约5s闪烁。

以上是关于8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁的主要内容,如果未能解决你的问题,请参考以下文章

8051单片机实战分析(以STC89C52RC为例) | 11 - 定时器中断的使用

8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯

8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁

8051单片机实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动

8051单片机实战分析(以STC89C52RC为例) | 06 - 动态数码管驱动

8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED