【发布时间】:2010-11-13 23:24:37
【问题描述】:
我正在使用 PIC18F 并尝试通过超级终端发送数据。当我通过每半秒按下一个键以慢速发送数据时,它会接收数据并正确回显它,但是当我开始以更快的速度按下键时,MCU 会锁定。不知道是什么原因造成的。
while(index<length){
while(PIR1bits.RCIF==0); // Wait till char recieved
sendData(str2,9); // confirm reception
Delay1KTCYx(5); //delay because without it, it messes up.
rxData[index]= RCREG; //char array
index++;
}
在 PIC 和超级终端上的波特率都是 2400。
这是我们的接收循环。 sendData 只是我们发送说“已收到”的调试代码。这是我们知道它何时冻结的方式。
它不会每次都以相同数量的循环冻结,这仅取决于我们输入数据的速度。
【问题讨论】:
-
你怎么知道PIC被锁定了?代码来自您的 ISR?或者您是否有额外的 ISR 用于接收字节?
-
这是在中断服务程序中吗?不要循环,不要发送,不要延迟。