实验思路:
重定义管脚P0.0、P0.1为LED1、LED2
定义一个延时函数delay_10us,用于LED延时
重定义unsigned int 为"U16"
完整代码:
/*****************************程序信息*********************************
* 实验名称:控制2颗LED灯依次点亮
* 文件名称:main.c
* 版 本:V1.00
* 日 期:2021-11-25
* 编 著:gefon
* 说 明:使用普中A7开发版,控制D1、D2两颗LED依次点亮
*******************************声明区*********************************/
#include "reg52.h"
sbit LED1=P0^0;
sbit LED2=P0^1;
typedef unsigned int U16; //对系统数据类型重定义
/*******************************子程序*********************************
* 函 数 名 :delay_10us
* 函数功能 :延时函数,传入变量ten_us=1时,大约延时10us
* 输 入 :ten_us
* 输 出 :无
***********************************************************************/
void delay_10us(U16 ten_us)
{
while(ten_us--);
}
/*******************************主程序*********************************
* 函 数 名 :main
* 函数功能 :主函数
* 输 入 :无
* 输 出 :无
***********************************************************************/
void main()
{
while(1)
{
LED1=0; //点亮D1灯
delay_10us(50000); //晶振为12M时,延时约450ms;晶振为11.0592M时,延时约480ms
LED1=1; //熄灭D1灯
/*依次点亮LED时,上一颗LED熄灭后下一颗LED直接点亮,无需延时*/
LED2=0; //点亮D2灯
delay_10us(50000);
LED2=1; //熄灭D2灯
}
}实验分析:
程序要求为2颗灯依次点亮,即点亮D1->熄灭D1->点亮D2->熄灭D2。当D1熄灭时即可立即点亮D2,因此D1给高电平后,不需要再做延时处理。