ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:89.39KB ,
资源ID:13337307      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13337307.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(7I2C协议实验报告Word文件下载.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

7I2C协议实验报告Word文件下载.docx

1、;平台定义变量ACK BIT 10H ;应答标志位SLA DATA 51H ;器件从地址SUBA DATA 52H ;器件子地址NUMBYTE DATA 10H ;读写的字节数使用前定义常量SDA EQU P1.7; I2C 总线定义SCL EQU P1.6MTD EQU 30H ;发送数据缓冲区首址 (缓冲区30H 3FH)MRD EQU 40H ;接收数据缓冲区首址缓冲区 40 4FH定义器件地址PCF8574 EQU 40HSAA1064 EQU 70HCSI24WCXX EQU 0A0HORG 0000HAJMP MAINORG 0080HMAIN:MOV SLA, #0A0HCLR

2、ACKMOV SUBA, #80HMOV NUMBYTE, #01HMOV A, #00HMOV P3, AMOV A, #55HPUSH ACCLCALL START ;起动总线MOV A,SLALCALL WRBYTE ;发送器件从地址LCALL CACKJNB ACK,RE1 ;无应答则跳转MOV A,SUBA发送器件子地址POP ACC ;写数据LCALL WRBYTEJNB ACK,RE11LCALL STOPSJMP MAIN2RE1:POP ACCSJMP MAINRE11:MAIN2:JNB ACK,RE2 ;LCALL STARTMOV A,SLA ;INC AJNB ACK

3、,RE2LCALL RDBYTE ;进行读字节操作LCALL MNACK ;发送非应信号SJMP MAIN3RE2:MAIN3:SJMP $INCLUDE (VI2C_ASM.ASM) ;包含VIIC 软件包END2、页ACK BIT 20H ;SLA DATA 50H ;SUBA DATA 51H ;NUMBYTE DATA 52H ;SDA EQU P1.7 ;发送数据缓冲区首址缓冲区30H3FH接收数据缓冲区首址缓冲区40H4FHORG 8000H ;采用软件调试法ORG 8080H MOV R4,#0F0H ;延时等待其它芯片复位好DJNZ R4,$MOV SP,#60H ;设置堆栈指

4、针MOV 3FH,#00H ;给MTD赋值MOV 30H,#01H MOV 31H,#02H MOV 32H,#03HMOV 33H,#04HMOV 34H,#05HMOV 35H,#05HMOV 36H,#07HMOV 37H,#08HMOV 38H,#09HMOV 39H,#0AHMOV 3AH,#0BHMOV 3BH,#0CHMOV 3CH,#0DHMOV 3DH,#0EHMOV 3EH,#0FHMOV SLA,#0A0H ;设置写的从地址MOV SUBA,#80H ;设置子地址MOV NUMBYTE,#10H ;设置字节数,这里因为读写一页字节,所以为10H(16)LCALL IWRN

5、BYTE ;调用写EEPROM程序MOV A,#01HLCALL IRDNBYTE ;调用读EEPROM程序MOV A,#33H;I2C软件包6、实验记录1、第一个实验程序运行完成后,打开“memory window”,在查询栏输入所要查看的地址空间。输入发送缓冲区首地址“D:30H”,该地址处显示的数据为“55”;输入接收缓冲区首地址“D:40H”,该地址处显示的数据为“55”。2、第二个实验程序运行完成后,同样使用“memory window”查看发送、接收缓冲区内的数据。D:30HD:3FH中储存的数据为“00 01 02 . 0E 0F”;40HD:4FH中储存的数据同样是“00 01

6、 02 . 0E 0F”。7、实验分析 1、协议的基本工作原理如下:以启动信号START来掌管总线,以停止信号STOP来释放总线; 每次通讯以START开始,以STOP结束; 启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为 读/写控制位R/W,R/W位为0表示由主控向被控器件写数据,R/W为1表示由主控向 被控器件读数据; 当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号 每个数据字节在传送时都是高位(MSB)在前。协议通讯过程分为写通讯和读通讯两部分,其过程如下。写通讯过程:(1)主控在检测到总线空闲的状况下,首先发送一个START信

7、号掌管总线;(2)发送一个地址字节(包括7位地址码和一位R/W);(3)当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);(4)主控收到ACK后开始发送第一个数据字节;(5)被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送 数据结束;(6)主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线。读通讯过程:(4)主控收到ACK后释放数据总线,开始接收第一个数据字节;(5)主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束;下图所示为一次完整的通信过程的时序:图中,SCL线上17位为7位地址码,第8位为读写位R

