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