单片机课件复位、时钟和省电方式控制_第1页
单片机课件复位、时钟和省电方式控制_第2页
单片机课件复位、时钟和省电方式控制_第3页
单片机课件复位、时钟和省电方式控制_第4页
单片机课件复位、时钟和省电方式控制_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、 第十一章复位、时钟和省电方式控制本章学习目标(mbio)掌握单片机的时钟掌握单片机的电源检测与控制1共七十六页正确(zhngqu)复位和合适的时钟是单片机正常工作的基础,而单片机的省电方式控制可以降低系统的功耗,从而实现低功耗设计。本章介绍STC15F2K60S2单片机的复位、时钟配置方法和单片机的供电电源检测和控制。 2共七十六页复位就是(jish)单片机的初始化工作,复位后中央处理器(CPU)及单片机内的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。 复位分为热启动复位和冷启动复位两种,它们的区别如表11-1所示。11.1 复位(f wi)3共七十六页复位种类复位源复位现象

2、热启动复位内部看门狗复位单片机直接从用户程序区0000H处开始执行用户程序通过控制RESET引脚产生的硬复位从用户程序区0000H处开始直接执行用户程序通过对IAP_CONTR寄存器送入20H产生的软复位从用户程序区0000H处开始直接执行用户程序通过对IAP_CONTR寄存器送入60H产生的软复位从系统ISP监控程序区开始执行程序,如果检测不到合法的ISP下载命令流,将软复位到用户程序区执行用户程序冷启动复位系统停电后再上电引起的硬复位从系统ISP监控程序区开始执行程序,如果检测不到合法的ISP下载命令流,将软复位到用户程序区执行用户程序表11-1 热启动复位(f wi)和冷启动复位(f w

3、i)4共七十六页STC15F2K60S2单片机有6种复位方式外部RST引脚复位软件复位掉电复位/上电复位(并可选择增加额外的复位延时180ms,也叫MAX810专用(zhunyng)复位电路,其实就是在上电复位后增加一个180ms复位延时)内部低电压检测复位MAX810专用复位电路复位看门狗复位5共七十六页1、外部RST引脚复位外部RST引脚复位就是从外部向RST引脚施加一定宽度的复位脉冲,从而实现单片机的复位。P5.4/RST引脚出厂时被配置为I/O口,要将其配置为复位功能,可在使用(shyng)ISP下载程序时设置。如果P5.4/RST引脚已在ISP烧录程序时被设置为复位脚,那P5.4/R

4、ST就是芯片复位的输入脚。将RST复位脚拉高并维持至少24个时钟加20us后,单片机会进入复位状态,将RST复位脚拉回低电平后,单片机结束复位状态并从用户程序区的0000H处开始正常工作。6共七十六页2、软件复位在系统运行过程中,有时会根据特殊需求,需要实现单片机系统软复位(热启动之一),传统的8051单片机由于硬件(yn jin)上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。STC15F2K60S2单片机利用ISP/IAP控制寄存器IAP_CONTR(地址为C7H,复位值为0000 x000B)实现了此功能。用户只需简单的控制IAP_CONTR的其中两位SWBS/SWRST就可以系

5、统复位了。7共七十六页ISP/IAP控制寄存器IAP_CONTR的各位定义如下:1)SWBS软件选择从用户应用程序区启动(qdng)(0)从 ISP程序区启动(1)要与SWRST配合才可以实现位号D7D6D5D4D3D2D1D0位名称IAPENSWBSSWRSTCMD_FAIL-WT2WT1WT08共七十六页2)SWRST:产生软件复位控制位。0:不操作(cozu)1 :产生软件系统复位,硬件自动清0要与SWRST配合才可以实现位号D7D6D5D4D3D2D1D0位名称IAPENSWBSSWRSTCMD_FAIL-WT2WT1WT09共七十六页下面的描述中,用户应用程序区简称AP区,系统ISP

6、监控程序区简称ISP区。例如(lr),从AP区软件复位并切换到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区软复位)10共七十六页从AP区软件(run jin)复位并切换到ISP区开始执行程序的IAP_CONTR设置代码为:MOV IAP_CONTR,#01100000B;SWBS=1,SWRST=1(选择ISP区软复位)从ISP

