第十一章复位、时钟和省电方式控制本章学习目标掌握单片机_第1页
第十一章复位、时钟和省电方式控制本章学习目标掌握单片机_第2页
第十一章复位、时钟和省电方式控制本章学习目标掌握单片机_第3页
第十一章复位、时钟和省电方式控制本章学习目标掌握单片机_第4页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1/75 第十一章第十一章复位、时钟和省电方式控制复位、时钟和省电方式控制本章学习目标本章学习目标掌握单片机的时钟掌握单片机的时钟掌握单片机的电源检测与控制掌握单片机的电源检测与控制2/75正确复位和合适的时钟是单片机正常工作的基正确复位和合适的时钟是单片机正常工作的基础,而单片机的省电方式控制可以降低系统的础,而单片机的省电方式控制可以降低系统的功耗,从而实现低功耗设计。功耗,从而实现低功耗设计。本章介绍本章介绍STC15F2K60S2单片机的复位、时钟单片机的复位、时钟配置方法和单片机的供电电源检测和控制。配置方法和单片机的供电电源检测和控制。 3/75复位就是单片机的初始化工作,复位后中

2、央处复位就是单片机的初始化工作,复位后中央处理器(理器(CPU)及单片机内的其他功能部件都处)及单片机内的其他功能部件都处在一个确定的初始状态,并从这个状态开始工在一个确定的初始状态,并从这个状态开始工作。作。 复位分为热启动复位和冷启动复位两种,它们复位分为热启动复位和冷启动复位两种,它们的区别如表的区别如表11-1所示。所示。11.1 复位4/75复位种类复位种类复位源复位源复位现象复位现象热启动复位热启动复位内部看门狗复位内部看门狗复位单片机直接从用户程序区单片机直接从用户程序区0000H处开始执行用处开始执行用户程序户程序通过控制通过控制RESET引脚产生的硬复位引脚产生的硬复位从用户

3、程序区从用户程序区0000H处开始直接执行用户程序处开始直接执行用户程序通过对通过对IAP_CONTR寄存器送入寄存器送入20H产生产生的软复位的软复位从用户程序区从用户程序区0000H处开始直接执行用户程序处开始直接执行用户程序通过对通过对IAP_CONTR寄存器送入寄存器送入60H产生产生的软复位的软复位从系统从系统ISP监控程序区开始执行程序,如果检监控程序区开始执行程序,如果检测不到合法的测不到合法的ISP下载命令流,将软复位到用下载命令流,将软复位到用户程序区执行用户程序户程序区执行用户程序冷启动复位冷启动复位系统停电后再上电引起的硬复位系统停电后再上电引起的硬复位从系统从系统ISP

4、监控程序区开始执行程序,如果检监控程序区开始执行程序,如果检测不到合法的测不到合法的ISP下载命令流,将软复位到用下载命令流,将软复位到用户程序区执行用户程序户程序区执行用户程序表表11-1 热启动复位和冷启动复位热启动复位和冷启动复位5/75STC15F2K60S2单片机有单片机有6种复位方式种复位方式外部外部RST引脚复位引脚复位软件复位软件复位掉电复位掉电复位/上电复位(并可选择增加额外的复位上电复位(并可选择增加额外的复位延时延时180ms,也叫,也叫MAX810专用复位电路,其专用复位电路,其实就是在上电复位后增加一个实就是在上电复位后增加一个180ms复位延时)复位延时)内部低电压

5、检测复位内部低电压检测复位MAX810专用复位电路复位专用复位电路复位看门狗复位看门狗复位6/751、外部、外部RST引脚复位引脚复位外部外部RST引脚复位就是从外部向引脚复位就是从外部向RST引脚施加一定宽引脚施加一定宽度的复位脉冲,从而实现单片机的复位。度的复位脉冲,从而实现单片机的复位。P5.4/RST引脚出厂时被配置为引脚出厂时被配置为I/O口,要将其配置为口,要将其配置为复位功能,可在使用复位功能,可在使用ISP下载程序时设置。下载程序时设置。如果如果P5.4/RST引脚已在引脚已在ISP烧录程序时被设置为复位烧录程序时被设置为复位脚,那脚,那P5.4/RST就是芯片复位的输入脚。就

6、是芯片复位的输入脚。将将RST复位脚拉高并维持至少复位脚拉高并维持至少24个时钟加个时钟加20us后,单后,单片机会进入复位状态,将片机会进入复位状态,将RST复位脚拉回低电平后,复位脚拉回低电平后,单片机结束复位状态并从用户程序区的单片机结束复位状态并从用户程序区的0000H处开始处开始正常工作。正常工作。7/752、软件复位、软件复位在系统运行过程中,有时会根据特殊需求,需在系统运行过程中,有时会根据特殊需求,需要实现单片机系统软复位(热启动之一),传要实现单片机系统软复位(热启动之一),传统的统的8051单片机由于硬件上未支持此功能,用单片机由于硬件上未支持此功能,用户必须用软件模拟实现

