51单片机—再论IIC—软件通用包(汇编、c语言)—03

我们知道51单片机中具有IIC总线接口的毕竟是少数(其实我就不知道那款~~)如果是是不带IIC总线的单片机,并不必扩展IIC总线接口,只是需要通过软件模拟,这无疑会给IIC总线的应用提供更广泛的空间。通常大多数的单片机应用系统中只有一个CPU,这种单主系统如果采用IIC总线技术,则总线上只有单片机对IIC总线从器件的访问,没有总线的竞争问题。这是后只需要模拟主发送和主接收时序。基于上述考虑,(这才是重点,呵呵),提供在这种使用情况下的时序模拟软件,使IIC总线的使用不受单片机必须带有IIC总线接口的限制。
下面的9个例子可以作为一个软件包,这个软件放入单片机系统的程序程序存储器中,以便用来调用。
1、IIC总线典型信号时序及模拟子程序(其实上一篇已经介绍过了,不过我这里有点补充,顺便小小介绍一下吧)
IIC总线上数据传送时,有起始位,停止位,应答位,非应答位等信号。按照典型IIC总线传送速率的要求,如图:
对于IIC总线的典型信号,可以用指令操作来模拟其时序过程。
若89C51单片机的系统时钟为12MHz,相信的单周期指令为1us,则起始位(START)、停止位(STOP)、发送应答位(MACK)、发送非应答位(MNACK)的5个模拟子程序如下:
1)启动IIC总线子程序START(先是汇编,然后是c语言的)
;--------------------------------------------------------
;发开始信号子程序
START:
//----------------------------------------------------------
//开始信号函数
void IIC_start()
{
}
2)停止IIC总线程序STOP(先是汇编,后是c语言)
;--------------------------------------------------------
;发结束信号子程序
STOP:
//---------------------------------------------------------------
//结束信号函数
void IIC_stop()
{
}
评论