7、区软件复位并切换到ISP区开始执行程序的IAP_CONTR设置代码为:MOV IAP_CONTR,#01100000B;SWBS=1,SWRST=1(选择ISP区软复位)11共七十六页3)CMD_FAIL 如果送了ISP/IAP命令,并对IAP_TRIG送5AH/A5H触发失败(shbi),则为1,需要由软件清0。 位号D7D6D5D4D3D2D1D0位名称IAPENSWBSSWRSTCMD_FAIL-WT2WT1WT012共七十六页3、掉电复位/上电复位当电源(dinyun)电压VCC低于掉电复位/上电复位检测门槛电压时,所有的逻辑电路都会复位。当内部VCC上升至上电复位检测门槛电压以上后,

8、延迟32768个时钟,掉电复位/上电复位结束。13共七十六页4、MAX810专用复位电路复位STC15F2K60S2单片机内部集成了MAX810专用复位电路。若MAX810专用复位电路在STC-ISP编程器中被允许,则以后掉电复位/上电复位后将再产生(chnshng)约180ms复位延时,复位才能被解除。14共七十六页5、内部低压检测复位除了上电复位检测门槛(mnkn)电压外,STC15F2K60S2单片机还有一组更可靠的内部低电压检测门槛电压。当电源电压VCC低于内部低电压检测(LVD)门槛电压时,可产生复位(前提是在STC-ISP编程用户程序时,允许低电压检测复位,即将低电压检测门槛电压设

9、置为复位门槛电压)。15共七十六页STC15F2K60S2单片机内置了8级可选的内部低电压检测(jin c)门槛电压。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.263.513.433.382.142.122.123.363.283.232.012.002.003.213.143.091.901.891.89表11-2

10、 不同温度下单片机的低电压检测(jin c)门槛电压(单位:V)16共七十六页例如,当用户使用5V单片机时,可以根据单片机的实际(shj)工频率,在STC-ISP编程中选择表11-2中所列出的低电压检测门槛电压作为复位门槛电压。如:常温下工作频率是20MHz以上时,可以选择4.32V电压作为复位门槛电压;常温下工作频率是12MHz以下时,可以选择3.82V电压作为复位门槛电压。 17共七十六页复位门槛(mnkn)电压的选择如图11-1所示。选择复位(f wi)门槛电压图11-1 复位门槛电压的选择18共七十六页如果在STC-ISP下载用户应用程序时,不将低电压检测设置为低电压检测复位,则在用户

11、程序中用户可将低电压检测设置为低电压检测中断。当电源电压VCC低于内部低电压检测(LVD)门槛电压时,低电压检测中断请求标志位(LVDF/PCON.5)就会被硬件置位。如果ELVD/IE.6(低电压检测中断允许(ynx)位)设置为1,低电压检测中断请求标志位就能产生一个低电压检测中断。建议在电压偏低时,不要操作EEPROM/IAP,编程时直接选择“低压禁止IAP操作”。19共七十六页6、看门狗复位(1)看门狗定时器复位在工业控制、汽车电子、航空航天等需要高可靠性的系统(xtng)中,为了防止系统(xtng)在异常情况下受到干扰,CPU程序跑飞,导致系统长时间异常工作,往往需要在系统中使用看门狗

12、(Watch Dog)电路。20共七十六页看门狗电路的基本作用就是监视CPU的工作。如果CPU在规定的时间内没有按要求访问看门狗,就认为CPU处于异常(ychng)状态,看门狗就会强迫CPU复位,使系统重新从头开始按规律执行用户程序。正常工作时,单片机可以通过一个I/O引脚定时向看门狗脉冲输入端输入脉冲(脉冲宽度只要不超出看门狗电路的溢出时间即可)。当系统死机时,单片机就会停止向看门狗脉冲输入端输入脉冲,超过一定时间后,看门狗电路就会发出复位信号,将系统复位,使系统恢复正常工作。21共七十六页STC15F2K60S2单片机内部集成了看门狗定时器(Watch Dog Timer,WDT),使单片

