#include
sbit LEDR= P2 ^ 5; //P2.0引脚上接了一个红的发光二极管
sbit LEDG = P2 ^ 6; //P2.1引脚上接了一个绿的发光二极管
void delay (unsigned char d){ // 延时功用函数–由d决议延时长度
unsigned char i;
while( d– != 0)
{
for(i = 0; i < 8; i++);
}
}
void delay1 (unsigned int d){ // 延时功用函数–由d决议延时长度
unsigned char i;
while( d– != 0)
{
for(i = 0; i < 8; i++);
}
}
//Speed 1~9
//Direct 1\0
void Lighter( unsigned char Speed, bit Direct)
{
unsigned char Delay_Length, Loop_Time; // a操控延时长度 b操控循环周期
LEDR= Direct;
Delay_Length = 0x00;
for ( Loop_Time=0; Loop_Time<254; Loop_Time++)
{
// 界说半周期循环时刻(次数)
Delay_Length += Speed;
if (Delay_Length > 250)
break;
delay (Delay_Length); // 延时长度随a而改动
LEDR= Direct;
Delay_Length = ~Delay_Length; // a值取反 决议灯灭时的占空比
delay (Delay_Length);
LEDR= ~Direct;
Delay_Length = ~Delay_Length; // a值取反 使a回到原值持续循环
}
}
/****************************************************************************
主程序:突变式LED闪耀
/****************************************************************************/
void main (void)
{ // 彩灯主函数 完成彩灯的显现
while (1)
{
delay1 (60000);
Lighter(9, 0);
delay1 (60000);
}
}