文档详情

IIC汇编子程序.doc

发布:2017-01-01约6.75千字共11页下载文档
文本预览下载声明
 一、概述   为了非常方便地对 I2C 从器件进行快速的、正确的读写操作,我们为此而设计出虚拟 I2C 总线操作平台软件包。本软件包是主方式下的虚拟 I2C 总线软件包,只要用户给子程序提供几个主要的参数,即可轻松地完成任何 I2C 总线外围器件的应用程序设计。   I2C 总线是 PHILIPS 公司推出的芯片间串行数据传输总线,2 根线(SDA、SCL)即可实现完善的全双工同步数据传送,能够十分方便地地构成多机系统和外围器件扩展系统。I2C 器件是把 I2C 的协议植入器件的 I/O 接口,使用时器件直接挂到 I2C 总线上,这一特点给用户在设计应用系统带来了极大的便利。I2C 器件无须片选信号,否选中是由主器件发出的 I2C 从地址决定的,而 I2C 器件的从地址是由 I2C 总线委员会实行统一发配。我们推出的 I2C 总线的操作平台软件包,只要你给出器件从地址[,子地址,注 PCF8574 无子地址 ] 即可进行字节读、字节写、多字节读、多字节写,能够非常方便地使用 I2C 器件,无须你介入底层的 I2C 操作协议。   二、编程序软件包   此软件包是用在单主 I2C 总线上,硬件接口是SDA、SCL,使用MCU 的 I/O 口来模拟 SDA/SCL 总线。设计有/无子地址的子程序是根据 I2C 器件的特点,目的在于将地址和数据彻底分开。软件包的接口界面为 IRDBYTE  无子地址  读单字节数据  现行地址读 IWRBYTE  无子地址  写单字节数据  现行地址写 IRDNBYTE 有子地址  读 N 字节数据 IWRNBYTE 有子地址  写 N 字节数据   说明:现行地址读/写即专指无子地址的器件,不给定子地址的读/写操作。 软件包占用内部资源:R0 R1 R2 R3 ACC Cy。 使用前须定义变量:SLA 器件从地址,SUBA 器件子地址,NUMBYTE 读/写的字节数,位变量 ACK 使用前须定义常量:SDA、SCL 总线位,MTD 发送数据缓冲区首址, MRD 接收数据缓冲区首址。 ;************************************************************************************** ;VI2C_ASM.ASM ;I2C 软件包的底层子程序,使用前要定义好 SCL 和 SDA。在标准 80C51 模式(12 Clock)下,对主频要求是 ;不高于 12MHz(1 个机器周期 1us);若 Fosc12MHz,则要增加相应的 NOP 指令数. ;在使用本软件包时,请在你的程序的未尾加入$INCLUDE (VI2C_ASM.ASM)即可 ;************************************************************************************* ;启动 I2C 总线子程序 START: SETB SDA       ;setb:一个指令周期,一个机器周期,1us NOP            ;nop:一个指令周期,一个机器周期,1us SETB SCL ;起始条件建立时间大于 4.7us NOP NOP NOP NOP NOP CLR SDA       ;clr:一个指令周期,1us NOP ;起始条件锁定时大于 4us NOP NOP NOP NOP CLR   SCL ;钳住总线,准备发数据 NOP RET           ;ret:2个指令周期,2us ;结束总线子程序 STOP: CLR SDA NOP SETB SCL ;发送结束条件的时钟信号 NOP ;结束总线时间大于 4us NOP NOP NOP NOP SETB SDA ;结束总线 NOP ;保证一个终止信号和起始信号的空闲时间大
显示全部
相似文档