关于AT89C 系列单片机闪速存储器的编程介绍
扫描二维码
随时随地手机看文章
AT89C2051单片机内部有2KB的闪速存储器阵列,一片新的AT89C2051,其存储阵列处于擦除状态(FFH),此时可对其编程,存储阵列一次编程1字节,若编程任何非空字节时,需对整个存储阵列进行片擦除。
编程时,AT89C2051利用内部存储器地址计数器提供寻址存储器的地址信号,RST上升沿将该地址计数器复位至000H,引脚XTAL1所施加的正向连续脉冲使地址计数器不断加1。RST上出现12V(编程电源VPP)高压时,预示着1字节的编程操作开始,这时P3口提供编程所需的控制与状态信号,P1口为数据通道,如图10.3所示。对这些端口或引脚按图10.4所示的时序施加正确的控制组合就可通过P1口将数据编程到内部闪速存储器中。
图10.3编程闪速存储器
图10.4闪速存储器编程和校验时序
AT89C2051根据引脚RST与P3.2~P3.7的状态组合可以产生5种编程模式,如表10.4所示。
1.编程(写代码数据)
AT89C2051编程按下述步骤进行:
(1)上电过程:VCC加电,置RST为“L”(低电平),XTAL1为“L”,其它所有引脚悬空,等待10ms以上;
(2)置RST为“H”(高电平),P3.2为“H”;
(3)在引脚P3.3、P3.4、P3.5、P3.7上施加相应的逻辑电平,选定基本编程模式;
(4)地址信号由内部地址计数器提供(初始值为000H),欲写入该地址中的数据加至引脚P1.0~P1.7上;
(5)将RST电平升至12V启动编程;
(6)给P3.2施加一负脉冲,则编程内部存储器阵列或锁定位的1个字节,字节写周期采用自定时,通常为1.2ms;
(7)若要校验已编程数据,将RST从12V降至逻辑电平“H”,并置引脚P3.3~P3.7为校验模式电平,输出数据即可在P1口读取;
(8)编程下一个地址字节,对XTAL1施加一正脉冲,内部地址计数器加1,然后在P1口上加载欲写入的新数据;
(9)重复步骤(5)~(8),改变数据,递增地址计数器直到2KB存储阵列全部编程或目标文件结束;
(10)下电过程:置XTAL1为“L”,RST为“L”,其它I/O引脚悬空,VCC下电。当前次编程未结束时,不允许开始下一次编程。
如何确定一次编程操作是否结束,AT89C2051提供了以下两种方法。
1)数据查询特性
AT89C2051具有通过数据查询来检测写周期结束的特性。在写期间,读操作将导致P1.7输出写入数据的补码,一旦写完成,所有输出将出现真实数据,这时可开始下一数据编程。利用这一特性,可以在启动某一次编程后不断地查询写入数据,直到查询的数据为真实数据时,就可判定写周期已结束。
2)准备好/忙信号
在编程期间,引脚P3.3(RDY/BSY)提供了编程状态。当引脚P3.2(PROG)电平升高后,引脚P3.1电平下降,表示BUSY,编程结束后P3.1电平抬高,表示READY(见图10.4所示时序)。利用查询该状态信息便可确定编程的结束。
2.校验(读代码数据)
进行编程校验时,AT89C2051芯片各引脚作用如图10.5所示,如果锁定位LB1和LB2未被编程,则可通过下述步骤进行校验:
(1)使RST从“L”变为“H”,地址计数器复位000H;
(2)提供适当的控制信号(见图10.4所示时序),从P1口读取数据与编程写入数据作比较;
(3)给XTAL1施加正脉冲,地址计数器加1;
(4)从P1口读1个代码数据与编程写入数据作比较;
(5)重复步骤(3)、(4),直至整个存储阵列校验完毕。
3.写锁定位
写锁定位完成对闪速存储器加密。
按前述编程模式表操作:先选择写锁定位模式,然后将RST升至12V,P3.2施加编程脉冲,即可将锁定位写入(改变模式选择P3.3、P3.4、P3.5、P3.7的输入组合来实现锁定位LB1、LB2的写入)。不能直接校验锁定位,要通过观察其特性是否被允许来完成。
4.芯片擦除
当编程模式选择为芯片擦除模式并使P3.2引脚上施加10ms的PROG脉冲后,整个闪速存储器(2KB)和2个锁定位即可被擦除。擦除后,存储器阵列全为FFH。
5.读特征字节
特征字节表示AT89C系列芯片的基本特性,由3或4字节组成,存储于程序存储区的低端。AT89C2051芯片的特征字节位于地址000H、001H、002H中,当选择读特征字节模式(P3.3=P3.4=P3.5=P3.7=“L”)并采用类似校验步骤读取数据时,即可获得AT89C2051芯片的特征字:
(000H)=1EH表示该产品由Atmel生产;
(001H)=21H表示是89C2051/89C1051;
(002H)=FFH表示12V编程。