我做控制电机的PWM波用了定时器0,串口接收用了定时器1,没加上串口的时候PWM波还能用,但是加上串口中断PWM就不能用了。电机转得好快。不方便控制,用的直流电机。发个中断部分程序你们帮看下,谢谢了。
void init_t0() //定时器0,PWM产生
{
TMOD=0x01;
TH0=0xfc; //1ms延时常数
TL0=0xff; //频率调节
EA=1;
ET0=1;
TR0=1;
}
void init_int() //串口、定时器初始化
{
TMOD=0x20; //定时器T1,方式二
TH1=0xfd; //波特率2400
TL1=0xfd;
TR1=1; //启动T1
SM0=0; //串口,工作方式一
SM1=1;
REN=1; //允许接收
ES=1; //串口中断允许
EA=1; //开总中断
}
然后中断里面是这样写的:
void timer0() interrupt 1
{
TH0=0xfc;
TL0=0xff ;
A1++;
if(A1==100)A1=0;
if(A1<B1)PWM=1; //启动输出
else PWM=0 ;
}
void chuank () interrupt 4
{
RI=0;
if(SBUF==0x01)
{ num=2;}
else if(num==2)
{kz=SBUF;num=0;}
}
当我删掉串口部分时PWM波就很正常,加上就不行了,我也试过设置优先级,PT0=1,PS=1,PT1=1都不行
刚刚想到了,自己犯2,谁说出来分就给谁了