13、机系统可靠性设计变得更加方便、简洁。通过设置和使用WDT控制寄存器WDT_CONTR(地址为C1H,复位(f wi)值为xx00 0000B)来使用看门狗功能。 位号D7D6D5D4D3D2D1D0位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS022共七十六页1)WDT_FLAG:看门狗溢出(y ch)标志位,溢出(y ch)时该位由硬件置1可用软件将其清0 位号D7D6D5D4D3D2D1D0位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS023共七十六页2)EN_WDT:看门狗允许位该位当设置为“1”时,看门狗启动。3)

14、CLR_WDT:看门狗清零位(ln wi) 当设为“1”时,看门狗将重新计数。硬件将自动清0此位。位号D7D6D5D4D3D2D1D0位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS024共七十六页4)IDLE_WDT:看门狗“IDLE”模式(即空闲(kngxin)模式)位当设置为“1”时,WDT在“空闲模式”计数;当清0该位时,WDT在“空闲模式”时不计数。5)PS2、PS1、PS0:WDT预分频系数控制位。位号D7D6D5D4D3D2D1D0位名称WDT_FLAG-EN_WDTCLR_WDTIDLE_WDTPS2PS1PS025共七十六页WDT溢出时间的计

15、算方法:WDT的溢出时间 =(12 预分频系数 32768 ) / 时钟频率(pnl)例如,时钟为12MHz时WDT的溢出时间=(12 预分频系数 32768) / 12000000 = 预分频系数 393216 / 1200000026共七十六页常见的预分频系数设置和WDT溢出(y ch)时间如表11-3所示。图10-6 LED动态显示接口(ji ku)电路 PS2PS1PS0预分频系数WDT溢出时间 (20MHz)WDT溢出时间 (12MHz)WDT溢出时间 (11.0592MHz)000239.3ms65.5ms71.1ms001478.6 ms131.0 ms142.2 ms01081

16、57.3 ms262.1 ms284.4 ms01116314.6 ms524.2 ms568.8 ms10032629.1 ms1.0485s1.1377s101641.25s2.0971s2.2755s1101282.5s4.1943s4.5511s1112565s8.3886s9.1022s表11-3 WDT的预分频和溢出时间27共七十六页使用ISP编程用户程序时,可以(ky)对看门狗进行设置,如图11-2所示。看门狗功能(gngnng)设置区图11-2 看门狗设置28共七十六页当启用WDT后,用户程序必须周期性的复位WDT,以证明程序正常运行。如果用户程序在一段时间之后不能复位WDT,

17、WDT就会溢出(y ch),将强制CPU自动复位,从而确保程序不会进入死循环,或者执行到无程序代码区。复位WDT的方法是重写WDT控制寄存器的内容。29共七十六页(2)看门狗定时器的使用(shyng)WDT的使用主要涉及WDT控制寄存器的设置以及WDT的定期复位。使用WDT的汇编语言程序如下:30共七十六页$INCLUDE (STC15.INC) ;包含STC15F2K60S2单片机寄存器定义文件ORG 0000HLJMP Initial ;其他(qt)入口定义ORG 0060HInitial:MOV WDT_CONTR,#00111100B ;WDT控制寄存器初始化;EN_WDT=1,CLR

18、_WDT=1,IDLE_WDT=1,PS2=1,PS1=0,PS0=0 ;其他初始化代码Main_Loop: LCALL Display ;调用显示子程序LCALL Keyboard ;调用键盘扫描子程序 ;其他程序代码MOV WDT_CONTR,#00111100B ;复位WDT ;其他代码LJMP Main_Loop31共七十六页使用WDT的C语言(yyn)程序如下:#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 whil

