STC 串口复用中断切换不过来???
大家好,我使用stc12c5a60s2单片机,使用其中的的串口2,想让其两个引脚都产生中断,并在中断服务程序中进行区分是哪个引脚引起的,一直没成功,过来万能的坛进行求解,谢谢。中断代码如下://串行口2接受中断程序
void UART2RInt(void) interrupt 8 using 3
{
unsigned char temp;
unsigned char reset;
temp=S2CON; //clear interrupt symbol
temp=temp&0xfe;
S2CON=temp;
if(AUXR1&0x10==0)
{GPS=S2BUF;
if(GPS==0x0a)
{
if(GPS==0X41)
{
endGPS=RGCount;
RGCount=0;
GPSV=1;
}
else
RGCount=0;
}
else
{RGCount++;GPSV=0;}
}
else if(AUXR1&0x10==0x10)//这个判断一直进不去啊,不能发送55 和aa 进行观察???
{AUXR1=AUXR1|0x10;
SendUARTTwoB(0x55);
SendUARTTwoB(0xAA);
}
} 又是stc,lz你悲剧了 回复【1楼】babysnail 蜗仔
-----------------------------------------------------------------------
哥们,何解?是不是说stc太烂了啊? 你应该先设置P4SW,把P4口搞成IO,否则P4口无功能! 回复【3楼】flywater 落叶
你应该先设置p4sw,把p4口搞成io,否则p4口无功能!
-----------------------------------------------------------------------
刚查看了一下datasheet P4SW的设置与串口使用到P4里面的引脚无关 void UART2RInt(void) interrupt 8 using 3
按这个看猫是了弟9个 中断 ?
有中断的不是在 3.03.1么
我这没这样搞过从流程上来说你想改变用法 哪就重新配置IO状态
最省事的还是 用IO为 IO状态 要发送数据了在 设置为 串口完了在设置回 IO状态 请看数据手册,串口一和串口二中断是两个独立的中断入口。
一楼不要误导新人,STC挺好 把if(AUXR1&0x10==0)和else if(AUXR1&0x10==0x10)改成if((AUXR1&0x10)==0)和else if((AUXR1&0x10)==0x10),不同的编译器表达式优先级别有差异,KEIL内必须加上括号。
另不知道你的SendUARTTwoB发送函数是怎么写的,强烈不建议在串行中断内直接用死等方式发送数据,除非老妖手册上会这么干。 回复【7楼】flywater 落叶
把if(auxr1&0x10==0)和else if(auxr1&0x10==0x10)改成if((auxr1&0x10)==0)和else if((auxr1&0x10)==0x10),不同的编译器表达式优先级别有差异,keil内必须加上括号。
另不知道你的senduarttwob发送函数是怎么写的,强烈不建议在串行中断内直接用死等方式发送数据,除非老妖手册上会这么干。
-----------------------------------------------------------------------
谢谢,就是因为senduarttwob里面有个死等,我后面用个标志,在主函数里面senduarttwob了,谢谢了!非常感谢!同时也感谢这种乐于助人的精神。 STC还是可以的。
页:
[1]