7、,实现起来较麻烦。户必须用软件模拟实现,实现起来较麻烦。STC15F2K60S2单片机利用单片机利用ISP/IAP控制寄存控制寄存器器IAP_CONTR(地址为(地址为C7H,复位值为,复位值为0000 x000B)实现了此功能。)实现了此功能。用户只需简单的控制用户只需简单的控制IAP_CONTR的其中两位的其中两位SWBS/SWRST就可以系统复位了。就可以系统复位了。8/75ISP/IAP控制寄存器控制寄存器IAP_CONTR的各位定义的各位定义如下:如下:1)SWBS软件选择从用户应用程序区启动(软件选择从用户应用程序区启动(0)从从 ISP程序区启动(程序区启动(1)要与要与SWRS

8、T配合才可以实现配合才可以实现位号D7D6D5D4D3D2D1D0位名称IAPENSWBSSWRSTCMD_FAIL-WT2WT1WT09/752)SWRST:产生软件复位控制位。:产生软件复位控制位。0:不操作:不操作1 :产生软件系统复位,硬件自动清:产生软件系统复位,硬件自动清0要与要与SWRST配合才可以实现配合才可以实现位号D7D6D5D4D3D2D1D0位名称IAPENSWBSSWRSTCMD_FAIL-WT2WT1WT010/75下面的描述中,用户应用程序区简称下面的描述中,用户应用程序区简称AP区,区,系统系统ISP监控程序区简称监控程序区简称ISP区。区。例如,从例如,从AP

9、区软件复位并切换到区软件复位并切换到AP区开始执行区开始执行程序的程序的IAP_CONTR设置代码为:设置代码为:MOV IAP_CONTR,#00100000B;SWBS=0,SWRST=1(选择选择AP区软复位区软复位)从从ISP区软件复位并切换到区软件复位并切换到AP区开始执行程序区开始执行程序的的IAP_CONTR设置代码为:设置代码为:MOV IAP_CONTR,#00100000B;SWBS=0,SWRST=1(选择选择AP区软复位区软复位)11/75从从AP区软件复位并切换到区软件复位并切换到ISP区开始执行程序区开始执行程序的的IAP_CONTR设置代码为:设置代码为:MOV

10、IAP_CONTR,#01100000B;SWBS=1,SWRST=1(选择选择ISP区软复位区软复位)从从ISP区软件复位并切换到区软件复位并切换到ISP区开始执行程序区开始执行程序的的IAP_CONTR设置代码为:设置代码为:MOV IAP_CONTR,#01100000B;SWBS=1,SWRST=1(选择选择ISP区软复位区软复位)12/753)CMD_FAIL 如果送了如果送了ISP/IAP命令,并对命令,并对IAP_TRIG送送5AH/A5H触发失败,则为触发失败,则为1,需要由软件清,需要由软件清0。 位号D7D6D5D4D3D2D1D0位名称IAPENSWBSSWRSTCMD_

11、FAIL-WT2WT1WT013/753、掉电复位、掉电复位/上电复位上电复位当电源电压当电源电压VCC低于掉电复位低于掉电复位/上电复位检测上电复位检测门槛电压时,所有的逻辑电路都会复位。门槛电压时,所有的逻辑电路都会复位。当内部当内部VCC上升至上电复位检测门槛电压以上升至上电复位检测门槛电压以上后,延迟上后,延迟32768个时钟,掉电复位个时钟,掉电复位/上电复位上电复位结束。结束。14/754、MAX810专用复位电路复位专用复位电路复位STC15F2K60S2单片机内部集成了单片机内部集成了MAX810专专用复位电路。用复位电路。若若MAX810专用复位电路在专用复位电路在STC-I

12、SP编程器中编程器中被允许,则以后掉电复位被允许,则以后掉电复位/上电复位后将再产上电复位后将再产生约生约180ms复位延时,复位才能被解除。复位延时,复位才能被解除。15/755、内部低压检测复位、内部低压检测复位除 了 上 电 复 位 检 测 门 槛 电 压 外 ,除 了 上 电 复 位 检 测 门 槛 电 压 外 ,STC15F2K60S2单片机还有一组更可靠的内部单片机还有一组更可靠的内部低电压检测门槛电压。低电压检测门槛电压。当电源电压当电源电压VCC低于内部低电压检测(低于内部低电压检测(LVD)门槛电压时,可产生复位(前提是在门槛电压时,可产生复位(前提是在STC-ISP编程用户

13、程序时,允许低电压检测复位,即将编程用户程序时,允许低电压检测复位,即将低电压检测门槛电压设置为复位门槛电压)。低电压检测门槛电压设置为复位门槛电压)。16/75STC15F2K60S2单片机内置了单片机内置了8级可选的内部级可选的内部低电压检测门槛电压。低电压检测门槛电压。5V单片机的低电压检测门槛电压3V单片机的低电压检测门槛电压-402585-4025854.744.644.603.113.083.094.414.324.272.852.822.834.144.054.002.632.612.613.903.823.772.442.422.433.693.613.562.292.262.

14、263.513.433.382.142.122.123.363.283.232.012.002.003.213.143.091.901.891.89表表11-2 不同温度下单片机的低电压检测门槛电压(单位:不同温度下单片机的低电压检测门槛电压(单位:V)17/75例如,当用户使用例如,当用户使用5V单片机时,可以根据单单片机时,可以根据单片机的实际工频率,在片机的实际工频率,在STC-ISP编程中选择表编程中选择表11-2中所列出的低电压检测门槛电压作为复位中所列出的低电压检测门槛电压作为复位门槛电压。门槛电压。如:常温下工作频率是如:常温下工作频率是20MHz以上时,可以以上时,可以选择选择

15、4.32V电压作为复位门槛电压;常温下工电压作为复位门槛电压;常温下工作频率是作频率是12MHz以下时,可以选择以下时,可以选择3.82V电压电压作为复位门槛电压。作为复位门槛电压。 18/75复位门槛电压的选择如图复位门槛电压的选择如图11-1所示。所示。选择复位门槛电压图11-1 复位门槛电压的选择19/75如果在如果在STC-ISP下载用户应用程序时,不将低下载用户应用程序时,不将低电压检测设置为低电压检测复位,则在用户程电压检测设置为低电压检测复位,则在用户程序中用户可将低电压检测设置为低电压检测中序中用户可将低电压检测设置为低电压检测中断。当电源电压断。当电源电压VCC低于内部低电压

16、检测低于内部低电压检测(LVD)门槛电压时,低电压检测中断请求标)门槛电压时,低电压检测中断请求标志位(志位(LVDF/PCON.5)就会被硬件置位。如)就会被硬件置位。如果果ELVD/IE.6(低电压检测中断允许位)设置(低电压检测中断允许位)设置为为1,低电压检测中断请求标志位就能产生一,低电压检测中断请求标志位就能产生一个低电压检测中断。个低电压检测中断。建议在电压偏低时,不要操作建议在电压偏低时,不要操作EEPROM/IAP,编程时直接选择编程时直接选择“低压禁止低压禁止IAP操作操作”。20/756、看门狗复位、看门狗复位(1)看门狗定时器复位)看门狗定时器复位在工业控制、汽车电子、

17、航空航天等需要高可在工业控制、汽车电子、航空航天等需要高可靠性的系统中,为了防止系统在异常情况下受靠性的系统中,为了防止系统在异常情况下受到干扰,到干扰,CPU程序跑飞,导致系统长时间异常程序跑飞,导致系统长时间异常工作,往往需要在系统中使用看门狗(工作,往往需要在系统中使用看门狗(Watch Dog)电路。)电路。21/75看门狗电路的基本作用就是监视看门狗电路的基本作用就是监视CPU的工作。的工作。如果如果CPU在规定的时间内没有按要求访问看门在规定的时间内没有按要求访问看门狗,就认为狗,就认为CPU处于异常状态,看门狗就会强处于异常状态,看门狗就会强迫迫CPU复位,使系统重新从头开始按规

18、律执行复位,使系统重新从头开始按规律执行用户程序。用户程序。正常工作时,单片机可以通过一个正常工作时,单片机可以通过一个I/O引脚定引脚定时向看门狗脉冲输入端输入脉冲(脉冲宽度只时向看门狗脉冲输入端输入脉冲(脉冲宽度只要不超出看门狗电路的溢出时间即可)。当系要不超出看门狗电路的溢出时间即可)。当系统死机时,单片机就会停止向看门狗脉冲输入统死机时,单片机就会停止向看门狗脉冲输入端输入脉冲,超过一定时间后,看门狗电路就端输入脉冲,超过一定时间后,看门狗电路就会发出复位信号,将系统复位,使系统恢复正会发出复位信号,将系统复位,使系统恢复正常工作。常工作。22/75STC15F2K60S2单片机内部集

19、成了看门狗定时单片机内部集成了看门狗定时器(器(Watch Dog Timer,WDT),使单片机系),使单片机系统可靠性设计变得更加方便、简洁。统可靠性设计变得更加方便、简洁。通 过 设 置 和 使 用通 过 设 置 和 使 用 W D T 控 制 寄 存 器控 制 寄 存 器WDT_CONTR(地址为(地址为C1H,复位值为,复位值为xx00 0000B)来使用看门狗功能。)来使用看门狗功能。 位号D7D6D5D4D3D2D1D0位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS023/751)WDT_FLAG:看门狗溢出标志位,溢出时:看门狗溢出标志位,溢

