当前位置:首页 > 温度测量及显示
盐城工学院本科生毕业论文( 2010)
这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。
终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件被激活,IDL(PCON.0)被硬件清除,既刻终止空闲工作模式。程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是单片机进入空闲模式那条指令后面的一条指令。
其二是通过硬件复位也可将空闲工作模式终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。为了避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。
(2)掉电模式
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。 2.7 程序存储器的加密
AT89C51可使用对芯片上的3个加密位LB1、LB2、LB3进行编程(P)或不编程(U)来得到如表3所示的功能。
表3 加密位保护功能表
程序加密位
保护类型
LB1 LB2 LB3 1 U U U 没有程序保护功能
禁止从外部程序存储器执行MOVC
2 P U U
指令读取内部程序存储器的内容
3 P P U 除上表功能外,还禁止程序校验
除上表功能外,同时禁止外部执
4 P P P
行
当加密位LB1被编程时,在复位期间,EA端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机正常工作,被锁存的EA电平值必须与该引脚当前的逻辑电平一致。 2.8 编程方法
编程前,须按表4和图5设置好地址、数据及控制信号,编程单元的地址加在P1口和P2口的P2.0-P3.0(11位地址范围为0000H-0FFFH),数据从P0口输入,
7
温度测量及显示仿真实现
引脚P2.6、P2.7和P3.6、P3.7的电平设置见表4,PSEN为低电平,RST保持高电平,EA/Vpp引脚是编程电源的输入端,按要求加上编程电压,ALE/PROG引脚输入编程脉冲(负脉冲)。编程时,可采用4-20MHz的时钟振荡器,AT89C51编程方法如下:
1、在地址上加上要编程单元的地址信号。
2、在数据线上加上要写入的数据字节。 3、激活相应的控制信号。
4、在高电压编程方式时,将EA/Vpp端加上+12V编程电压。
5、每对Flash存储列阵写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。改变编程单元的地址和写入的数据,重复1-5步骤,直到全部文件编程结束。
表4 Flash存储器编程真值表
注:片擦除操作时要求PROG脉冲宽度为10ms
8
盐城工学院本科生毕业论文( 2010)
图5 校验电路
2.9 Flash编程和校验
1、Ready/Busy:字节编程的进度可通过“RDY/BSY”输出信号监测,编程期间,ALE变为高电平“H”后P3.4(RDY/BSY)端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P3.4变为高电平表示准备就绪状态。
2、程序校验:如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回编写的数据,采用如图5所示的电路,程序存储器的地址由P1和P2口的P2.0-P2.3输入,数据由P0口读出,P2.6、P2.7和P3.6、P3.7的控制信号见表4,PSEN保持低电平,ALE|EA、RST保持高电平。校验时,P0口需接上10k左右的上拉电阻。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。
Flash存储器编程和程序校验时序图如图(高电压编程)6所示和图(低电压编程)7所示。
9
温度测量及显示仿真实现
图7 Flash编程和校验的波形时序(高电压编程方式Vpp=12V)
3、芯片擦除:利用控制信号的正确组合并保持ALE/PROG引脚10ms的低电平脉冲宽度即可将PEROM阵列(4K字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1”,这步骤需再编程之前进行。
4、读片内签名字节:读签名字节的过程和单元030H、031H和032H的正常校验相仿,只需将P3.6和P3.7保持低电平,返回值意义如下:
(030H)=1EH声明产品由ATMEL公司制造。 (031H)=51H声明为AT89C51单片机。 (032H)=FFH声明为12V编程电压。 (032H)=05H声明为5V编程电压。
10
共分享92篇相关文档