1、本次只优化了《51单片机——delay软件延迟1.0》代码,改动不大。
2、加入了用户控制8个led灯指令。
备注:代码有后遗症,代码中用到了软件delay延迟,建议使用定时器。
#ifndef __LED_H__
#define __LED_H__
#include "delay.h"
extern void LED_ON(); //点亮8个LED灯常亮
extern void LED_OFF(); //关闭8个LED灯
extern void LED_shan_suo(unsigned char x); //8个LED灯闪烁,闪烁x次
extern void LED_liu_sui_deng(); //8个LED灯流水灯
extern void LED_Admin_EN(unsigned char datax);//用户控制8个led灯
#endif
/*共计有8个LED灯,均使用80C52的P1口
LED灯低电平点亮
其中,P1_0-P1_4口独自使用
P1_5、P1_6、P1_7和WiFi模块共用了
点亮LED灯必须要硬件接上跳帽线
*/
#include "led.h"
#include <reg52.h>
#define LED_8 P1
//用户控制8个led灯
void LED_Admin_EN(unsigned char datax)
{
LED_8 = datax;
}
//点亮8个LED灯常亮
void LED_ON(void)
{
LED_8 = 0x00;
}
//关闭8个LED灯
void LED_OFF(void)
{
LED_8 = 0xff;
}
//8个LED灯闪烁,闪烁x次
void LED_shan_suo(unsigned char x)
{
LED_8 = 0xff;//初始化LED灯
do
{
LED_8 = 0x00; //灯亮
delay_ms(500); //延迟500ms时间..................................
LED_8 = 0xff; //灯灭
delay_ms(500); //延迟500ms时间..................................
x--;
} while (x);
LED_8 =0xff;
}
//8个LED灯流水灯
void LED_liu_sui_deng(void)
{
unsigned char x;
LED_8 = 0xff;
for (x=0;x < 8;x++)
{
LED_8 >>=1; //LED灯从P1口高位开始向低位点亮
delay_ms(1000);//..............................................................
}
LED_8 = 0xff;
}