20、出时该位由硬件置该位由硬件置1可用软件将其清可用软件将其清0 位号位号D7D6D5D4D3D2D1D0位名称位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS024/752)EN_WDT:看门狗允许位该位:看门狗允许位该位当设置为当设置为“1”时,看门狗启动。时,看门狗启动。3)CLR_WDT:看门狗清零位:看门狗清零位 当设为当设为“1”时,看门狗将重新计数。时,看门狗将重新计数。硬件将自动清硬件将自动清0此位。此位。位号位号D7D6D5D4D3D2D1D0位名称位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS025/754)

21、IDLE_WDT:看门狗:看门狗“IDLE”模式(即空闲模式(即空闲模式)位模式)位当设置为当设置为“1”时,时,WDT在在“空闲模式空闲模式”计数;计数;当清当清0该位时,该位时,WDT在在“空闲模式空闲模式”时不计数。时不计数。5)PS2、PS1、PS0:WDT预分频系数控制位。预分频系数控制位。位号位号D7D6D5D4D3D2D1D0位名称位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS026/75WDT溢出时间的计算方法:溢出时间的计算方法:WDT的溢出时间的溢出时间 =(12 预分频系数预分频系数 32768 ) / 时钟频率时钟频率例如,时钟为例如

22、,时钟为12MHz时时WDT的溢出时间的溢出时间=(12 预分频系数预分频系数 32768) / 12000000 = 预分频系数预分频系数 393216 / 1200000027/75常见的预分频系数设置和常见的预分频系数设置和WDT溢出时间如表溢出时间如表11-3所示。所示。图10-6 LED动态显示接口电路 PS2PS1PS0预分频系数WDT溢出时间 (20MHz)WDT溢出时间 (12MHz)WDT溢出时间 (11.0592MHz)000239.3ms65.5ms71.1ms001478.6 ms131.0 ms142.2 ms0108157.3 ms262.1 ms284.4 ms0

