一、程序存储器的加密
AT89C52有3个程序加密位,可对芯片上的3个加密位LBI、LBZ、LB3进行编程(P)或不编程(U)来得到如表1所示的功能:
表1加密位保护功能表
程序加密位 |
保护类型 |
|||
|
LB1 |
LB2 |
LB3 |
|
1 |
U |
U |
U |
无程序保护功能 |
2 |
P |
U |
U |
禁止从内部存储器取代码字节执行外部存储器的MOVC指令。 复位时,EA |
3 |
P |
P |
U |
除与方式2功能相同外,同时禁止校验 |
4 |
P |
P |
P |
除与方式2相同外,同时禁止外部执行 |
U:表示未编程P:表示编程
当加密位LB1被编程时,在复位期间,以端的逻辑电平被采样并锁存。如果单片机卜电后一直没有复位,则锁存起的初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机能正常工作,被锁存的EA电平值必须与该引脚当前的逻辑电平一致。此外,加密位只有翻由过整片擦除的方法清除。
二、FLASH存储器的编程
AT89C52单片机内部有8k字节的FlASHPEROM,这个FLASH存储阵列出厂时己处于擦除状态(即所有存储单元的内容均为FFH),用户随时可对其进行编程。编程接口可接收高电压(+12V)或低电压(VCC)的允许编程信号。低电帐编程模式适合于用户在线编程系统,而高电汗编程模式可与通用EPROM编程器兼容。
AT89C52单片机中,有些属于低电帐编程方式,而有些则是高电片编程方式,用户可从芯片上的型号和读取芯片内的签名字节获得该信息,见表2。
表2顶面标记及签名字节
|
VPP=12V |
VPP=5V |
顶面标记 |
AT89C52 |
AT89C52 |
XXXX |
XXXX-5 |
|
YYWW |
YYWW |
|
签名字节 |
(O30H)=1EH |
(O30H)=1EH |
(O31H)=52H |
(O31H)=52H |
|
(O32)=FFH |
(O32H)=O5H |
AT89C52的程序存储器阵列是采用字节写入方式编程的,每次写入一个字节,要对整个芯片内的PEROM程序存储器写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。