求教这个函数里面的delay函数有什么作用

2020-01-26 12:54发布

这个函数中的延时函数有什么作用,是一个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;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
lcofjp
1楼-- · 2020-01-26 13:24
虽然我不清楚干什么的,但是很明显,参数已经溢出了。
jay744
2楼-- · 2020-01-26 18:57
lcofjp 发表于 2013-10-18 12:42
虽然我不清楚干什么的,但是很明显,参数已经溢出了。

什么意思?
csb1030
3楼-- · 2020-01-27 00:06
delay是int型,uint在51只有65536,给了那么多不溢出才有鬼呢
绿茶山人
4楼-- · 2020-01-27 06:01
 精彩回答 2  元偷偷看……

一周热门 更多>