23、1116314.6 ms524.2 ms568.8 ms10032629.1 ms1.0485s1.1377s101641.25s2.0971s2.2755s1101282.5s4.1943s4.5511s1112565s8.3886s9.1022s表表11-3 WDT的预分频和溢出时间的预分频和溢出时间28/75使用使用ISP编程用户程序时,可以对看门狗进行编程用户程序时,可以对看门狗进行设置,如图设置,如图11-2所示。所示。看门狗功能设置区图11-2 看门狗设置29/75当启用当启用WDT后,用户程序必须周期性的复位后,用户程序必须周期性的复位WDT,以证明程序正常运行。,以证明程序正常

24、运行。如果用户程序在一段时间之后不能复位如果用户程序在一段时间之后不能复位WDT,WDT就会溢出,将强制就会溢出,将强制CPU自动复位,从而自动复位,从而确保程序不会进入死循环,或者执行到无程序确保程序不会进入死循环,或者执行到无程序代码区。代码区。复位复位WDT的方法是重写的方法是重写WDT控制寄存器的内控制寄存器的内容。容。30/75(2)看门狗定时器的使用)看门狗定时器的使用WDT的使用主要涉及的使用主要涉及WDT控制寄存器的设置控制寄存器的设置以及以及WDT的定期复位。的定期复位。使用使用WDT的汇编语言程序如下:的汇编语言程序如下:31/75$INCLUDE (STC15.INC)

25、;包含包含STC15F2K60S2单片机寄存器定义文件单片机寄存器定义文件ORG 0000HLJMP Initial ;其他入口定义其他入口定义ORG 0060HInitial:MOV WDT_CONTR,#00111100B ;WDT控制寄存器初始化控制寄存器初始化;EN_WDT=1,CLR_WDT=1,IDLE_WDT=1,PS2=1,PS1=0,PS0=0 ;其他初始化代码其他初始化代码Main_Loop: LCALL Display ;调用显示子程序调用显示子程序LCALL Keyboard ;调用键盘扫描子程序调用键盘扫描子程序 ;其他程序代码其他程序代码MOV WDT_CONTR,

26、#00111100B ;复位复位WDT ;其他代码其他代码LJMP Main_Loop32/75使用使用WDT的的C语言程序如下:语言程序如下:#include “stc15.h”void main(void) /其他初始化代码其他初始化代码 WDT_CONTR=0 x3c;/EN_WDT=1,CLR_WDT=1,IDLE_WDT= 1,PS2=1,PS1=0,PS0=0 while(1) display(); keyboard(); /其他代码其他代码 WDT_CONTR=0 x3c; /复位复位WDT 33/7511.2 单片机的时钟单片机的时钟一、时钟源选择一、时钟源选择 STC15F2

27、K60S2单片机除了可以使用传统的外单片机除了可以使用传统的外部时钟外,还可以选择内部部时钟外,还可以选择内部R/C振荡器时钟源振荡器时钟源(内部时钟)。(内部时钟)。出厂标准配置是使用芯片内部的出厂标准配置是使用芯片内部的R/C振荡器。振荡器。振荡频率可选,振荡频率可选,-4085时的温飘时的温飘1%,常温下温飘可达常温下温飘可达5。如果使用内部时钟,则。如果使用内部时钟,则可以省掉外部晶振。可以省掉外部晶振。34/75在下载用户程序时,可以在硬件选项中选中调节频率,然在下载用户程序时,可以在硬件选项中选中调节频率,然后在后在“选择选择/输入频率输入频率”下拉框中选择内部下拉框中选择内部R/

28、C振荡时钟频振荡时钟频率,如图率,如图11-3所示。所示。选择内部R/C振荡时钟频率图11-3 选择时钟源35/75二、内部时钟分频和分频寄存器二、内部时钟分频和分频寄存器 如果希望降低系统功耗,可对内部时钟进行分如果希望降低系统功耗,可对内部时钟进行分频 。 利 用 时 钟 分 频 控 制 寄 存 器频 。 利 用 时 钟 分 频 控 制 寄 存 器CLK_DIV(PCON2) 可进行主时钟分频,从而可进行主时钟分频,从而降低单片机工作时钟频率,降低功耗,降低降低单片机工作时钟频率,降低功耗,降低EMI。 36/75时钟分频寄存器时钟分频寄存器CLK_DIV (也称为也称为PCON2,地址为

29、地址为97H,复位值为,复位值为0000 x000B)各位的定义各位的定义如下:如下:位号位号00D7D6D5D4D3D2D1D0位名称位名称MCKO_S1MCKO_S0ADRJTx_Rx-CLKS2CLKS1CLKS037/75其中其中CLKS2、CLKS1和和CLKS0用于设置分频用于设置分频系数,如表系数,如表11-4所示。所示。位号位号00D7D6D5D4D3D2D1D0位名称位名称MCKO_S1MCKO_S0ADRJTx_Rx-CLKS2CLKS1CLKS0CLKS2CLKS1CLKS0分频后CPU的实际工作时钟(称为系统时钟)000主时钟频率/1,不分频001主时钟频率/2010主

30、时钟频率/4011主时钟频率/8100主时钟频率/16101主时钟频率/32110主时钟频率/64111主时钟频率/128表11-4 分频系数选择38/75STC15F2K60S2单片机的时钟结构如图单片机的时钟结构如图11-4所所示。示。图11-4 STC15F2K60S2单片机的时钟结构39/7511.3 单片机的电源检测与控制单片机的电源检测与控制一、单片机的低电压检测一、单片机的低电压检测 1、低电压检测相关的寄存器、低电压检测相关的寄存器电源控制寄存器电源控制寄存器PCON的的LVDF(PCON.5)位是低电)位是低电压检测标志位,同时也是低电压检测中断请求标志位。压检测标志位,同时

