您的位置 首页 测评

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

感觉心有不甘,呵呵,小小整理一下。我们知道51单片机中具有IIC总线接口的毕竟是少数(其实我就不知道那款~~)如果是是不带IIC总线的单片

感觉心有不甘,呵呵,小小收拾一下。

咱们知道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:SETBSDA
SETBSCL;开端条件树立大于4.7us
NOP
NOP
NOP
NOP
NOP
CLRSDA;开端条件确定大于4us
NOP
NOP
NOP
NOP
NOP
CLRSCL;钳住总线,预备好发送数据
NOP
RET

//———————————————————-
//开端信号函数
void IIC_start()
{
sda=1;
_nop_();
scl=1;//开端信号树立时刻大于4.7us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
sda=0; //开端信号确定大于4us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;//钳住IIC总线,预备发送或许接纳数据
_nop_();
_nop_();
}

2)中止IIC总线程序STOP(先是汇编,后是c言语)

;——————————————————–
;发完毕信号子程序
STOP:CLRSDA
NOP
SETBSCL;完毕总时刻大于4us
NOP
NOP
NOP
NOP
NOP
SETBSDA
NOP ;确保一个停止信号和其实信号的闲暇时刻大于4.7us
NOP
NOP
NOP
NOP
RET

//—————————————————————
//完毕信号函数
void I%&&&&&%_stop()
{
sda=0;
_nop_();
scl=1; //完毕时刻大于4us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
sda=1;//确保一个停止信号和其实信号的闲暇时刻大于4.7us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/259612.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部