那么问题真好和我 3楼的猜测一致的.
jnb ri,$
这条指令可能会消耗非常长的时间才能跳过去. 因为它要接收到数据才能往下走的.
想不消耗时间, 你可以这样写.
uart_rx:
jnb ri, u_r_end
mov a,sbuf
clr ri
u_r_end: ret
不过这回打乱你的原有程序的规划.
另外:
程序关键部分:
......
acall uart_rx //接收串口字符
cjne a,#0cdh,error //查询串口,若收到“cd”则是判定方向指令,否则报错
acall CheckDIR
......
这里头上和尾上的省略部分还有很费时的事情在做也是可能的.
所以最好楼主如 3 楼, 换个思路来写这个程序.
|