51单片机定时器0的中断服务程序里,如何设置添加启动定时器1? 5
为什么定时器0的中断服务程序,没有先关闭定时器0计时,最后再打开定时器0?定时器1中断服务程序执行完之后,程序返回哪里继续执行?(下面程序的目的是产生可以调节的方波,T0...
为什么定时器0的中断服务程序,没有先关闭定时器0计时,最后再打开定时器0?
定时器1中断服务程序执行完之后,程序返回哪里继续执行?
(下面程序的目的是产生可以调节的方波,T0控制周期。T1控制方波占空比)
void main() //主程序
{
leds =0;
P0=0xff;
TMOD=0x21;
TH0=0xfc; //1ms延时常数
TL0=0x66; //频率调节
TH1=PWM ; //脉宽调节
TL1=0 ;
EA=1;
ET0=1;
ET1=1;
TR0=1 ;
while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delayms(10);}
else Bee();
}
while(S1==0);
do{
if(PWM!=0x02)
{PWM-- ;delayms(10);}
else Bee() ;
}
while(S2==0);
}
}
// ---------------------------定时器0中断服务程序
void timer0() interrupt 1
{
TR1=0;
TH0=0xfc;
TL0=0x66;
TH1=PWM;
TR1=1;
P0=0x7f ; //启动输出
}
//---------------------------- 定时器1中断服务程序
void timer1() interrupt 3
{
TR1=0 ;
P0=0xff ; //结束输出
} 展开
定时器1中断服务程序执行完之后,程序返回哪里继续执行?
(下面程序的目的是产生可以调节的方波,T0控制周期。T1控制方波占空比)
void main() //主程序
{
leds =0;
P0=0xff;
TMOD=0x21;
TH0=0xfc; //1ms延时常数
TL0=0x66; //频率调节
TH1=PWM ; //脉宽调节
TL1=0 ;
EA=1;
ET0=1;
ET1=1;
TR0=1 ;
while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delayms(10);}
else Bee();
}
while(S1==0);
do{
if(PWM!=0x02)
{PWM-- ;delayms(10);}
else Bee() ;
}
while(S2==0);
}
}
// ---------------------------定时器0中断服务程序
void timer0() interrupt 1
{
TR1=0;
TH0=0xfc;
TL0=0x66;
TH1=PWM;
TR1=1;
P0=0x7f ; //启动输出
}
//---------------------------- 定时器1中断服务程序
void timer1() interrupt 3
{
TR1=0 ;
P0=0xff ; //结束输出
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询