AT89C52单片机内部有8k字节的Flash PEROM,这个Flash存储阵列出厂时已处于擦除状态(即所有存储单元的内容
均为FFH),用户随时可对其进行编程。编程接口可接收高电压(+12V)或低电压(Vcc)的允许编程信号。低电压编程模
式适合于用户在线编程系统,而高电压编程模式可与通用EPROM编程器兼容。
AT89C52单片机中,有些属于低电压编程方式,而有些则是高电压编程方式,用户可从芯片上的型号和读取芯片内的
签名字节获得该信息。
AT89C52 的程序存储器阵列是采用字节写入方式编程的,每次写入一个字节,要对整个芯片内的PEROM 程序存储器
写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。 编程前,须按表9 和图11 所示设置好地址、数据及控制信号, AT89C52 编程方法如下:
1. 在地址线上加上要编程单元的地址信号。
2. 在数据线上加上要写入的数据字节。
3. 激活相应的控制信号。
4. 在高电压编程方式时,将EA/Vpp 端加上+12V 编程电压。
5. 每对Flash 存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。每个字节写入周期
是自身定时的,通常约为1.5ms。重复1—5 步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。 AT89C52 有3 个程序加密位,可对芯片上的3 个加密位LB1、LB2、LB3 进行编程(P)或不编程(U)来得到。
当加密位LB1 被编程时,在复位期间,EA 端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的
初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机能正常工作,被锁存的EA 电平值必须与该引
脚当前的逻辑电平一致。此外,加密位只能通过整片擦除的方法清除。 AT89C52单片机用Data Palling 表示一个写周期结束为特征,在一个写周期中,如需读取最后写入的一个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,所输出的数据是有效的数据,即可进入下一个字节的写周期,写周期开始后,Data Palling 可能随时有效。
Ready/Busy:字节编程的进度可通过“RDY/BSY 输出信号监测,编程期间,ALE 变为高电平“H”后,P3.4(RDY/BSY)端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P3.4 变为高电平表示准备就绪状态。
程序校验:如果加密位LB1、LB2 没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,采用如图12的电路。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。
芯片擦除:利用控制信号的正确组合(表6)并保持ALE/PROG引脚10mS 的低电平脉冲宽度即可将PEROM 阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除 *** 作中将任何非空单元写入“1”,这步骤需再编程之前进行。
读片内签名字节:AT89C52单片机内有3 个签名字节,地址为030H、031H 和032H。用于声明该器件的厂商、型号和编程电压。读AT89C52 签名字节需将P3.6 和P3.7 置逻辑低电平,读签名字节的过程和单元030H、031H 及032H 的正常校验相仿,只返回值意义如下:
(030H)=1EH 声明产品由ATMEL公司制造。
(031H)=52H 声明为AT89C52 单片机。
(032H)=FFH 声明为12V 编程电压。
(032H)=05H 声明为5V 编程电压。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)