一拖三流星燈
#include<reg52.h>
unsigned int led=0x0;
unsigned char Duty_ratio[3]={75,90,98};
unsigned char freq,i,j;
void init(void)
{
TMOD=0x02;
TL0=TH0=0xff-200; //基時賦值 200u
TR0=1;
ET0=1;
EA=1;
}
void timer0(void) interrupt 1
{
freq++;
}
void PWM(void)
{
led=0x01;
for(j=0;j<3;j++)
{
led=led<<1;
if(freq>Duty_ratio[j]) led=led+1;
}
}
void main(void)
{
init();
while(1)
{
if (freq>=100) //50Hz
{
freq=0;
i++;
if(i>70) i=0; //移動速度
}
PWM();
P1=~(led<<(i/5));
}
}
|