单片机基础

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);
    }
}

猜你喜欢

转载自blog.csdn.net/paranoid_fy/article/details/81149750
今日推荐