PIC18F452单片机原理及编程实践(第十四章)PIC18的EEPROM模块编程.ppt

PIC18F452单片机原理及编程实践(第十四章)PIC18的EEPROM模块编程.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * FREE Flash的擦除选择位 1 按照TBLPRT指向的flash中程序行进行 擦除操作(完成后自动回零)。 0 仅进行写操作 WRERR 写操作出错标志 1 写操作被提前终止 0 写操作正常完成 EEPGD CFPG --- FREE WRERR WREN WR RD LSB MSB EECON1 寄存器(续1) 返回 * * WREN EEPROM 或 flash 写使能位 1 允许写周期 0 禁止向EEPROM或flash写 WR EEPROM 或 flash写控制位 1 启动写操作(也可启动擦除过程) 0 写操作正常完成 RD 仅用于EEPROM 读控制位 1 启动EEPROM的读操作 0 不启动读操作 EEPGD CFPG --- FREE WRERR WREN WR RD LSB MSB EECON1 寄存器(续2) 返回 * * 14.3.2 写flash的步骤(假设flash已经被擦除) 将要写入flash的数据首地址赋給表指针TBLPTR(21位); 使用TBLWT指令依次将8B数据写入TABLAT(短写); 设置EECON1(EEPGD=1、CFGS=0、WREN=1); 关闭所有中断(BCF INTCON,GIE); 将55H写入EECON2(长写入的开始); 将AAH写入EECON2; 使用BSF EECON1,WR(在WR=1期间写周期开始); 将8B数据写入flash需要2ms,此时CPU停止工作。 当写过程结束时 WR=0 表明长写过程结束。 * * 写flash的编程(汇编语言) 将“GOOD BYE”写入到ROM的400H开始的空间,并读出显示在PORTB端口上。 COUNT EQU 20H ORG 0000H MOVLW 0x00 ;为TBLPTR赋值0400H MOVWF TBLPTRL MOVLW 0x04 MOVWF TBLPTRH MOVLW A’G’ ;开始8B数据短写操作 MOVWF TABLAT TBLWT*+ * * MOVLW A’O’ MOVWF TABLAT TBLWT*+ MOVLW A’O’ MOVWF TABLAT TBLWT*+ MOVLW A’D’ MOVWF TABLAT TBLWT*+ MOVLW A’ ’ MOVWF TABLAT TBLWT*+ MOVLW A’B’ MOVWF TABLAT TBLWT*+ * * MOVLW A’Y’ MOVWF TABLAT TBLWT*+ MOVLW A’E’ MOVWF TABLAT TBLWT*+ MOVLW 0x00 ;重新为TBLPTR赋值0400H MOVWF TBLPTRL MOVLW 0x04 MOVWF TBLPTRH BSF EECON1,EEPGD ;设定EECON1,选择flash BCF EECON1,CFGS ;选择flash或EEPROM BSF EECON1,WREN ;使能写操作 BCF INTCON.GIE ;关闭全局中断 * * MOVLW 0x55 ;PIC所特有的五指令序列 MOVWF EECON2 MOVLW 0xAA MOVWF EECON2 BSF EECON1,WR ;开始长写操作(需要2mS) ;CPU停止指令的读取 NOP ;直到WR=0 BSF INTCON,GIE BCF EECON1,WREN MOVLW 0x00 ;重新为TBLPTR赋值0400H MOVWF TBLPTRL MOVLW 0x04 MOVWF TBLPTRH * * CLRF TRISB MOVLW 0x08 MOVWF COUNT OVER TBLRD*+ ;读数据 MOVFF TABLAT,PORTB CALL DELAY DECF COUNT,F BNZ OVER 如果处理的数据不满8B,空余位不受影响。 * * 14.3.3 擦除flash的步骤 与flash写操作不同,对flash擦除时按照64B为一个基本单位进行的(即TBLPTR指针的低6位全为0)。 将64B的flash单元清零的操作步骤如下: 为指针TBLPTR赋值(低6位为零); 设定EECON1(EEPGD=1、CFGS=0、WREN=1、FREE=1); 屏蔽所有中断; 使用五指令序列开始擦除过程; 擦除操作需要2ms时间,此时CPU不执行指令; 重新使能所有中断。 * * 擦除fl

您可能关注的文档

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档