定时器1工作在模式1,计时不中断,INT1下降沿中断,实验证明运行正常。
初始化及中断代码如下:
void initime()
{
TMOD=0x10;
EA=1;
IT1=1;
EX1=1;
TH1=0;TL1=0;
TR1=1;
}
//=====================================================
void Time1() interrupt 2 //外部中断解码程序
{
Tc=TH1*256+TL1; //提取中断时间间隔时长
TH1=0; TL1=0; //定时中断重新置零
if(Imin<Tc&&Tc<Imax){m=0; f=1; return;} //找到启始码
if(f){
if(Inum1<Tc&&Tc<Inum3){Im[m/8]=Im[m/8]>>1|0x80; m++;}//取1码
if(Inum2<Tc&&Tc<Inum1){Im[m/8]=Im[m/8]>>1; m++;}//取0码
if(m==32){m=0;f=0;
if((Im[2]==~Im[3])&&(Im[0]==~Im[1]))
{IrOK=1;laba=0;delay(1000);laba=1;}//取码完成后判断读码是否正确
else IrOK=0;}
}
}
定时器0工作在模式1,100微秒定时中断,实验证明运行正常。
初始化及中断代码如下:
//===================================
void Timer0_Init() //定时0.1ms(100um),
{
TMOD=0x01;
IE=0x82;
TH0=0xff;//65436/256;11.0592晶振
TL0=0x9c;//65436%256
TR0=1;
}
//======================================
void Time0() interrupt 1 //中断程序
{
TH0=0xff;
TL0=0x9c;
if(m1>jd1) pwm1=1;
else pwm1=0;
if(m2>jd2) pwm2=1;
else pwm2=0;
if(m3>jd3) pwm3=1;
else pwm3=0;
m1++; m1%=m;
m2++; m2%=m;
m3++; m3%=m;
// 根据io口及pwm需要情况可加m3,jd3,m4,jd4,m5,jd5……
}
现在我想实现用红外遥控调节三路LED亮度(定时器1工作在模式1,计时不中断,定时器0也工作在模式1,100微秒定时中断,INT1下降沿中断,)为啥不能同时工作呢?求指点。搞了几天了,找不到原因。
初始化及中断代码如下:
//========================
void initime()
{
TMOD=0x11;
EA=1;
IT1=1;
EX1=1;
TH1=0;TL1=0;
TR1=1;
TR0=1;
IE=0x82;
TH0=0xff;//65436/256;11.0592晶振
TL0=0x9c;//65436%256
}
//======================================
void Time0() interrupt 1 //中断程序
{
TH0=0xff;
TL0=0x9c;
if(m1>jd1) pwm1=1;
else pwm1=0;
if(m2>jd2) pwm2=1;
else pwm2=0;
if(m3>jd3) pwm3=1;
else pwm3=0;
m1++; m1%=m;
m2++; m2%=m;
m3++; m3%=m;
// 根据io口及pwm需要情况可加m3,jd3,m4,jd4,m5,jd5……
}
//=====================================================
void Time1() interrupt 2 //外部中断解码程序
{
Tc=TH1*256+TL1; //提取中断时间间隔时长
TH1=0; TL1=0; //定时中断重新置零
if(Imin<Tc&&Tc<Imax){m=0; f=1; return;} //找到启始码
if(f){
if(Inum1<Tc&&Tc<Inum3){Im[m/8]=Im[m/8]>>1|0x80; m++;}//取1码
if(Inum2<Tc&&Tc<Inum1){Im[m/8]=Im[m/8]>>1; m++;}//取0码
if(m==32){m=0;f=0;
if((Im[2]==~Im[3])&&(Im[0]==~Im[1]))
{IrOK=1;laba=0;delay(1000);laba=1;}//取码完成后判断读码是否正确
else IrOK=0;}
}
}
void Time1() interrupt 2 //外部中断解码程序
上面一行的红字部分要对应!
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |