手册看的不仔细,蒸腾了好几天。
想当然认为SMW92从REV执行开始就计时,实际是从接收到信息后才开始计时,如果收不到信息,它不计时。也就不能停止接收。就会导致同时接收和发送。就会发送不出数据。也就没有发送完成中断。程序就卡住了。
SMB87=16#FC或9C时,启用了空闲检测,恰巧SMW90没赋值,就是SMW90=0。REV执行后超时计时器工作。超时后停止接收。不会出现同时发送和接收。
SMB87=16#EC,没有启用空闲检测,直到收到开始字符后,超时计时器才计时。
定时中断里发送指令前加入禁用接收就好了。
