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位数据,可以表示从 0 到 65535(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 - 矩阵按键驱动