樓主思路同我常用思路應同
如下復一個流星燈程序參考
#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;
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)
{
freq=0;
i++;
if(i>=90) i=0; //移動速度
}
PWM();
P1=~((led<<(i/5))>>4);
}
}
|