8、D,第9位为ACK应答位, 紧接着的为第一个数据字节,然后是一位应答位,后面继续第2个数据字节。如图所示,主控器在检测到总线空闲(数据线SDA和时钟线SCL同时处于高电平状态) 时,首先发送一个启动信号S(在时钟线SCL保持高电平期间,数据线SDA上电平被拉 低),它标志着一次数据传输的开始。之后主控器发送一个地址字节包括7位地址码和 一个读写位。被控器收到地址字节后反馈一个应答信号ACK=0,主控器接收到ACK后 开始发送第一个数据字节,被控器接收到第一个数据字节后,由反馈一个应答信号 ACK=0。主控器收到应答信号后开始传送第二个数据字节。依次循环,主控器发送完 数据后,就发送一个停止信号

9、P(SCL保持高电平期间,SDA被释放,返回高电平),并 释放总线,使得总线返回空闲状态。在通信过程应注意以下6点:(1)进行数据传送时,在SCL为高电平期间,SDA线上电平必须保持稳定,只有SCL 为低时,才允许SDA线上电平改变状态。并且每个字节传送时都是高位在前。(2)对于应答信号,ACK=0时为有效应答位,说明接收器已经成功接收到该字节,若 为1则说明接受不成功。(3)如果被控器需要延迟下一个下一个数据字节开始传送的时间,可以通过把SCL电 平拉低并保持来强制主控器进入等待状态。(4)主控器完成一次通信后还想继续占用总线在进行一次通信,而又不释放总线,就 要利用重启动信号Sr。它既作为

10、前一次数据传输的结束,又作为后一次传输的开始。(5)总线冲突时,按“低电平优先”的仲裁原则,把总线判给在数据线上先发送低电 平的主器件。(6)在特殊情况下,若需禁止所有发生在I2C总线上的通信,可采用封锁或关闭总线, 具体操作为挂接在总线上的任一器件将SCL锁定在低电平即可。2、实验中需要使用到I2C软件库,库中包含了CAT24WC02读写数据的基本命令。汇 编语言中调用软件库的指令为“include(文件名)”命令,该指令一般放在程序末尾。实 验中所需调用的函数库文件名为“VI2C_ASM.ASM”,将其从光盘中复制到工程所在文 件夹中,即可使用上述指令调用软件包。完整的调用命令如下:$IN

11、CLUDE (VI2C_ASM.ASM) ;包含 I2C 模拟软件包常用的四个命令如下:IRDBYTE (无子地址)读单字节数据 (现行地址读)IWRBYTE (无子地址)写单字节数据 (现行地址写)IRDNBYTE (有子地址)读N字节数据 (随机地址读)IWRNBYTE (有子地址)写N字节数据 (随要地址写)在本实验中,由于需要页读/写,故采用IRDNBYTE与IWRNBYTE子程序。代码如下:LCALL IWRNBYTE ;调写EEPROM子程序(随机地址写)及:LCALL IRDNBYTE ;调写EEPROM子程序(随机地址读)这两个命令需要使用NUMBYTE来控制读/写的字节数。第一个实验需要发送一个字节, 即:MOV NUMBYTE,#01H ;设置待发字节数为1第二个实验要发送一页数据,即16位:MOV NUMBYTE,#10H ;设置待发字节数为163、实验一中读/写的一位数据为55H,直接送入寄存器A:MOV A, #55H ;将所要发送的数据放入发送缓冲区实验二中需要读/写一页16位数据,采用直接存入方法:显然,这是一种繁琐的方法,改进的方法是采用循环递减的方式将10H00H存入发送 缓冲区MTD,代码如下:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1