理解闪存程序存储器: PIC16F193X/LF193X的编程与读取

需积分: 50 54 下载量 162 浏览量 更新于2024-08-10 收藏 8.44MB PDF 举报
"闪存程序存储器的结构、操作与读取方法- PIC16F1936 单片机的使用" 在嵌入式系统中,闪存程序存储器是一种重要的非易失性存储器,它允许数据在电源断开后仍然保持。在微芯科技(Microchip Technology Inc.)的PIC16F1936单片机中,闪存程序存储器的结构和操作方式具有一定的特点。 11.3 闪存程序存储器概述 闪存程序存储器按照行进行组织,每行包含一定数量的14位程序存储器字。这种布局使得擦除和编程操作能够以行作为最小单位进行。在进行写或擦除操作前,必须确保目标地址不在被写保护的存储器段内,这由配置字寄存器2的WRT<1:0>位来定义。 擦除操作会清除一行中的所有数据,之后用户可以对这一行的部分或全部进行重新编程。编程时,数据首先被写入14位宽的数据写锁存器,用户不能直接访问这些锁存器,但可以通过写入EEDATH:EEDATL寄存器对来加载数据。值得注意的是,写锁存器的数量并不等于行中的单元数,因此在编程全行时,可能需要多次启动编程操作。例如,对于一个有32字行大小和8个写锁存器的器件,可能需要四次编程操作来完整重写一行。 11.3.1 读闪存程序存储器 读取闪存程序存储器的过程涉及以下几个步骤: 1. 将低有效地址和高有效地址写入EEADRH:EEADRL寄存器对。 2. 清零EECON1寄存器的CFGS位。 3. 设置EECON1寄存器的EEPGD控制位。 4. 最后,置位EECON1寄存器的RD控制位。这样,数据将在第二个指令周期被读取,并在EEDATH:EEDATL寄存器对中可用。由于读操作的特性,紧随其后的第二条指令会被忽略。 在进行部分编程时,如果想修改已编程行的一部分,需要先读取整个行的内容并保存在RAM中,然后进行擦除操作。表11-1给出了具体器件(如PIC16F193X/LF193X)的闪存存储器构成,包括擦除块(行)大小和写锁存器的数量。 对于PIC16F1936这样的器件,注意在读操作后,通常需要插入两条NOP指令以防止双周期指令的执行。此外,无论CP位设置如何,都可以读取闪存程序存储器。 在使用Microchip的单片机时,建议参考英文原版数据手册,确保遵循最新的技术规范和注意事项,因为这些文档可能会随着产品的更新而变化。同时,对于生命维持和/或生命安全应用,责任由购买者承担,Microchip不对由此产生的任何损害或后果负责。最后,使用Microchip的知识产权需遵守相关许可协议。