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)何解?
} |