为啥STC串口中断后不能进入空闲模式
如果设置串口的PCOM=0X01;能够进入空闲模式,串口只能中断1次,不能再次中断。如果不设置,能再次中断,但是不能进入空闲模式////////////////////
//初始化串口
void INIT_UART()
{
TMOD=0X20; //定时器1,模式2
TH1=0Xfd; TL1=0Xfd; //9600初值
PCON=0X00; //串行口不加倍
TR1=1; //开定时器1
SCON=0X50; //串行口方式1,SM2置位为0,REN=1允许接收,TB8,RB8,TI,RI清零
ES=1;
EA=1;
}
///////////////////////////
///串口中断
void receive() interrupt 4
{
uchar x;
ES=0;
if(SBUF=='@')
{
for(x=0;x<6;x++)
{
while(!RI);RI=0;
ORDER=SBUF;
}
if(ORDER==ORDER^ORDER^ORDER^ORDER^ORDER)
{
SBUF=0xDD;
while(!TI);TI=0;
}
}
CLEAR_ORDER();
ES=1;
PCON=0X01;
}
void main()
{
INIT_UART();
CLEAR_ORDER();
PCON=0X01;
while(1);
} void receive() interrupt 4
{
uchar x;
ES=0;
if(SBUF=='@')
{
for(x=0;x<6;x++)
{
while(!RI);RI=0;
ORDER=SBUF;
}
if(ORDER==ORDER^ORDER^ORDER^ORDER^ORDER)
{
SBUF=0xDD;
while(!TI);TI=0;
}
}
CLEAR_ORDER();
ES=1;
//PCON=0X01;
}
void main()
{
INIT_UART();
CLEAR_ORDER();
// PCON=0X01;
while(1)
PCON=0X01;
} 万分感谢,可以了。 楼主这种情况是啥原因呢,是不是因为没有退出中断的原因呀, 可能是因为没有从ISR退出,中断不会响应,于是不能从睡眠唤醒.....
页:
[1]