19、e(1) display(); keyboard(); /其他代码 WDT_CONTR=0 x3c; /复位WDT 32共七十六页11.2 单片机的时钟(shzhng)一、时钟源选择 STC15F2K60S2单片机除了可以使用传统的外部时钟外,还可以选择内部R/C振荡器时钟源(内部时钟)。出厂标准配置是使用芯片(xn pin)内部的R/C振荡器。振荡频率可选,-4085时的温飘1%,常温下温飘可达5。如果使用内部时钟,则可以省掉外部晶振。33共七十六页在下载用户程序时,可以在硬件选项中选中调节频率,然后在“选择/输入(shr)频率”下拉框中选择内部R/C振荡时钟频率,如图11-3所示。选择(x

20、unz)内部R/C振荡时钟频率图11-3 选择时钟源34共七十六页二、内部时钟分频和分频寄存器 如果希望降低系统功耗,可对内部时钟进行分频。利用(lyng)时钟分频控制寄存器CLK_DIV(PCON2) 可进行主时钟分频,从而降低单片机工作时钟频率,降低功耗,降低EMI。 35共七十六页时钟分频(fn pn)寄存器CLK_DIV (也称为PCON2,地址为97H,复位值为0000 x000B)各位的定义如下:位号00D7D6D5D4D3D2D1D0位名称MCKO_S1MCKO_S0ADRJTx_Rx-CLKS2CLKS1CLKS036共七十六页其中CLKS2、CLKS1和CLKS0用于设置分频

21、(fn pn)系数,如表11-4所示。位号00D7D6D5D4D3D2D1D0位名称MCKO_S1MCKO_S0ADRJTx_Rx-CLKS2CLKS1CLKS0CLKS2CLKS1CLKS0分频后CPU的实际工作时钟(称为系统时钟)000主时钟频率/1,不分频001主时钟频率/2010主时钟频率/4011主时钟频率/8100主时钟频率/16101主时钟频率/32110主时钟频率/64111主时钟频率/128表11-4 分频系数(xsh)选择37共七十六页STC15F2K60S2单片机的时钟(shzhng)结构如图11-4所示。图11-4 STC15F2K60S2单片机的时钟(shzhng)结

22、构38共七十六页11.3 单片机的电源(dinyun)检测与控制一、单片机的低电压检测 1、低电压检测相关的寄存器电源控制寄存器PCON的LVDF(PCON.5)位是低电压检测标志位,同时也是低电压检测中断请求标志位。在正常工作和空闲工作状态时,如果(rgu)内部工作电压Vcc低于低电压检测门槛电压,该位自动置1,与低电压检测中断是否被允许无关。即在内部工作电压Vcc低于低电压检测门槛电压时,不管有没有允许低电压检测中断,该位都自动为1。该位要用软件清0,清0后,如果内部工作电压Vcc继续低于低电压检测门槛电压,该位又被自动设置为1。39共七十六页在进入掉电工作状态前,如果低电压检测(jin

23、c)电路未被允许可产生中断,则在进入掉电模式后,该低电压检测(jin c)电路不工作以降低功耗。如果被允许可产生低电压检测(jin c)中断,则在进入掉电模式后,该低电压检测(jin c)电路继续工作,在内部工作电压Vcc低于低电压检测门槛电压后,产生低电压检测中断,可将MCU从掉电状态唤醒。40共七十六页中断控制允许位是EA和ELVD,ELVD是低电压检测中断允许位。ELVD = 0时,禁止低电压检测中断;ELVD = 1时,允许低电压检测中断。中断优先级控制位是PLVD,具有(jyu)两级中断优先级。中断请求标志位是LVDF,要由软件清0。如果要求在掉电模式下外部低压检测中断继续工作,可将

24、CPU从掉电模式唤醒,则应将外部中断使能和时钟输出寄存器INT_CLKO的LVD_WAKE (INT_CLKO.3)位设置为1。41共七十六页2、低电压检测的应用(yngyng)下面以一个具体实例,说明外部低电压检测功能的应用。【例11-1】编程实现外部低电压检测功能的应用。解:CPU可以用查询方式查询LVDF标志位,推荐使用中断方式。在中断服务程序中,将LVDF 位清0,再读LVDF位。如果为0,则认为是电源抖动,如果为1,则认为电源掉电,立即进行保存现场数据的工作。保存现场完成后,再将LVDF位清0,再读LVDF位的值。如果为0,则认为电源系统恢复正常,此时CPU可恢复正常工作,如果为1,

