不知道哪位仁兄 能给小弟讲讲pmw。。。

[复制链接]
 楼主| 爱学小生 发表于 2009-11-6 16:56 | 显示全部楼层 |阅读模式
今天学习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;
    }
}
man417022791 发表于 2009-11-6 17:58 | 显示全部楼层
共同学习吧,我也是新手...
man417022791 发表于 2009-11-6 18:08 | 显示全部楼层
PWM不就是矩形波吗,还写的这么麻烦,而且还不对...

主程序应该有while(1){……}
 楼主| 爱学小生 发表于 2009-11-6 21:01 | 显示全部楼层
....三楼解释一下呗。。。那个程序是 买实验板带的源程序,是控制一个灯由亮到灭。。pmw不懂。。。。
ZWLCG 发表于 2009-11-7 08:24 | 显示全部楼层
俺也来学习学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

138

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

32

主题

138

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部