31、也是低电压检测中断请求标志位。在正常工作和空闲工作状态时在正常工作和空闲工作状态时,如果内部工作电压,如果内部工作电压Vcc低于低电压检测门槛电压,该位自动置低于低电压检测门槛电压,该位自动置1,与低电,与低电压检测中断是否被允许无关。即在内部工作电压压检测中断是否被允许无关。即在内部工作电压Vcc低于低电压检测门槛电压时,不管有没有允许低电压低于低电压检测门槛电压时,不管有没有允许低电压检测中断,该位都自动为检测中断,该位都自动为1。该位要用软件清。该位要用软件清0,清,清0后,如果内部工作电压后,如果内部工作电压Vcc继续低于低电压检测门槛继续低于低电压检测门槛电压,该位又被自动设置为电压

32、,该位又被自动设置为1。40/75在进入掉电工作状态前在进入掉电工作状态前,如果低电压检测电路,如果低电压检测电路未被允许可产生中断,则在进入掉电模式后,未被允许可产生中断,则在进入掉电模式后,该低电压检测电路不工作以降低功耗。如果被该低电压检测电路不工作以降低功耗。如果被允许可产生低电压检测中断,则在进入掉电模允许可产生低电压检测中断,则在进入掉电模式后,该低电压检测电路继续工作,在内部工式后,该低电压检测电路继续工作,在内部工作电压作电压Vcc低于低电压检测门槛电压后,产生低于低电压检测门槛电压后,产生低电压检测中断,可将低电压检测中断,可将MCU从掉电状态唤醒。从掉电状态唤醒。41/75

33、中断控制允许位是中断控制允许位是EA和和ELVD,ELVD是低电是低电压检测中断允许位。压检测中断允许位。ELVD = 0时,禁止低电压检测中断;时,禁止低电压检测中断;ELVD = 1时,允许低电压检测中断。时,允许低电压检测中断。中断优先级控制位是中断优先级控制位是PLVD,具有两级中断优,具有两级中断优先级。先级。中断请求标志位是中断请求标志位是LVDF,要由软件清,要由软件清0。如果要求在掉电模式下外部低压检测中断继续如果要求在掉电模式下外部低压检测中断继续工作,可将工作,可将CPU从掉电模式唤醒,则应将外部从掉电模式唤醒,则应将外部中断使能和时钟输出寄存器中断使能和时钟输出寄存器IN

34、T_CLKO的的LVD_WAKE (INT_CLKO.3)位设置为)位设置为1。42/752、低电压检测的应用、低电压检测的应用下面以一个具体实例,说明外部低电压检测功能的应下面以一个具体实例,说明外部低电压检测功能的应用。用。【例例11-1】编程实现外部低电压检测功能的应用。编程实现外部低电压检测功能的应用。解:解:CPU可以用查询方式查询可以用查询方式查询LVDF标志位,推荐使用标志位,推荐使用中断方式。在中断服务程序中,将中断方式。在中断服务程序中,将LVDF 位清位清0,再,再读读LVDF位。如果为位。如果为0,则认为是电源抖动,如果为,则认为是电源抖动,如果为1,则认为电源掉电,立即

35、进行保存现场数据的工作。保则认为电源掉电,立即进行保存现场数据的工作。保存现场完成后,再将存现场完成后,再将LVDF位清位清0,再读,再读LVDF位的值。位的值。如果为如果为0,则认为电源系统恢复正常,此时,则认为电源系统恢复正常,此时CPU可恢可恢复正常工作,如果为复正常工作,如果为1,继续将,继续将LVDF位清位清0,再读,再读LVDF的值,用此方法,等到电源恢复正常,或电源的值,用此方法,等到电源恢复正常,或电源彻底掉电,彻底掉电,CPU进入复位状态。进入复位状态。43/75下面用查询方式演示外部低电压检测功能的应下面用查询方式演示外部低电压检测功能的应用(各个口线对应的发光二极管在该口

36、线为低用(各个口线对应的发光二极管在该口线为低电平时亮)。中断方式的使用方法,请读者自电平时亮)。中断方式的使用方法,请读者自行设计。行设计。$INCLUDE (STC15.INC) ;包含包含STC15F2K60S2单片机寄存器定义文件单片机寄存器定义文件RUN_LEDEQUP1.0;程序工作指示灯程序工作指示灯ERROR_LEDEQUP1.1;出错指示灯出错指示灯Hi_Volt_LEDEQUP1.2;正常电压指示灯正常电压指示灯POWER_ON_LEDEQUP1.3;电源上电指示灯电源上电指示灯LOW_Volt_LEDEQUP1.4;低电压指示灯低电压指示灯44/75ORG 0000HLJ

37、MP MAINORG 0100HMAIN:MOV SP, #70H ;堆栈指针指向堆栈指针指向 70H 单元单元SETBRUN_LED;演示程序开始工作演示程序开始工作LCALL Delay ;延时延时CLR RUN_LED;演示程序开始工作演示程序开始工作LCALL Delay ;延时延时SETBRUN_LEDMAIN1:MOV A,PCONJBC ACC.5,POWER_ON_1CLR ERROR_LEDSETB POWER_ON_LEDSETB Hi_Volt_LEDSETB LOW_Volt_LEDERROR:LJMP ERROR45/75POWER_ON_1:SETB ERROR_L

38、EDCLR POWER_ON_LEDSETB Hi_Volt_LEDSETB LOW_Volt_LEDLCALL Delay ;延时延时Continue_Read:MOV A,#11011111BANL PCON, ANOPMOV A,PCONJBC ACC.5,Low_VoltageHigh_Voltage:SETB ERROR_LEDSETB POWER_ON_LEDCLR Hi_Volt_LEDSETB LOW_Volt_LEDLJMP Continue_Read46/75Low_Voltage:SETB ERROR_LEDSETB POWER_ON_LEDSETB Hi_Volt_LE

