高分! 在51里的串口接收中如何加入超时处理?
我现在需要用到2051接收来自PC的数据(长度不定,但长度信息是在接收的第一个字节里),打算用方式1,定时器2,串口超时了就表示接收已经完成,现在问题是:如何实现串口的超时处理? 是用另外一个定时器?还是在等待RI的过程中DJNZ某数以实现计时?
请指教
[解决办法]
用状态机...
在定时器中断里改变状态即可...
[解决办法]
用另外一个定时器就可以实现了啊
[解决办法]
没大看明白你的意思,不过你记下串口中断的次数不就行了,每次接受一个字节的话,中断次数就是你数据的长度,到时判断就行了
[解决办法]
应该是都可以,而且从你的说法上来看,你好像是用汇编实现的,基于这样的前提(汇编每条指令的时间可以预估),你都可以实现精确的计时,从而判断是否超时;如果用计时器的话,另一个定时器资源就被占用了。
[解决办法]
用定时器
接受的时候就启动,置标志states = false ;
定时一到
if(states) //完成
{
}
else //超时
{
}