做一个红外学习的板子,通过定时器来识别外部的红外信号,然后将信号发送出去。现在遇到的问题是单片机上电后,在没有发送红外信号的情况下,老是进入到红外中断程序中,红外接收端连接的是P3.3,设置是下降沿触发进入中断。(程序初始化程序如下贴出)当发送红外信号时单片机就会卡死,请高手指导下,万分感谢!
void InitTimer0(void)
{
//TMOD = 0x01;
TH0 = 0x0FF; //50us
TL0 = 0x0D2;
//EA = 1;
ET0 = 1; //允许定时器中断
TR0 = 1;
}
/***********************************************
串口通讯初始化
***********************************************/
void InitUART(void)
{
//TMOD = 0x20;
//PCON=0x00; /*SMOD=0,波特率不翻倍*/
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
//EA = 1;
ES = 1;
TR1 = 1;
}
void init(void)
{
ir=1 ; //红外端口写 1
TMOD=0x21; //定时器0模式1,16 位自动装载模式;定时器1模式2,8 位自动装载模式
InitTimer0(); //定时器T0,时间50us
InitUART(); //打开串口通讯,波特率9600,晶振11.0592MHz
EA=1 ; //开总中断
EX1=1;//允许外部中断
IT1=1; //红外接收中断,INT1下降沿触发
}
void int1()interrupt 2
{
TR0=1;//开定时器中断
temp=0x55;
SendOneByte(temp);
} |