在数字电路里,只有“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();
}
领取专属 10元无门槛券
私享最新 技术干货