void main()
{
TMOD=0x01; //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
TR0=1; //打开定时器
TH0=0Xff; //定时器设置,每隔100微秒发起一次中断。
TL0=0Xfd;
ET0=1; //开定时器0中断
EA=1; //开总中断
while(1)
{
keyscan();
if((num!=0)&&(num!=10)) //对于占空比为0和100%这两种极端情况,最好分离出,单独考虑
{
if(pp<=num)
pwm=1;
else
pwm=0;
}
else if(num==0) //当占空比为0
pwm=0;
else
pwm=1;
if(pp==10) //当占空比为100%
pp=0;
display(num);//显示num当前值,占空比为num/10。
}
}
void time0() interrupt 1
{ TH0=0Xff;
TL0=0Xfd;
pp++;
}
这个10次中断,每次3us,周期是30us,为什么产生的不是33khz的波