当前位置:首页 > 嵌入式 > 玩转嵌入式
[导读]在数字电路里,只有“0”和“1”的范畴,再复杂的逻辑都是通过0和1的不同组合来实现的。可编程器件的程序编写很复杂,比如路由器、网关等与协议转换相关的产品,其程序动辄十几万行,甚至上百万行。 那这么多程序是怎么编出来的?有什么依据?

在数字电路里,只有“0”和“1”的范畴,再复杂的逻辑都是通过0和1的不同组合来实现的。
可编程器件的程序编写很复杂,比如路由器、网关等与协议转换相关的产品,其程序动辄十几万行,甚至上百万行。
那这么多程序是怎么编出来的?有什么依据?
依据当然是有的,任何一个协议都是有协议范本的,协议范本里边都是通过时序图来阐明数据变化的,程序都是根据时序图来编写的。时序图纵使再复杂,万变不离其宗,讲到底还是0和1的不同组合。
通过一副图简单看一下时序。
上图中阐述了,高电平、低电平、电平变化、有效数据等定义。下面通过IIC几个简单的时序来认识一下。
IIC在发送数据时,要先发送起始信号,起始信号如何表示呢?因为IIC是有上拉电阻的,所以没有数据变化时,都默认高电平。通过时序图可以看出SCL在高电平期间,SDA出现下降沿即可模拟起始信号。程序如下:
void IIC_Start(void)
{
SDA = 1; 
delay_us();
SCL = 1
delay_us();
SDA = 0;
delay_us();
}
如果要模拟停止信号,根据时序图只需要在SCL高电平期间,让SDA出现上升沿即可,程序如下:
void IIC_Stop(void)
{
SDA = 0;
delay_us();
SCL = 1
delay_us();
SDA = 1;
delay_us();
}
下面这篇文章分析74HC595的时序图,请点击标题查看。
74HC595驱动数码管(点击跳转)

关注微信公众号『玩转嵌入式』,后台回复“128”获取干货资料汇总,回复“256”加入技术交流群。


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