知识拓展
1.AT89S51的ISP编程技术
Atmel公司现已停止生产AT89CXX单片机,取而代之的是带ISP 功能的AT89SXX系列单片机。该系列单片机包括AT89S51、AT89S52、AT89S53、AT89S8252等产品。与过去的AT89CXX单片机相比,AT89SXX拥有更高的性价比,除了具有AT89CXX 的原有功能外,还增加了看门狗及在线编程功能,给编程及程序升级带来了极大方便。
在系统可编程(In System Programming,ISP)是指不需要把可编程器件从电路板上取下来,用户把已编译好的用户代码直接写入目标电路板上的可编程器件即可,并且对于已经编程的器件也可以用ISP方式擦除或再编程。目前,无论是在单片机上,还是在CPLD/FPGA上,ISP技术都得到了广泛的应用,是未来仪器仪表、控制设备发展的方向。Atmel公司的单片机 AT89S51、AT89S52、AT89S53 等都提供了一个串行外围接口(Serial Peripheral Interface,SPI)可利用ISP技术实现对Flash存储器的编程。
用传统的编程方式对芯片编程时,必须把单片机从电路板上取下来,然后插入到专用的编程器中进行编程,把程序代码写入片内程序存储器,编程之后再把单片机插回到电路板上进行调试或运行。在产品的研发阶段,用传统编程方式往往要频繁地插拔单片机,大大降低了开发效率,而且容易损坏器件。而ISP技术彻底改变了传统的开发模式,它只要在电路板上留下一个接口电路,再配一条下载电缆,不用拔出芯片,就可以在电路板上直接对单片机进行编程(称为“在线编程”或“下载编程”)。这就大大缩短了系统的开发周期,降低了开发成本。
AT89S51单片机支持传统的编程方法,也支持在线编程。在线编程时,P1.5用于指令输入MOSI,P1.7是时钟输入SCK,P1.6用于数据读出MISO。但需要注意的是:在使用ISP下载时应保证复位电路和晶振电路正常工作。
2.AT89S51的空闲工作方式和掉电工作方式
AT89S51有两种可用软件来选择的省电方式:空闲工作方式和掉电工作方式。这两种方式是由电源控制寄存器PCON中 PD (PCON.1)和IDL (PCON.0)位来控制的。PD是掉电方式位,当PD=1时,激活掉电工作方式。IDL是空闲方式位,当IDL=1时,激活空闲工作方式。若PD和IDL同时为1,则先激活掉电方式。
(1)空闲工作方式(IDLE模式)
执行完一条IDL (PCON.0)置1的指令后,单片机就进入空闲方式。该指令是CPU执行的最后一条指令,这条指令执行完以后CPU停止工作。在空闲方式下,CPU处于睡眠状态,但片内的其他部件如定时计数器、串行口、外中断系统可继续工作,而且片内RAM的内容和所有专用寄存器的内容在空闲方式期间都保持原来的值。
有两条途经可以终止空闲方式。一种方法是任何一个被允许的中断都可以结束空闲工作方式。当中断产生时,IDL (PCON.0)将被硬件清除,CPU先响应中断,进入中断服务子程序。在中断服务子程序中执行RETI之后,返回到下一条要执行的指令(使单片机进入空闲方式的那条指令的后面一条指令)。
终止空闲方式的另一种方法是通过硬件复位终止。要注意的是,当空闲方式是靠硬件复位来结束时,CPU通常都是从激活空闲方式那条指令的下一条指令开始继续执行。但要完成内部复位操作,硬件复位信号则需保持两个机器周期有效。
(2)掉电工作方式
为了进一步降低功耗,通过软件就可以实现掉电模式。执行完一条把PD (PCON.1)置1的指令后,单片机就进入掉电方式。激活掉电方式的那条指令是CPU执行的最后一条指令,这条指令执行完以后,CPU停止工作。在掉电方式下,片内振荡器停止工作。由于时钟被“冻结” ,CPU的一切功能都将停止。
硬件复位或外部中断或可终止掉电方式。复位时会重新定义专用寄存器中的值,但不改变片内RAM的内容,即在掉电方式下,只有片内RAM的内容保持不变。必须注意的是:在进入掉电方式之前,Vcc不能降下来,在掉电方式终止前,Vcc就应该恢复到正常工作水平。复位终止了掉电方式,也释放了振荡器,所以在Vcc恢复到正常水平之前,不应该复位。复位时,要保持足够长的复位有效时间(通常不小于10ms),以保证振荡器重新启动并达到稳定状态。
使用外部中断和退出掉电方式时,必须使和使能有效,且配置为电平触发方式,先将或管脚电平拉低,使振荡器重新启动,退出掉电模式后再将管脚恢复为高电平。一旦中断被响应,执行RETI之后所执行的是进入掉电模式指令的后一条指令。
3.辅助寄存器AUXR
AUXR是AT89S51新增加的一个寄存器,占用地址为8EH,各位定义如下所示。
DISALE:ALE的禁止/使能位。
0——ALE输出脉冲频率为振荡器频率的1/6。
1——ALE仅在执行MOVX或MOVC期间输出脉冲。
DISRTO:RST输出功能的禁止/使能位。
0——复位引脚RST在看门狗WDT溢出时变高。
1——复位引脚RST始终为输入。
WDIDLE:IDLE (空闲)模式下WDT的禁止/使能位。
0——IDLE模式下WDT继续计数。
1——IDLE模式下WDT停止计数。
—:未定义。