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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

PIC单片机的EEPROM读写程序.docx

1、PIC单片机的EEPROM读写程序PIC单片机的EEPROM读写程序PIC16C74B单片机与AT24C64通讯;该程序实现的功能是:;将I2C_A,I2C_B.I2C_K内容写入EEPROM中;同时在EEPROM中读出数据从新写入各个寄存器;=LISTP=16C74B#includeERRORLEVEL-302I2C_AEQU0X20I2C_BEQU0X21I2C_CEQU0X22I2C_DEQU0X23I2C_EEQU0X24I2C_FEQU0X25I2C_GEQU0X26REG1EQU0X2BREG2EQU0X2CCOUNTEQU0X71;I2CBCOUNTEQU0X72;I2CTXBU

2、FEQU0X73;I2CRXBUFEQU0X74;I2CBUSCONEQU0X75;I2CBUSSTAEQU0X76;I2CI2CBUFEQU0X77;I2CSLAVEADDREQU0XA0;I2CDATAADDRHEQU0X01;I2CDATAADDRLEQU0X00;I2C;-;BUSCON;-SLAVE_RWEQU7LAST_BYTE_RXEQU6SLAVE_ACTIVEEQU5TIME_OUTEQU4;-;BUSSTA;-BUS_BUSYEQU7TX_PROGRESSEQU6RX_PROGRESSEQU5TX_SUCCESSEQU4RX_SUCCESSEQU3FATAL_ERROREQ

3、U2;SLAVEEEPROMABORTEQU1ACK_ERROREQU0;-R_NOT_WEQU0TRUEEQU1FALSEEQU0SDAEQU0X04;I2CSCLEQU0X03;I2C;=ORG0X00GOTOSTARTORG0X20STARTBCFSTATUS,RP1BCFSTATUS,RP0CLRFRACLRFRBCLRFRCCLRFRDCLRFREBSFSTATUS,RP0CLRFTRISACLRFTRISBCLRFTRISCCLRFTRISDCLRFTRISEMOVLW0X02MOVWFI2C_AMOVLW0X04MOVWFI2C_BMOVLW0X03MOVWFI2C_CMOVLW

4、0X03MOVWFI2C_DMOVLW0X05MOVWFI2C_EMOVLW0X06MOVWFI2C_FMOVLW0X04MOVWFI2C_G;=START1CALLI2CBUS_INITCALLREGTOI2CBUFCALLI2CWRITECALLCLRI2CBUFCALLD10CALLI2CREADCALLI2CBUFTOREGGOTOSTART1;=;CLRI2CBUF;-CLRI2CBUFBCFSTATUS,RP0MOVLWI2CBUFMOVWFFSRMOVLW0X08MOVWFCOUNTCLRLOOPCLRFINDFINCFFSR,FDECFSZCOUNT,FGOTOCLRLOOPR

5、ETURN;-;将各个REGSTER数据写入I2CBUF缓冲区;-REGTOI2CBUFBCFSTATUS,RP0MOVLWI2CBUFMOVWFFSRMOVFI2C_A,WMOVWFINDFINCFFSR,FMOVFI2C_B,WMOVWFINDFINCFFSR,FMOVFI2C_C,WMOVWFINDFINCFFSR,FMOVFI2C_D,WMOVWFINDFINCFFSR,FMOVFI2C_E,WMOVWFINDFINCFFSR,FMOVFI2C_F,WMOVWFINDFINCFFSR,FMOVFI2C_G,WMOVWFINDFRETURN;-;将I2CBUF缓冲区数据写入各个REGST

6、ER;-I2CBUFTOREGBCFSTATUS,RP0MOVLWI2CBUFMOVWFFSRMOVFINDF,WMOVWFI2C_AINCFFSR,FMOVFINDF,WMOVWFI2C_BINCFFSR,FMOVFINDF,WMOVWFI2C_CINCFFSR,FMOVFINDF,WMOVWFI2C_DINCFFSR,FMOVFINDF,WMOVWFI2C_EINCFFSR,FMOVFINDF,WMOVWFI2C_FINCFFSR,FMOVFINDF,WMOVWFI2C_GRETURN;=;将I2CBUF缓冲区内的数据写入EEPROM;=I2CWRITECALLI2CSTARTBTFSSB

7、USSTA,BUS_BUSYGOTOTX_FAILBCFBUSCON,SLAVE_RWCALLTX_SLAVE_ADDRBTFSSBUSSTA,TX_SUCCESS;SUCESSFULL?GOTOTX_FAILCALLTX_DATA_ADDRBTFSSBUSSTA,TX_SUCCESSGOTOTX_FAILMOVLWI2CBUFMOVWFFSRMOVLW07MOVWFCOUNTT_BYTE_LOOPMOVFINDF,WMOVWFTXBUFCALLI2CTXBBTFSSBUSSTA,TX_SUCCESSGOTOTX_FAILINCFFSR,FDECFSZCOUNT,FGOTOT_BYTE_LOO