25、继续将LVDF位清0,再读LVDF的值,用此方法,等到电源恢复正常,或电源彻底掉电,CPU进入复位状态。42共七十六页下面用查询方式演示外部低电压检测功能的应用(yngyng)(各个口线对应的发光二极管在该口线为低电平时亮)。中断方式的使用方法,请读者自行设计。$INCLUDE (STC15.INC) ;包含STC15F2K60S2单片机寄存器定义文件RUN_LEDEQUP1.0;程序工作指示灯ERROR_LEDEQUP1.1;出错指示灯Hi_Volt_LEDEQUP1.2;正常电压指示灯POWER_ON_LEDEQUP1.3;电源上电指示灯LOW_Volt_LEDEQUP1.4;低电压指示灯

26、43共七十六页ORG 0000HLJMP MAINORG 0100HMAIN:MOV SP, #70H ;堆栈指针指向(zh xin) 70H 单元SETBRUN_LED;演示程序开始工作LCALL Delay ;延时CLRRUN_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 ERROR44共七十六页POWER_ON_1:SETB ERROR_LE

27、DCLR 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_Read45共七十六页Low_Voltage:SETB ERROR_LEDSETB POWER_ON_LEDSETB Hi_Volt_LED

28、CLR 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 END46共七十六页二、省电方式 STC15F2K60S2单片机可以运行3种省电模式以降低功耗低速模式空闲模式掉电模式正常(zhngchng)工作模式下,STC15F2K60S2单片机的典型功耗是2.7mA7mA,而掉电模式下的典型功耗0.1uA,空闲模式下的典型功耗是1.8mA。47共七

29、十六页1、省电方式(fngsh)的控制低速模式由时钟分频器CLK_DIV(PCON2)控制,而空闲模式和掉电模式的进入由电源控制寄存器PCON的相应位控制。 48共七十六页PCON(地址为87H,复位(f wi)值为30H)寄存器的各位定义如下:位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVDFPOFGF1GF0PDIDL49共七十六页1)LVDF:低电压检测标志位,同时也是低电压检测中断请求标志位。2)POF:上电复位(f wi)标志位,单片机停电后,上电复位(f wi)标志位为1,可由软件清0。位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVDFPOFGF

30、1GF0PDIDL50共七十六页在实际应用中,该位可用来判断单片机复位是上电复位 (冷启动),还是外部复位脚输入复位信号产生的复位,还是内部看门狗复位,或者是软件复位或其他(qt)复位。用户可以在初始化程序中判断POF位是否为1,并对不同情况进行不同的处理。判断方法如图11-5所示。图11-5 判断复位(f wi)种类流程图51共七十六页3)PD:将其置1时,单片机将进入(jnr)掉电模式。掉电模式也叫停机模式,此时的典型功耗为2A。进入掉电模式后,内部时钟停振,CPU、定时器、看门狗、A/D转换、串行口全部停止工作,只有外部中断继续工作。如果低电压检测电路被允许产生中断,则低电压检测电路也可

31、继续工作,否则将停止工作。进入掉电模式后,所有的I/O口、特殊功能寄存器维持进入掉电模式前那一刻的状态不变。 位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVDFPOFGF1GF0PDIDL52共七十六页进入掉电模式(msh)的单片机可由外部中断唤醒。可将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单片机进入停机模式/掉电模式后,除了可以通过外部中断源进行唤醒外,使用掉电

32、唤醒专用定时器,也可以将进入掉电模式后的单片机唤醒,使其恢复到正常工作状态。53共七十六页掉电唤醒专用定时器由特殊功能寄存器WKTCH和WKTCL进行管理和控制(kngzh)。WKTCL(地址为AAH,复位值为00H)各位的定义如下:WKTCH(地址为ABH,复位值为00H)各位的定义如下:位号D7D6D5D4D3D2D1D0位名称位号D7D6D5D4D3D2D1D0位名称WKTEN54共七十六页掉电唤醒专用定时器是一个15位定时器,WKTCH6:0,WKTCL7:0构成最长15位计数值(32768),定时从0开始计数。WKTEN:掉电唤醒专用定时器的使能控制(kngzh)位。1:允许掉电唤醒

