在AT89S8253上利用SmallRTOS 编写了一个程序,在Keil 仿真都正常,串口能够输出正确的字符,但是下载到单片机以后,串口输出1个正确字符以后,就输出错误的字符了。跟踪发现时在串口中断程序里面,OSQAccept(&temp,SerialOutData) 传递过来的值temp不能送到SBUF里面,请问大侠们问题何在?<br />这个程序在C8051F023上跑起来没有问题,串口通讯都正确。是否在Keil 编译的时候哪里设置不对?<br /><br />、***********************************************************/<br />中断程序如下:<br /> void comm(void) interrupt 4<br />{<br /> uint8 data temp;<br /> if (RI == 1) //这句适用于普通C51单片机<br /> {<br />#if EN_OS_INT_ENTER >0<br /> OS_INT_ENTER();<br />#endif<br /> RI = 0;<br /><br /> OSQIntPost(SerialInData,SBUF);<br /><br /> OSIntExit();<br /> return;<br /> }<br /> if (TI == 1)<br /> {<br /> TI = 0;<br /> if (OSQAccept(&temp,SerialOutData) == OS_Q_OK)<br /> {<br /> SBUF = temp; //运行到这里,SBUF则只发送一个随机值,而不是OSQAccept()取出来的消息<br /> //SBUF='2'; //这里加上这个测试语句,串口则能正确的发送字符2出去,<br /> }<br /> else<br /> {<br /> SerialCanSend = 1;<br /> }<br /> }<br />}<br /><br /><br /> |
|