单片机的小问题1

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:50:37
单片机可以同时执行两段程序吗?
比如说有键盘的单片机,键盘/显示系统程序要求CPU不断的对LED进行动态显示并实现对键盘的监视; 两个单片机通信的时候,需要不对的用JNB RI, $进行查询; 试问单片机在执行这些程序的时候,还有能力去执行别的程序吗?

单片机可以同时执行两段程序吗?回答是不可。
但是可以“分时”执行多段程序。
采用“中断”方式,可以在执行“主程序”期间,自动转到“中断程序”去,执行完毕后,再转回到主程序。
如果各程序的切换非常快,人的感官区分不出来,就会认为是同时执行多段程序。
如果采用“查询”方式,会比“中断”方式反应慢一些,但是也更灵活一些。
JNB RI, $指令就是对串行口进行查询,可以代替串行口中断。
查询,不宜死盯着一个条件查个没完,没有收到串行数据,就应该去查其它的条件。
合理的进行查询,就能编写出“多任务”的系统。

不能同时执行两段程序
你说的问题可以用中断完成,“中断”系统其实相当一个外部的器件,让你可以并行运行程序,譬如定时中断可以在运行程序的时候进行计数,串口中断可以在运行程序的时候同时进行数据的传输等......
JNB RI, $这条指定运行之后的后果是不断地查询ri,直到ri等于1在跳转,其实用在串口还是可以的,毕竟串口通信还是很快的。

我认为不能,中断的意思是什么,就是正干一件事情的 时候有更重要的 事情需要临时处理,就离开当前去处理一下,要不 怎么得压入堆栈呢,看程序仿真就知道了,是一句一句执行的,只不过计算机速度快,使用中断可以提高速度,减少不必要的时间浪费。

三楼回答的比较好关于可否同时执行两段程序。
即使是流水线结构也不是真正意义上的同时执行
如果同时有按键和led的程序
建议主程序不断对led动态刷新
按键通过外部中断来触发处理
如果采用定时器动态扫描 主程序循环检测键盘
可能会出现按键有时会检测不到的情况

单片机双机通信对接受位进行查询的时候 还是可以被中断打断

小意思啦

在使用串口收发数据的时候,最好使用中断方式,这样能把CPU的消耗降到最低。

比如使用11.0592MHz晶振的51单片机,使用9600bps波特率发送数据,格式为N、8、1,这样在发送一个字节需要的时间是960个机器周期,在这段时间内CPU能做不少事情啊!如果是AVR单片机,那么浪费的就是11520个机器周期(AVR的机器周期等于时