33、专用定时器工作;0:禁止掉电唤醒专用定时器工作。55共七十六页通过软件将WKTCH寄存器中的WKTEN位置1,允许掉电唤醒专用定时器工作后,当MCU一旦进入掉电模式,掉电唤醒专用定时器就开始计数,直到计数到与WKTCH6:0,WKTCL7:0寄存器所设定的计数值相等(xingdng)后就启动系统振荡器,MCU等待32768/16384/8192/4096个时钟(由用户在ISP烧录程序时自行设置)后,MCU认为此时系统时钟从开始起振的不稳定状态已经过渡到稳定状态,才将时钟供给CPU,CPU获得时钟后,程序从上次掉电的地方继续往下执行。56共七十六页电唤醒专用(zhunyng)定时器计数一次的时间

34、约为488s,当然存在一定的误差。掉电唤醒专用定时器的计数时间为:488sWKTCH6:0,WKTCL7:0寄存器所设定的计数值因此,掉电唤醒专用定时器最小计数时间约为488s掉电唤醒专用定时器最长计数时间约为 488s 32768=15.99s57共七十六页利用掉电唤醒专用(zhunyng)定时器唤醒单片机时,只需在程序的初始化部分设置WKTCL和WKTCH即可,在WKTCH6:0,WKTCL7:0设置计数值,注意将WKTCH的最高位置1,以允许掉电唤醒专用(zhunyng)定时器工作。58共七十六页STC15F2K60S2单片机除增加了特殊功能寄存器WKTCL和WKTCH以外,还设计了2个

35、隐藏的特殊功能寄存器SL_WKTCL和SL_WKTCH来控制内部掉电唤醒(hunxng)专用定时器。SL_WKTCL与WKTCL共用同一个地址SL_WKTCH与WKTCH共用同一个地址SL_WKTCL和SL_WKTCH是隐藏的,对用户不可见。用户对WKTCL和WKTCH写入的内容同时也会写入SL_WKTCL和SL_WKTCH中。当外部中断提前将单片机从停机模式唤醒时,通过读WKTCL和WKTCH的内容(实际是读SL_WKTCL和SL_WKTCH中的内容),可以读出单片机在停机模式/掉电模式等待的时间。59共七十六页4)IDL:将其置1时,单片机将进入空闲模式(msh)(即IDLE模式)在空闲模

36、式下,仅CPU无时钟,停止工作。外部中断、内部低电压检测电路、定时器、A/D转换等其余模块仍正常运行。而看门狗在空闲模式下是否工作取决于其自身有一个“IDLE”模式位:IDLE_WDT(WDT_CONTR.3)。当IDLE_WDT位被设置为“1”时,看门狗定时器在“空闲模式”计数,即正常工作。当IDLE_WDT位被清“0”时,看门狗定时器在“空闲模式”时不计数,即停止工作。位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVDFPOFGF1GF0PDIDL60共七十六页在空闲模式下,RAM、堆栈指针(SP)、程序计数器(PC)、程序状态字(PSW)、累加器(A)等寄存器都保持原有数

37、据。I/O口保持着空闲模式被激活前那一刻的逻辑状态。空闲模式下单片机的所有外围设备都能正常(zhngchng)运行(除CPU无时钟不工作外)。当任何一个中断产生时,它们都可以将单片机唤醒,单片机被唤醒后,CPU将继续执行进入空闲模式语句的下一条指令。61共七十六页有两种方式可以退出空闲模式(msh)外部中断、定时器中断、低电压检测中断以及A/D转换中断中的任何一个中断的产生都会引起IDL/PCON.0被硬件清除,从而退出空闲模式。外部RST引脚复位,将复位脚拉高,产生复位。这种拉高复位引脚来产生复位的信号源需要被保持24个时钟加上20us,才能产生复位,再将RST引脚拉低,结束复位,单片机从用

