采用软件延时
一共有七种样式,分别是;
从左至右、从右至左、全部灯闪烁、从左往右依次点亮、奇偶数点亮闪烁、一个灯左右循环、从两边往中间流、从中间往两边流。
#include "STC15F2K60S2.h"
#include <intrins.h>
#define u8 unsigned char
#define u16 unsigned int
void delay_ms(int ms);
void Delay500ms();
void led1();//从左到右
void led2();//从右到左
void led3();//全灭全亮
void led4();//第一次第一个灯亮,第二次两个灯亮,依次到第八个灯亮
void led5();//先奇数亮再偶数亮,一个灯左右循环三次,两个分别往中间流动三次,再从中间往两边流动三次;八个全部闪烁三次;关闭所有led程序停止
void BANZHI_init()
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
}
int main()
{
u8 i=0,temp=0;
BANZHI_init();
while(1)
{
led1();
led2();
led1();
led2();
led3();
led4();
led5();
}
// led5();
}
void led1()
{
u8 i;
for(i=0;i<8;i++)
{
P0=~(0x01<<i);
delay_ms(200);
}
}
void led2()
{
u8 i;
for(i=0;i<8;i++)
{
P0=~(0x80>>i);
delay_ms(200);
}
}
void led3()
{
P0=0XFF;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0xff;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0XFF;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0XFF;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0XFF;
delay_ms(300);
P0=0x00;
delay_ms(300);
}
void led4()
{
u8 i;
u8 j=0;
for(i=0;i<8;i++)
{
P0=(0xff>>i);
delay_ms(300);
}
}
void led5()
{
u8 i;
u8 j;
for(i=0;i<3;i++)
{
P0=0x55;
delay_ms(300);
P0=0xaa;
delay_ms(300);
}
for(i=0;i<3;i++)
{
P0=0x7e;
delay_ms(100);
P0=0xff;
delay_ms(100);
P0=0x7e;
delay_ms(100);
P0=0xff;
delay_ms(100);
}
for(j=0;j<3;j++)
{
for(i=0;i<4;i++)
{
P0=(~(0x01<<i)&~(0x80>>i));
delay_ms(300);
}
}
for(j=0;j<3;j++)
{
for(i=0;i<4;i++)
{
P0=(~(0x08>>i)&~(0x10<<i));
delay_ms(300);
}
}
P0=0XFF;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0xff;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0XFF;
delay_ms(300);
P0=0x00;
delay_ms(300);
P0=0XFF;
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}