一个非常短的呼吸灯程序

admin 2017-7-23 3179

 呼吸灯,肯定很多人都写过,这里是一个简短的呼吸灯程序。

#include <STC12C5A.H>
#define uchar unsigned char 
#define uint unsigned int
#define limit 100
sbit LED=P0^4;
void delay(uint ms)
{
        uint i=0,j=0;
        for(i=ms;i>0;i--)
                for(j=123;j>0;j--);
}
void main()
{
        uint t=50;
        char d=1;
        while(t+=d)
        {
                LED=t%2;
                delay(t*(LED==1)+(limit-t)*(LED==0));//这条代码很巧妙的实现了两个状态的切换
                if(t>=95||t<=5) d=-d;
        }
}

程序有三个亮点,第一:用%2来实现LED灯的两种状态的切换。第二:用逻辑判断等实现了延时与LED灯状态的匹配。第三:边界条件的判断以及d=-d实现了呼吸灯的由灭逐渐到亮,再由亮逐渐到灭。这个可以想象成球撞击墙面的物理模型。

最新回复 [0]
返回