38、户程序的0000H处开始正常工作。62共七十六页5)GF1和GF0是通用(tngyng)用户标志1和0,用户可以任意使用。6)SMOD和SMOD0:与电源控制无关,与串口有关,在此不作介绍。位号D7D6D5D4D3D2D1D0位名称SMODSMOD0LVDFPOFGF1GF0PDIDL63共七十六页2、省电方式的应用省电方式的应用主要涉及到省电方式的进入(设置PCON)和省电方式的退出(唤醒)两个方面。下面举例说明程序的设计(shj)方法。【例11-2】 设计程序,利用外部中断实现单片机从掉电模式唤醒。64共七十六页#include “stc15.h”#include “intrins.h”s

39、bit Begin_Led = P12; /系统开始工作指示灯 unsigned char Is_Power_Down=0; /判断是否进入掉电模式(msh)标志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中sbit Power_Down_Wakeup_Pin_INT0

40、 = P32; /掉电唤醒管脚,INT0sbit Power_Down_Wakeup_Pin_INT1 = P33; /掉电唤醒管脚,INT1sbit Normal_Work_Flashing_Led= P13; /正常工作状态指示灯void Normal_Work_Flashing(void); void INT_System_init(void); 65共七十六页void main(void) unsigned char j=0; unsigned char wakeup_counter = 0;/中断唤醒次数变量初始为0 Begin_Led = 0; /系统开始工作(gngzu)指示灯

41、INT_System_init(); /中断系统初始化 while(1) P2 = wakeup_counter; /中断唤醒次数显示,先将wakeup_counter取反 wakeup_counter+; /中断唤醒次数修正 for(j=0;j2;j+) Normal_Work_Flashing(); /系统正常工作指示灯 Is_Power_Down = 1; /进入掉电模式之前,将其置1,以供判断 PCON=0 x02;/执行完此句,单片机进入掉电模式,外部时钟停止振荡 _nop_(); /外部中断唤醒后,先执行该语句,然后进入中断服务程序 _nop_(); /建议多加几个空操作指令NOP

42、,以便观察 图10-16 单片机从CH451获得按键代码(di m)的过程66共七十六页void INT_System_init(void)/中断系统初始化 IT0 = 0; /外部(wib)中断0,上升沿和下降沿都可触发中断 EX0 = 1; /允许外部中断0 中断 IT1 = 1; /外部中断 1,下降沿触发中断 EX1 = 1; /允许外部中断1中断 EA = 1; /开总中断控制位 67共七十六页void INT0_ISR(void) interrupt 0 /外部中断0服务程序 if(Is_Power_Down) /判断掉电唤醒标志 Is_Power_Down = 0; Is_Pow

43、er_Down_Led_INT0=0;/点亮外部中断0掉电唤醒指示灯 while(Power_Down_Wakeup_Pin_INT0=0); /等待(dngdi)变高 Is_Power_Down_Led_INT0=1; /关闭外部中断0掉电唤醒指示灯 else Not_Power_Down_Led_INT0=0;/点亮INT0正常工作中断指示灯 while(Power_Down_Wakeup_Pin_INT0=0); /等待变高 Not_Power_Down_Led_INT0=1;/关闭INT0正常工作中断指示灯 68共七十六页void INT1_ISR(void) interrupt 2

44、/外部中断1服务程序 if(Is_Power_Down) /判断掉电唤醒标志(biozh) Is_Power_Down = 0; Is_Power_Down_Led_INT1 = 0; /点亮INT1掉电唤醒指示灯 while(Power_Down_Wakeup_Pin_INT1=0); /等待变高 Is_Power_Down_Led_INT1 = 1; /关闭INT1掉电唤醒指示灯 else Not_Power_Down_Led_INT1=0;/点亮INT1正常工作中断指示灯 while(Power_Down_Wakeup_Pin_INT1=0); /等待变高 Not_Power_Down_Led_INT1=1;/关闭INT1正常工作中断指示灯 69共七十六页void delay(void) unsigned int j,k; for(k=0;k2;+k) for(j=0;j=30000;+j) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 70共七十六页void Normal_Work_Flashing(void) Normal_Work_Flashing_Led = 0; delay(); Normal_Work_Flashing

温馨提示

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

评论

0/150

提交评论