II汇编子程序.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
II汇编子程序.doc

一、概述 为了非常方便地对I2C从器件进行快速的、正确的读写操作,我们为此而没计出虚拟I2C总线 操作平台软件包。本软件包是主力*式下的虚拟I2C总线软件包,只要用户给子程序提供儿个主要的 参数,即可轻松地完成任何I2C总线外围器件的应用程序设计。 I2C总线足PHILIPS公司推出的芯片间串行数裾传输总线,2根线(SDA、SCL)即可实现完 善的伞双工冋步数裾传送,能够十分方便地地构成多机系统和外围器件扩展系统。I2C器件是把I2C 的协议植入器件的I/O接口,使用时器件直接挂到I2C总线上,这一特点给用户在设计应用系统带 來了极大的便利。I2C器件无须片选信号,否选屮是山主器件发岀的I2C从地址决定的,而I2C器 件的从地址是由I2C总线委员会实行统一发配。我们推出的I2C总线的操作平台软件包,以要你 给出器仲从地址[,了地址,注PCF8574无了?地址]即川’进行字节读、字节写、多字节读、多字 节写,能够非常方便地使用I2C器件,无须你介入底层的I2C操作协议。 编程序软件包 IRDBYTE 无子地址 IWRBYTE 无子地址 IRDNBYTE 有子地址 IWRNBYTE 宵了-J4址此软件包是川在平主I2C总线上,硬件接口是SDA、SCL, IRDBYTE 无子地址 IWRBYTE 无子地址 IRDNBYTE 有子地址 IWRNBYTE 宵了-J4址 读中字节数裾 写单字节数裾 谈N 读中字节数裾 写单字节数裾 谈N字节数据 写N字节数裾 说明:现行地址读/写即专指无子地址的器件,不给记子地址的读/写操作。 软件包占用闪部资源:RO R1 R2 R3 ACC Cy。 使用前须定义变量:SLA器件从地址,SUBA器件子地址,NUMBYTE读/写的字节数,位变量ACK 使用前须定义常量:SDA、SCL总线位,MTD发送数裾缓冲区首址,MRD接收数裾缓冲区首址。 4 .******************************************************** Z ****************************** . VI2C ASM . ASM,?工2C 软件包的底 层子程序,使用前要定义好SCL和SDA。在标准80C51模式(12 Clock) 下,对主频要求是 ;不高于12MHz (1个机器周期lus);若Fosc〉12MHz,则要增加相应的 NOP指令数. ;在使用本软件包时,请在你的程序的未尾加入$INCLUDE (VI2C_ASM.ASM) 即 uj ?★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ START: SETB SDA ;setb: 一个指令周期,一个机器周期,lus NOP ;nop: 一个指令周期,一个机器周期,lus SETB NOP NOP NOP NOP SCL ,?起始条件建立时间大于4.7us NOP CLR SDA ;clr: 一个指令周期,lus NOP ;起始条件锁定时大于4us NOP NOP NOP NOP CLR SCL ,?钳住总线,准备发数据 NOP RET ;ret: 2个指令周期,2us ,?结束总线子程序 STOP: CLR SDA NOP SETB SCL ;发送结朿条件的时钟信号 NOP NOP NOP NOP SETB SDA ,?结束总线 NOP ;保证一个终止信号和起始信号的空闲吋间大于 4.7us NOP NOP NOP RET ;发送应答信号子程序 MACK: CLR SDA ;将 SDA 置 0 NOP NOP SETB SCL NOP ,?保持数据吋间即SCL为高吋间大于 4.7us NOP NOP NOP NOP CLR SCL NOP NOP RET ,?发送非应答信号 MNACK: SETB SDA ,?将 SDA 置 1 NOP NOP SETB SCL NOP NOP ;保持数据时间,即SCL为高吋间大于4.7us NOP NOP NOP CLR SCL NOP NOP RET ;检齊应答位子程序;返回值,ACK=1时表示有应答 CACK: SETB SDA NOP NOP SETB SCL CLR ACK NOP NOP MOV C, SDA JC CEND ; jc: 2个指令周期,2us CEND: NOP RET ,?发送字节子程序;字节数据放入ACC ;每发送一字节要调用一次CACK子程 序,取应答位 WRBYTE: MOV RO,#08H WLP: RLC A ,?取数据位 rlc: 1个指令周期,lus JC WR1 SJMP WRO ,?判断数据位sjmp: 2个指令周期,2us WLP1: DJNZ RO, WLP ;djnz:

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档