8、PGOTOTX_PASSTX_FAILCALLI2CSTOPBCFBUSSTA,TX_PROGRESSBCFBUSSTA,TX_SUCCESSRETLWFALSETX_PASSCALLI2CSTOPBCFBUSSTA,TX_PROGRESSRETLWTRUE;-;从EEPROM中读出数据到I2CBUF寄存器;-I2CREADBCFSTATUS,RP0BCFBUSSTA,RX_SUCCESSCALLI2CSTARTBTFSSBUSSTA,BUS_BUSYGOTORX_FAILBCFBUSCON,SLAVE_RWCALLTX_SLAVE_ADDRBTFSSBUSSTA,TX_SUCCESSGOTO

9、RX_FAILCALLTX_DATA_ADDRBTFSSBUSSTA,TX_SUCCESSGOTORX_FAILCALLI2CSTARTBSFBUSCON,SLAVE_RWCALLTX_SLAVE_ADDRBTFSSBUSSTA,TX_SUCCESSGOTORX_FAILBCFBUSSTA,LAST_BYTE_RXMOVLWI2CBUFMOVWFFSRMOVLW07MOVWFCOUNTR_BYTE_LOOPMOVLW0X01XORWFCOUNT,WBTFSCSTATUS,ZBSFBUSSTA,LAST_BYTE_RXCALLI2CRXBBTFSSBUSSTA,RX_SUCCESSGOTORX_

10、FAILMOVFRXBUF,WMOVWFINDFINCFFSR,FDECFSZCOUNT,FGOTOR_BYTE_LOOPGOTORX_PASSRX_FAILCALLI2CSTOPBCFBUSSTA,RX_PROGRESSBCFBUSSTA,RX_SUCCESSRETLWFALSERX_PASSCALLI2CSTOPBCFSTATUS,RP0BCFBUSSTA,TX_PROGRESSBCFBUSSTA,RX_PROGRESSBSFBUSSTA,RX_SUCCESSRETLWTRUE;=;I2C初始化;=I2CBUS_INITBCFSTATUS,RP0MOVFRC,WANDLW0X18MOVWF

11、RCCLRFBUSSTACLRFBUSCONRETURN;=;传送设备地址;入口:BUSCON;出口:BUSSTA;=TX_SLAVE_ADDRBCFSTATUS,RP0BCFBUSSTA,ACK_ERRORMOVLWSLAVEADDRMOVWFTXBUFBTFSCBUSCON,SLAVE_RWBSFTXBUF,R_NOT_WCALLI2CTXBBTFSCBUSSTA,TX_SUCCESSGOTOTXADDR_SUCCESSCLRWDTBTFSSBUSSTA,ACK_ERRORCALLI2CSTOPGOTOTXADDR_ENDTXADDR_SUCCESSCLRWDTTXADDR_ENDRETU

12、RN;=;TX_DATA_ADDR发送写/读的地址;=TX_DATA_ADDRBCFSTATUS,RP0MOVLWDATAADDRHMOVWFTXBUFCALLI2CTXBBCFSTATUS,RP0BTFSSBUSSTA,TX_SUCCESSGOTOTX_DATA_ADDR_ERRORMOVLWDATAADDRLMOVWFTXBUFCALLI2CTXBBCFSTATUS,RP0BTFSSBUSSTA,TX_SUCCESSGOTOTX_DATA_ADDR_ERRORGOTOTX_DATA_ENDTX_DATA_ADDR_ERRORBCFBUSSTA,TX_PROGRESSBCFBUSSTA,TX

13、_SUCCESSBSFBUSSTA,ACK_ERRORTX_DATA_ENDRETURN;=;向EEPROM输出一个8位数据,并检测EEPROM的ACK信号;入口:TXBUF寄存器;BUSSTA寄存器;出口:EEPROM存储器;BUSSTA寄存器;=I2CTXBBCFSTATUS,RP0BSFBUSSTA,TX_PROGRESSBCFBUSSTA,TX_SUCCESSMOVLW0X08MOVWFBCOUNTTXLOOPCLRWDTBSFSTATUS,RP0BCFTRISC,SCLNOPBCFTRISC,SDABCFSTATUS,RP0RLFTXBUF,FBSFSTATUS,RP0BTFSCSTATUS,CBSFTRISC,SDANOPBSFTRISC,SCLNOPNOPBCFSTATUS,RP0DECFSZBCOUNT,FGOTOTXLOOP;-;检测是EEPROM否有ACK信号产生,产生为正常;检测方法:;1.将RC口的SCL.SDA分别设置为输出和输入状态;2.延时2个指令周期,将SCL设置为高电平;3.延时2个指令周期,检测RC口SDA的状态;4.如果为高电平,设置错误状态,返回;5.如果为低电平,延时2个指令周期后,将RC口SCL设置为低电平,继续执行;-BSFSTATUS,RP0BCF

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

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