这个函数中的延时函数有什么作用,是一个pwm波驱动led的程序,51
#include <STC12C5A60S2.h>
//周期为T,占空比为D,设定的定时器时间基准为t,溢出n次的时间是pwm的高电平
//则D*T=n*t
sbit LED = P1^0;
unsigned char CYCLE; //高电平n
unsigned char PWM_ON ; //低电平n'
void delay(unsigned int jay) //延时函数
{
while(--jay);
}
void main()
{
int Flag; //标志位
TMOD |=0x01; //确定T0和T1的工作方式
TH0=(65536-100)/256; //计算初值
TL0=(65536-100)%256;
IE= 0x82; //EA=1;ET0=1;
TR0=1; //启动定时器中断
CYCLE = 10;
while(!Flag)
{
delay(200000);
PWM_ON++; //低电平的标志
if(PWM_ON == CYCLE)
{
Flag=1; //flag决定输出高低电平
}
}
while(Flag)
{
delay(200000);
PWM_ON--;
if(PWM_ON == 0)
{
Flag=0;
}
}
}
void tim(void) interrupt 1
{
static unsigned char count;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if (count==PWM_ON) //低电平n'
{
LED = 1;
}
count++; //定时器中断的次数
if(count == CYCLE) //高电平n
{
count=0;
if(PWM_ON!=0)
LED = 0;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>