今天学习pmw,看了一会源程序。。。没看懂。。。不知谁能给我讲解讲解。。。。程序如下
#include <reg52.h>
sbit LED = P1^2;
unsigned char CYCLE;
unsigned char PWM_ON ;
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
bit Flag;
TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
CYCLE = 50;// 时间可以调整 这个是10调整 8位PWM就是256步
while(!Flag)
{
delay(20000); //延时时间,从一个亮度到下一个亮度的间隔时间,速度快就能看到连续效果
PWM_ON++; //这个使用较长延时,以便能看清楚变化过程
if(PWM_ON == CYCLE)
{ //这个里可以添加其他程序 如到最亮时候控制设备
Flag=1;
}
}
while(Flag) //亮度递减 同上,是个相反的过程
{
delay(20000);
PWM_ON--;
if(PWM_ON == 0)
{
Flag=0;
}
}
}
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if (count==PWM_ON)
{
LED = 1;
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0) //如果左右时间是0 保持原来状态
LED = 0;
}
} |