39、DCLR LOW_Volt_LEDLJMP Continue_ReadDelay: CLR A MOV R0, A MOV R1, A MOV R2, #30HDelay_Loop: DJNZ R0, Delay_Loop DJNZ R1, Delay_Loop DJNZ R2, Delay_Loop RET END47/75二、二、省电方式省电方式 STC15F2K60S2单片机可以运行单片机可以运行3种省电模式种省电模式以降低功耗以降低功耗低速模式低速模式空闲模式空闲模式掉电模式掉电模式正常工作模式下,正常工作模式下,STC15F2K60S2单片机的典型单片机的典型功耗是功耗是2.7mA7

40、mA,而掉电模式下的典型功耗,而掉电模式下的典型功耗0.1uA,空闲模式下的典型功耗是,空闲模式下的典型功耗是1.8mA。48/751、省电方式的控制、省电方式的控制低 速 模 式 由 时 钟 分 频 器低 速 模 式 由 时 钟 分 频 器 C L K _ D I V(PCON2)控制,而空闲模式和掉电模)控制,而空闲模式和掉电模式的进入由电源控制寄存器式的进入由电源控制寄存器PCON的相的相应位控制。应位控制。 49/75PCON(地址为(地址为87H,复位值为,复位值为30H)寄存器)寄存器的各位定义如下:的各位定义如下:位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVD

41、FPOFGF1GF0PDIDL50/751)LVDF:低电压检测标志位,同时也是低电:低电压检测标志位,同时也是低电压检测中断请求标志位。压检测中断请求标志位。2)POF:上电复位标志位,单片机停电后,上:上电复位标志位,单片机停电后,上电复位标志位为电复位标志位为1,可由软件清,可由软件清0。位号位号D7D6D5D4D3D2D1D0位名称位名称SMODSMOD0LVDFPOFGF1GF0PDIDL51/75在实际应用中,该位可用来判断单片机复位是在实际应用中,该位可用来判断单片机复位是上电复位上电复位 (冷启动),还是外部复位脚输入(冷启动),还是外部复位脚输入复位信号产生的复位,还是内部看

42、门狗复位,复位信号产生的复位,还是内部看门狗复位,或者是软件复位或其他复位。用户可以在初始或者是软件复位或其他复位。用户可以在初始化程序中判断化程序中判断POF位是否为位是否为1,并对不同情况,并对不同情况进行不同的处理。判断方法如图进行不同的处理。判断方法如图11-5所示。所示。冷启动(上电复位)外部手动复位或看门狗复位,或软件复位,或其他复位YNPOF=1?将POF清零图图11-5 判断复位种类流程图判断复位种类流程图52/753)PD:将其置:将其置1时,单片机将进入掉电模式。时,单片机将进入掉电模式。掉电模式也叫停机模式,此时的典型功耗为掉电模式也叫停机模式,此时的典型功耗为2A。进入

43、掉电模式后,内部时钟停振,进入掉电模式后,内部时钟停振,CPU、定时器、看、定时器、看门狗、门狗、A/D转换、串行口全部停止工作,只有外部中断转换、串行口全部停止工作,只有外部中断继续工作。如果低电压检测电路被允许产生中断,则继续工作。如果低电压检测电路被允许产生中断,则低电压检测电路也可继续工作,否则将停止工作。低电压检测电路也可继续工作,否则将停止工作。进入掉电模式后,所有的进入掉电模式后,所有的I/O口、特殊功能寄存器维持口、特殊功能寄存器维持进入掉电模式前那一刻的状态不变。进入掉电模式前那一刻的状态不变。 位号位号D7D6D5D4D3D2D1D0位名称位名称SMODSMOD0LVDFP

44、OFGF1GF0PDIDL53/75进入掉电模式的单片机可由外部中断唤醒。进入掉电模式的单片机可由外部中断唤醒。可将可将CPU从掉电模式唤醒的资源有:从掉电模式唤醒的资源有:INT0/P3.2,INT1/P3.3,INT2/P3.6、/INT3/P3.7、/INT4/P3.0,CCP0/CCP1/CCP2,RxD/RxD2,T0/T1/T2和内部低功耗掉电唤醒专用定时器。和内部低功耗掉电唤醒专用定时器。STC15F2K60S2单片机进入停机模式单片机进入停机模式/掉电模式掉电模式后,除了可以通过外部中断源进行唤醒外,使后,除了可以通过外部中断源进行唤醒外,使用掉电唤醒专用定时器,也可以将进入掉

45、电模用掉电唤醒专用定时器,也可以将进入掉电模式后的单片机唤醒,使其恢复到正常工作状态。式后的单片机唤醒,使其恢复到正常工作状态。54/75掉 电 唤 醒 专 用 定 时 器 由 特 殊 功 能 寄 存 器掉 电 唤 醒 专 用 定 时 器 由 特 殊 功 能 寄 存 器WKTCH和和WKTCL进行管理和控制。进行管理和控制。WKTCL(地址为(地址为AAH,复位值为,复位值为00H)各位)各位的定义如下:的定义如下:WKTCH(地址为(地址为ABH,复位值为,复位值为00H)各位)各位的定义如下:的定义如下:位号D7D6D5D4D3D2D1D0位名称位号D7D6D5D4D3D2D1D0位名称W

