串口通信,或者 IIC 通信,应该是由专门的硬件,来完成的。
CPU 对这些硬件,设置一下,再传送一下数据,就可以等待结果了。
有些单片机,太简陋,没有相应的硬件,只能用软件编程,模拟硬件,来实现。
执行这些程序,当然,必须占用 CPU 的时间。这就是《占用大量的cpu资源》。
有时,还要使用定时器、中断源,这也是《占用大量的资源》。
模拟串口通信,或者模拟IIC通信都会占用大量的cpu资源,这种讲法不成熟,如果是使用延时方式做的话,确实会占用大量的cpu资源,但是使用中断和其它方式配合的方法,其实不会很占资源,这个要看个人的能力。
模拟串口通信没有做过,模拟IIC通信倒是做过了的,对于IIC来说就是要CPU控制一个I/O实现高频率的翻转来提供时钟,而另外一个I/O作为数据线,因为I/O的高速翻转,所以要大量占用CPU的资源。
如果单片机有串口,用它是最好的,编程方便,接口现成.模拟是为了解决老式的单片机无串口的一种替代方法.对于学习串口的工作原理理解有意,但需要单片机模拟出串口的时钟以及对应的时序关系来,因此单片机需要模拟,计算,发送,接收时也需要判断时序和有用信号的分解还原.
打个比方:就像盖房子用的塔吊 转移材料用它很方便 ,只需要一个人操作机器就可以完成,
就相当于内置串口模块 ,你只需要给他数据,接收数据,他负责帮你处理过程。它就是片内的 硬件模块。不需要多少CPU资源。
如果你不用塔吊 那么你起码得十几个人才能完成 这么大量的材料转移 。这样就占用大量人力 时间。就好比是模拟通信 每一步都要自己做。。
模拟 你要 时序,数据合成,波特率精确计算。这样的结果就是 波特率适应性不强 略微偏差可能就会出错。。现在来讲 模拟的基本没有 什么太多优点了 ,因为这个协议已经很成熟了 已经死了,基本没什么可优化了
模拟的应用场所 无非就是那些,没有uart硬件的 不得不采用的办法、、