晚生初学,烦各位解释一下。

[复制链接]
2811|7
 楼主| yyangcj 发表于 2009-11-16 16:57 | 显示全部楼层 |阅读模式
include <reg51.h>  //模拟PWM输出控制灯的10个亮度级

sbit p_out=P1^0;       //宏定义P1.0为p_out,波形的输出脚
unsigned char scale;   //占空比控制变量

void main(void)       // 主程序
{ unsigned int n;    //延时循环变量
  TMOD=0x02;   //定时器0,工作模式2(0000,0010),8位定时模式
  TH0=0x06;    //写入预置初值6到定时器0,使250微秒溢出一次(12MHz)
  TL0=0x06;    //写入预置值
  TR0=1;       //启动定时器
  ET0=1;       //允许定时器0中断
  EA=1;        //允许总中断
  LED8=0x00;   //开启LED8
  LED8_LED=0x06;
while(1)       //无限循环,实际应用中,这里是做主要工作
   { for(n=0;n<20000;n++);  //每过一段时间,就自动加一个档次的亮度
     scale++;    //占空比控制变量scale加1
     if(scale>=100)  scale=0;  //如果scale=10,使scale为0
   }
}
timer0() interrupt 1    //定时器0中断服务程序  
  { static  unsigned int   tt ;   //tt用来保存当前时间在一秒中的比例位置
    tt++;    //每250微秒增加1
    if(tt>=100)   //25毫秒的时钟周期
      { tt=0;  //使tt=0,开始新的PWM周期
        p_out=0;  //使LED灯亮
      }
if(scale==tt)  //????
  p_out=1;        //使LED灯灭




请问问号这句(scale==tt)何解?
       }
123654789 发表于 2009-11-16 17:43 | 显示全部楼层
测试 是否 等于
ejack 发表于 2009-11-16 17:43 | 显示全部楼层
scale是量化后的占空比。tt是周期性时间变量。
在单位周期内,满足占空比条件后,翻转LED控制管脚将灯熄灭。

评分

参与人数 1威望 +1 收起 理由
yyangcj + 1

查看全部评分

haoge1388645 发表于 2009-11-17 11:13 | 显示全部楼层
这还要解释?
dudu_q 发表于 2009-11-17 14:35 | 显示全部楼层
呵呵~LZ已经说了初学了嘛
ppsen 发表于 2009-11-17 22:06 | 显示全部楼层
楼主最好画一下图自己在琢磨一下,这样才会有进步
huangqi412 发表于 2009-11-18 08:33 | 显示全部楼层
流程图...
 楼主| yyangcj 发表于 2009-12-8 11:04 | 显示全部楼层
好的,谢过各位了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

117

帖子

0

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