假如有两条指令几乎同时(间隔千万分之一秒)输入单片机,那么单片机如何判断先处理哪一个?(是由随机因素决定?还是按某种原则决定?或者单片机不会分不出指令输入的先后,不管间隔多么小?还是别的什么原因)
那么,这就是说,单片机不能获得实时数据,也就不能与外部传感器相连使用了,对吗?
追答数据,可以随时获得。
程序,是固定不变的。
数据,是存入到单片机的 RAM 里面的。
单片机的 ROM,是只读的,你存不进去。
想要变更程序,必须执行单片机专用的下载程序。
擦除原有的全部,重新写入。
单片机在工作期间,想要改变部分程序代码,基本上,
这是不可能的。
---------
有些 32 位的单片机,却允许这样做。
那么,假如两个数据几乎同时输入,单片机怎样判断谁先谁后呢(比如,你喊A,我喊B,单片机几乎同时收到,那单片机能不能判断咱俩谁先喊的(距离一样近))
追答这些,确实都是数据。
可以称之为《命令》,而不是《指令》。
---------------
外设同时送来数据,确实是有可能的。
那么,单片机先接收那一个?
是接收一个命令,就执行它所要求的操作?
然后再接收另一个?
还是两个都接收之后,挑选你认为重要的,先执行?
这些,你就不用问别人了。
这都是单片机内部的程序所决定的。
你怎么编写的程序,单片机就会怎么操作。
---------------
对于 51 单片机,有两个外部中断申请输入端,这
就是外部设备送来信息的常用通道。
假设两个外部申请同时出现,51 单片机就会先响
应《外部中断0》的申请,后响应《外部中断1》
的申请。
这个次序,叫做《自然优先级》。
优先级,还可以通过程序来修改。
程序,怎么编写的,单片机就会怎么处理外来的
数据。
我想让它判断两信号谁先谁后,可以行的通吗?
追答先到的(或者优先级别高的),就开始接收、执行该命令了。
难道你还真想要等着、等着...,非得等另一个来到之后,
再来判断两个谁先谁后?
真要这么做,程序也可以编写出来。
两个输入,条件都满足了之后,再执行某一个。
就像超声波测距,两个目标回波,收到一个,不算完,
非得收到另一个,才开始计算两者的时间差。
那么两个信号间隔时间至少大于多少才能让单片机不认为这是同一个信号呢?
可以是c语言
ROM不是只读吗
是IO输入状态
追答单片机的运行是有机器周期的,拿51单片机来说吧,12M晶振下机器周期是1us,理论上两个IO变化的间隔大于1us的才可以分辨