led跑马灯 1.0
#include <reg51.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
void DelayUs2x(unsigned char n);
void DelayMs(unsigned char n);
void main()
{
while(1)
{
LED1 = 0;
DelayMs(300);
LED1 = 1;
DelayMs(300);
LED2 = 0;
DelayMs(300);
LED2 = 1;
DelayMs(300);
LED3 = 0;
DelayMs(300);
LED3 = 1;
DelayMs(300);
LED4 = 0;
DelayMs(300);
LED4 = 1;
DelayMs(300);
LED5 = 0;
DelayMs(300);
LED5 = 1;
DelayMs(300);
LED6 = 0;
DelayMs(300);
LED6 = 1;
DelayMs(300);
LED7 = 0;
DelayMs(300);
LED7 = 1;
DelayMs(300);
LED8 = 0;
DelayMs(300);
LED8 = 1;
DelayMs(300);
}
}
void DelayUs2x(unsigned char n)
{
while(--n);
}
void DelayMs(unsigned char n)
{
while(n--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}
led跑马灯 2.1 右移
#include <reg51.h>
sbit LED1 = P1^0;
void DelayUs2x(unsigned char n);
//微秒级延时 t = 2*n+6(us)
void DelayMs(unsigned char n);
//毫秒级延时 t = 2*n(ms)
void main()
{
unsigned char i,w;
while(1)
{
for(i = 0, w = 0x80; i < 8; i++) //1000 0000
{
P1 = ~w; //0111 1111 0亮1灭
w >>= 1;
DelayMs(200);
}
}
}
void DelayUs2x(unsigned char n)
{
while(--n);
}
void DelayMs(unsigned char n)
{
while(n--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}
led跑马灯 2.2 左移
#include <reg51.h>
sbit LED1 = P1^0;
void DelayUs2x(unsigned char n);
void DelayMs(unsigned char n);
void main()
{
unsigned char i,w;
while(1)
{
for(i = 0, w = 0x01; i < 8; i++) //0000 0001
{
P1 = ~w; //1111 1110 0亮1灭
w <<= 1;
DelayMs(200);
}
}
}
void DelayUs2x(unsigned char n)
{
while(--n);
}
void DelayMs(unsigned char n)
{
while(n--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}