|
发表于 2022-12-27 17:41:52
|
显示全部楼层
void Timer0_IRQ() interrupt 1
{
TL0 = 0xf7;//设置定时初值
TH0 = 0xff;//设置定时初值
count++;
if(count<Cycle)
{
if(count<=pwm)
LED1=0;
else
LED1=1;
}
else
count=0;
}
void delay_lms(uint n)
{
uint i,j;
for(i=n;i>0;i--)
for(j=550;j>0;j--);
}
void display_pwm()
{
uint i,j;
smg_buf[0]=pwm%10;
smg_buf[1]=pwm/10%10;
smg_buf[2]=pwm/100;
for(i=0;i<(100/3);i++)
{
for(j=0;j<3;j++)
{
P2=smg_wei[j];
P0=smg_duan[smg_buf[j]];
delay_lms(1);
P0=0xFF;
}//消除重影
}
}
void pwm_serve()
{
uint m,k;
for(m=0;m<100;m++)
{
pwm=m;
display_pwm();
}
for(k=98;k>0;k--)
{
pwm=k;
display_pwm();
}
}
void main()
{
Timer0Init();
while(1)
{
pwm_serve();
}
} |
|