46、KTEN55/75掉电唤醒专用定时器是一个掉电唤醒专用定时器是一个15位定时器,位定时器,WKTCH6:0,WKTCL7:0构成最长构成最长15位位计数值(计数值(32768),定时从),定时从0开始计数。开始计数。WKTEN:掉电唤醒专用定时器的使能控制位。:掉电唤醒专用定时器的使能控制位。1:允许掉电唤醒专用定时器工作;:允许掉电唤醒专用定时器工作;0:禁止掉电唤醒专用定时器工作。:禁止掉电唤醒专用定时器工作。56/75通过软件将通过软件将WKTCH寄存器中的寄存器中的WKTEN位置位置1,允许掉电唤醒专用定时器工作后,当,允许掉电唤醒专用定时器工作后,当MCU一旦进入掉电模式,掉电唤醒专

47、用定时一旦进入掉电模式,掉电唤醒专用定时器就开始计数,直到计数到与器就开始计数,直到计数到与WKTCH6:0,WKTCL7:0寄存器所设定的计数值相等后寄存器所设定的计数值相等后就 启 动 系 统 振 荡 器 ,就 启 动 系 统 振 荡 器 , M C U 等 待等 待32768/16384/8192/4096个时钟(由用户在个时钟(由用户在ISP烧录程序时自行设置)后,烧录程序时自行设置)后,MCU认为此时系认为此时系统时钟从开始起振的不稳定状态已经过渡到稳统时钟从开始起振的不稳定状态已经过渡到稳定状态,才将时钟供给定状态,才将时钟供给CPU,CPU获得时钟后,获得时钟后,程序从上次掉电的

48、地方继续往下执行。程序从上次掉电的地方继续往下执行。57/75电唤醒专用定时器计数一次的时间约为电唤醒专用定时器计数一次的时间约为488s,当然存在一定的误差。掉电唤醒专用定时器的当然存在一定的误差。掉电唤醒专用定时器的计数时间为:计数时间为:488sWKTCH6:0,WKTCL7:0寄存器所设定的计数值寄存器所设定的计数值因此,掉电唤醒专用定时器最小计数时间约为因此,掉电唤醒专用定时器最小计数时间约为488s掉电唤醒专用定时器最长计数时间约为掉电唤醒专用定时器最长计数时间约为 488s 32768=15.99s58/75利用掉电唤醒专用定时器唤醒单片机时,只需利用掉电唤醒专用定时器唤醒单片机

49、时,只需在程序的初始化部分设置在程序的初始化部分设置WKTCL和和WKTCH即可,在即可,在WKTCH6:0,WKTCL7:0设置设置计数值,注意将计数值,注意将WKTCH的最高位置的最高位置1,以允,以允许掉电唤醒专用定时器工作。许掉电唤醒专用定时器工作。59/75STC15F2K60S2单片机除增加了特殊功能寄存器单片机除增加了特殊功能寄存器WKTCL和和WKTCH以外,还设计了以外,还设计了2个隐藏的特殊个隐藏的特殊功能寄存器功能寄存器SL_WKTCL和和SL_WKTCH来控制内部掉来控制内部掉电唤醒专用定时器。电唤醒专用定时器。SL_WKTCL与与WKTCL共用同一个地址共用同一个地址

50、SL_WKTCH与与WKTCH共用同一个地址共用同一个地址SL_WKTCL和和SL_WKTCH是隐藏的,对用户不可见。是隐藏的,对用户不可见。用户对用户对WKTCL和和WKTCH写入的内容同时也会写入写入的内容同时也会写入SL_WKTCL和和SL_WKTCH中。当外部中断提前将单中。当外部中断提前将单片机从停机模式唤醒时,通过读片机从停机模式唤醒时,通过读WKTCL和和WKTCH的的内容内容(实际是读实际是读SL_WKTCL和和SL_WKTCH中的内容中的内容),可以读出单片机在停机模式可以读出单片机在停机模式/掉电模式等待的时间。掉电模式等待的时间。60/754)IDL:将其置:将其置1时,

51、单片机将进入空闲模式(即时,单片机将进入空闲模式(即IDLE模式)模式)在空闲模式下,仅在空闲模式下,仅CPU无时钟,停止工作。外部中断、无时钟,停止工作。外部中断、内部低电压检测电路、定时器、内部低电压检测电路、定时器、A/D转换等其余模块仍转换等其余模块仍正常运行。正常运行。而看门狗在空闲模式下是否工作取决于其自身有一个而看门狗在空闲模式下是否工作取决于其自身有一个“IDLE”模式位:模式位:IDLE_WDT(WDT_CONTR.3)。当。当IDLE_WDT位被设置为位被设置为“1”时,看门狗定时器在时,看门狗定时器在“空空闲模式闲模式”计数,即正常工作。当计数,即正常工作。当IDLE_W

52、DT位被清位被清“0”时,看门狗定时器在时,看门狗定时器在“空闲模式空闲模式”时不计数,即停止工时不计数,即停止工作。作。位号位号D7D6D5D4D3D2D1D0位名称位名称SMODSMOD0LVDFPOFGF1GF0PDIDL61/75在空闲模式下在空闲模式下,RAM、堆栈指针(、堆栈指针(SP)、程)、程序计数器(序计数器(PC)、程序状态字()、程序状态字(PSW)、累)、累加器(加器(A)等寄存器都保持原有数据。)等寄存器都保持原有数据。I/O口保口保持着空闲模式被激活前那一刻的逻辑状态。空持着空闲模式被激活前那一刻的逻辑状态。空闲模式下单片机的所有外围设备都能正常运行闲模式下单片机的

53、所有外围设备都能正常运行(除(除CPU无时钟不工作外)。无时钟不工作外)。当任何一个中断产生时,它们都可以将单片机当任何一个中断产生时,它们都可以将单片机唤醒,单片机被唤醒后,唤醒,单片机被唤醒后,CPU将继续执行进入将继续执行进入空闲模式语句的下一条指令。空闲模式语句的下一条指令。62/75有两种方式可以退出空闲模式有两种方式可以退出空闲模式外部中断、定时器中断、低电压检测中断以及外部中断、定时器中断、低电压检测中断以及A/D转换中断中的任何一个中断的产生都会引转换中断中的任何一个中断的产生都会引起起IDL/PCON.0被硬件清除,从而退出空闲模被硬件清除,从而退出空闲模式。式。外部外部RS

54、T引脚复位,将复位脚拉高,产生复位。引脚复位,将复位脚拉高,产生复位。这种拉高复位引脚来产生复位的信号源需要被这种拉高复位引脚来产生复位的信号源需要被保持保持24个时钟加上个时钟加上20us,才能产生复位,再将,才能产生复位,再将RST引脚拉低,结束复位,单片机从用户程序引脚拉低,结束复位,单片机从用户程序的的0000H处开始正常工作。处开始正常工作。63/755)GF1和和GF0是通用用户标志是通用用户标志1和和0,用户可以任,用户可以任意使用。意使用。6)SMOD和和SMOD0:与电源控制无关,与串口:与电源控制无关,与串口有关,在此不作介绍。有关,在此不作介绍。位号位号D7D6D5D4D

55、3D2D1D0位名称位名称SMODSMOD0LVDFPOFGF1GF0PDIDL64/752、省电方式的应用、省电方式的应用省电方式的应用主要涉及到省电方式的进入省电方式的应用主要涉及到省电方式的进入(设置(设置PCON)和省电方式的退出(唤醒)两)和省电方式的退出(唤醒)两个方面。下面举例说明程序的设计方法。个方面。下面举例说明程序的设计方法。【例例11-2】 设计程序,利用外部中断实现单片设计程序,利用外部中断实现单片机从掉电模式唤醒。机从掉电模式唤醒。65/75#include “stc15.h”#include “intrins.h”sbit Begin_Led = P12; /系统开

56、始工作指示灯系统开始工作指示灯 unsigned char Is_Power_Down=0; /判断是否进入掉电模式标志判断是否进入掉电模式标志sbit Is_Power_Down_Led_INT0=P17;/掉电唤醒指示,在掉电唤醒指示,在INT0中中sbit Not_Power_Down_Led_INT0=P16;/非掉电唤醒指示,在非掉电唤醒指示,在INT0中中sbit Is_Power_Down_Led_INT1=P15;/掉电唤醒指示,在掉电唤醒指示,在INT1中中sbit Not_Power_Down_Led_INT1=P14;/非掉电唤醒指示,在非掉电唤醒指示,在INT1中中sb

57、it Power_Down_Wakeup_Pin_INT0 = P32; /掉电唤醒管脚,掉电唤醒管脚,INT0sbit Power_Down_Wakeup_Pin_INT1 = P33; /掉电唤醒管脚,掉电唤醒管脚,INT1sbit Normal_Work_Flashing_Led= P13; /正常工作状态指示灯正常工作状态指示灯void Normal_Work_Flashing(void); void INT_System_init(void); 66/75void main(void) unsigned char j=0; unsigned char wakeup_counter =

58、 0;/中断唤醒次数变量初始为中断唤醒次数变量初始为0 Begin_Led = 0; /系统开始工作指示灯系统开始工作指示灯 INT_System_init(); /中断系统初始化中断系统初始化 while(1) P2 = wakeup_counter; /中断唤醒次数显示中断唤醒次数显示,先将先将wakeup_counter取反取反 wakeup_counter+; /中断唤醒次数修正中断唤醒次数修正 for(j=0;j2;j+) Normal_Work_Flashing(); /系统正常工作指示灯系统正常工作指示灯 Is_Power_Down = 1; /进入掉电模式之前,将其置进入掉电模

59、式之前,将其置1,以供判断,以供判断 PCON=0 x02;/执行完此句,单片机进入掉电模式,外部时钟停止振荡执行完此句,单片机进入掉电模式,外部时钟停止振荡 _nop_(); /外部中断唤醒后,先执行该语句,然后进入中断服务程序外部中断唤醒后,先执行该语句,然后进入中断服务程序 _nop_(); /建议多加几个空操作指令建议多加几个空操作指令NOP,以便观察,以便观察 图10-16 单片机从CH451获得按键代码的过程67/75void INT_System_init(void)/中断系统初始化中断系统初始化 IT0 = 0; /外部中断外部中断0,上升沿和下降沿都可触发中断,上升沿和下降沿

60、都可触发中断 EX0 = 1; /允许外部中断允许外部中断0 中断中断 IT1 = 1; /外部中断外部中断 1,下降沿触发中断,下降沿触发中断 EX1 = 1; /允许外部中断允许外部中断1中断中断 EA = 1; /开总中断控制位开总中断控制位 68/75void INT0_ISR(void) interrupt 0 /外部中断外部中断0服务程序服务程序 if(Is_Power_Down) /判断掉电唤醒标志判断掉电唤醒标志 Is_Power_Down = 0; Is_Power_Down_Led_INT0=0;/点亮外部中断点亮外部中断0掉电唤醒指示灯掉电唤醒指示灯 while(Powe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论