CIP-51 有两种可软件编程的电源管理方式:空闲和 停机目的节能、省电)2.3 电源管理方式电源控制寄存器(PCON特殊功能寄存器)用于控 制CIP-51 电源管理方式位7-2:保留位1: STOP:停机方式选择 向该位写‘1’将使CIP-51 进入停机方式该位读出 值总是为0写1:CIP-51 被强制进入停机方式(关闭内部振 荡器,外设、中断全停)位0: IDLE:空闲方式选择 向该位写‘1’将使CIP-51 进入空闲方式该位读出值 总是为0写1:CIP-51 被强制进入空闲方式关闭供给 CPU 的时钟信号,但定时器、中断和所有外设保持 活动状态2.3.1 空闲方式进入方式: 将空闲方式选择位(PCON.0)置1,在执行完对该 位置1 的指令后MCU 立即进入空闲方式空闲方式所有内部寄存器和存储器都保持原来的数 据不变所有模拟和数字外设在空闲方式期间都可 以保持活动状态退出方式: 一旦一个被允许的中断发生或复位将结束空闲方式 当有一个被允许的中断发生时,空闲方式选择位( PCON.0)被硬件清0,CPU 将继续工作该中断 将得到服务,中断返回(RETI)后将开始执行设 置空闲方式选择位的那条指令的下一条指令。
如果空闲方式因一个内部或外部复位而结束,则 CIP-51 进行正常的复位过程并从地址0x0000 开始 执行程序如果WDT被使能,WDT 将产生一个内部看门狗复 位,从而结束空闲方式这一功能可以保护系统不会因为对PCON 寄存器的 意外写入而导致永久性停机如果不需要这种功能,可以在进入空闲方式之前禁 止看门狗2.3.2 停机方式进入方式:将停机方式选择位(PCON.1)置1 在执行完对该 位置1 的指令后MCU 立即进入停机方式在停机方式,CPU 和振荡器都被停止,实际上所有 的数字外设都停止工作退出方式: 只有内部或外部复位能结束停机方式复位时, CIP-51 进行正常的复位过程并从地址0x0000 开 始执行程序如果时钟丢失检测器被使能,时钟丢失检测器将 产生一个内部复位,从而结束停机方式如果想 要使CPU的休眠时间长于100 微秒的MCD 超时时 间,则应禁止时钟丢失检测器复位电路允许很容易地将控制器置于一个预定的缺省状态 在进入复位状态时,将发生以下过程: CIP-51 停止程序执行 特殊功能寄存器(SFR)被初始化为所定义的复位值 外部端口(并口)引脚被置于一个已知状态 复位期间中断和定时器被禁止。
所有的SFR 都被初始化为预定值,SFR 中各位的复位值在 SFR 的详细说明中定义在复位期间内部数据存储器的内容 不发生改变,复位前存储的数据保持不变但由于堆栈指针 SFR被复位,堆栈实际上已丢失,尽管堆栈中的数据未发生 变化2. 4复位源I/O 端口锁存器的复位值为0xFF(全部为逻辑‘1’)使外部I/O 引脚处于高电平状态注意:外部I/O 引脚并不立即进入高电平状态,而是在进入 复位状态后的四个系统时钟之后在退出复位状态时,程序计数器(PC)被复位, MCU 使用内部振荡器运行在2MHz 作为默认的系 统时钟看门狗定时器被使能,使用其最长的超时时间一旦系统时钟源稳定,程序从地址0x0000 开始执 行有7 个能使MCU 进入复位状态的复位源:上电/掉电、外部/RST 引脚、外部CNVSTR 信号、 软件命令、比较器0、时钟丢失检测器及看门狗定 时器下面将对每个复位源进行说明特殊功能寄存器RSTSRC:复位源寄存器每个位对应一种复位源 位7: 保留 位6: CNVRSEF:转换启动复位源使能和标志写: 0:CNVSTR 不是复位源1:CNVSTR 是复位源(低电平有效)读:0:前面的复位不是来自CNVSTR。
1:前面的复位来自CNVSTR位5: C0RSEF:比较器0 复位使能和标志写: 0:比较器0 不是复位源1:比较器0 是复位源(低电平有效)读:0:前面的复位不是来自比较器01:前面的复位来自比较器0位4: SWRSF:软件强制复位和标志写:0:无作用1:强制产生一个内部复位/RST 引脚不 受影响读:0:前面的复位不是来自写SWRSF 位1:前面的复位来自写SWRSF 位位3: WDTRSF:看门狗定时器复位标志0:前面的复位不是来自WDT 超时1:前面的复位来自WDT 超时位2: MCDRSF:时钟丢失检测器标志0:前面的复位不是来自时钟丢失检测器超时1:前面的复位来自时钟丢失检测器超时位1: PORSF:强制上电复位和标志写: 0:无作用1:强制产生一个上电复位/RST 引脚被 驱动为低电平读:0:前面的复位不是来自POR1:前面的复位来自POR位0: PINRSF:硬件引脚复位标志0:前面的复位不是来自/RST 引脚1:前面的复位来自/RST 引脚 2. 4 .1上电复位C8051F020/1/2/3 有一个电源(VDD)监视器,在 上电期间该监视器使MCU 保持在复位状态,直到 VDD 上升到超过VRST 电平。
见图2.3 的时序图/RST 引脚一直被置为低电平,直到100 毫秒的VDD 监视器超时时间结束,这100 毫秒的等待时间是为 了使VDD 电源稳定图2-3 复位时序图在退出上电复位状态时,PORSF 标志( RSTSRC.1)被硬件置为逻辑‘1’PORSF 被 任何其它复位清0由于所有的复位都导致程序从同一个地址( 0x0000)开始执行,软件可以通过读PORSF 标志来确定是否为上电导致的复位在一次上 电复位后,内部数据存储器中的内容应被认为 是不确定的通过将MONEN 引脚直接连VDD 来使能VDD 监视器这是MONEN 引脚的推荐配置2. 4 .2掉电复位 当发生掉电或因电源不稳定而导致VDD 下降到低于 VRST 电平时,电源监视器将/RST 引脚置于低电平 并使CIP-51 回到复位状态当VDD 回升到超过VRST 电平时,CIP-51 将离开 复位状态,过程与上电复位相同2. 4 .3外部复位外部/RST 引脚提供了使用外部电路强制MCU 进入复位状 态的手段在/RST 引脚上加一个低电平有效信号将导致 MCU 进入复位状态最好能提供一个外部上拉或对/RST 引脚去耦以防止强噪声 引起复位。
在低有效的/RST 信号撤出后,MCU 将保持在复位状态至 少12 个时钟周期从外部复位状态退出后,PINRSF 标志(RSTSRC.0)被置 位2. 4 .4软件强制复位向SWRSEF 位写1 将强制产生一个上电复位2. 4 .5时钟丢失检测器复位时钟丢失检测器实际上是由MCU 系统时钟触发 的单稳态电路如果未收到系统时钟的时间大 于100 微秒,单稳态电路将超时并产生一个复 位在发生时钟丢失检测器复位后,MCDRSF 标志(RSTSRC.2)将被置‘1’,表示本次复位 源为MSD;否则该位被清‘0’/RST 引脚的状态不受该复位的影响把OSCIN 寄存器中的MSCLKE 位置‘1’将使能时钟丢失检 测器2. 4 .6外部CNVSTR 引脚复位向CNVRSEF 标志(RSTSRC.6)写‘1’可以将外部CNVSTR 信号配置为复位源CNVSTR信号可以出现在P0、P1、P2 或P3 的任何I/O 引脚注意:交叉开关必许被配置为使CNVSTR 信号接到正确的端 口I/O应该在将CNVRSEF 置‘1’之前配置并使能交叉开关 当被配置为复位源时,CNVSTR 为低电平有效在发生CNVSTR 复位之后,CNVRSEF 标志(RSTSRC.6) 的读出值为‘1’,表示本次复位源为CNVSTR;否则该位读出 值为‘0’。
/RST 引脚的状态不受该复位的影响2. 4 .7 比较器0 复位向C0RSEF 标志(RSTSRC.5)写‘1’可以将比较器0 配置为 复位源应在写C0RSEF之前用CPT0CN.7使能比较器0,以防止通电 瞬间在输出端产生抖动,从而产生不希望的复位比较器0 复位是低电平有效:如果同相端输入电压(CP0+引 脚)小于反相端输入电压(CP0-引脚),则MCU 被置于复 位状态在发生比较器0 复位之后,C0RSEF 标志 (RSTSRC.5)的读出值为‘1’,表示本次复位源为比较器0; 否则该位被清‘0’/RST 引脚的状态不受该复位的影响2. 4 .8看门狗定时器复位MCU 内部有一个使用系统时钟的可编程看门狗定 时器(WDT),WDT计数体字长21位当看门狗定时器溢出时,WDT 将强制CPU 进入复 位状态为了防止复位,必须在溢出发生前由应用 软件重新触发WDT如果系统出现了软件/硬件错误,使应用软件不能 重新触发WDT,则WDT 将溢出并产生一个复位, 这可以防止系统失控在从任何一种复位退出时,WDT 被自动使能并使 用缺省的最大时间间隔运行系统软件可以根据需要禁止WDT 或将其锁定为运 行状态以防止意外产生的禁止操作。
WDT 一旦被 锁定,在下一次系统复位之前将不能被禁止注意:/RST 引脚的状态不受该复位的影响看门狗的功能可以通过看门狗定时器控制寄存器( WDTCN)控制WDTCN位7-0: WDT 控制 写入0xA5 将使能并重新装载WDT 写入0xDE 后四个系统周期内写入0xAD,将禁止WDT 写入0xFF 将锁定禁止功能位4: 看门狗状态位(只读) 读WDTCN.[4]得到看门狗定时器的状态 0:WDT 处于不活动状态 1:WDT 处于活动状态位2-0: 看门狗超时间隔位 位WDTCN.[2:0]设置看门狗的超时间隔在写这些 位时,WDTCN.7 必须被置为‘0’2. 4 .8.1 使能/复位WDT向WDTCN 寄存器写入0xA5 将使能并复位看门狗 定时器用户的应用软件应该在看门狗定时器溢出之前,向 WDTCN 写入0xA5,以防止看门狗定时器溢出每次系统复位都将使能并复位WDT2. 4 .8.2 禁止WDT向WDTCN 寄存器写入0xDE 后再写入0xAD 将禁 止WDT下面的代码段说明禁止WDT的过程CLR EA ; 禁止所有中断 MOV WDTCN, #0DEh ; 禁止软件看门狗定时器 MOV WDTCN, #0ADh SETB EA ; 重新允许中断 关中断原因: 写0xDE 和写0xAD 必须发生在4 个时钟周期之内 ,否则禁止操作将被忽略。
在这个过程期间应禁止 中断,以避免两次写操作之间有延时2. 4 .8.3 禁止WDT 锁定向WDTCN 写入0xFF 将使禁止功能无效一旦锁 定,在下一次复位之前禁止操作将被忽略2. 4 .8.4 设置WDT 定时间隔 最高位=0的情况下,WDTCN.[2:0]控制看门狗超时 间隔超时间隔由下式给出:TSYSCLK× 4^(3+WDTCN[2:0] ) ;(其中TSYSCLK 为系统时钟周期)对于2MHz 的系统时钟,超时间隔的范围是 0.032ms 到524ms在设置这个超时间隔时, WDTCN.7 必须为0读WDTCN 将返回编程的超时 间隔在系统复位后,WDT.[2:0]为111b2. 5振荡器每个MCU 都有一个内部振荡器(不够灵活)和一 个外部振荡器驱动电路内部振荡器可以独立产生时钟信号;外部振荡器驱动电路配合片外配置电路也可以产生 时钟信号MCU 在复位后从内部振荡器启动当/RST 引脚为低电平时,两个振荡器都被禁止图2-4振荡器框图2.5.1 内部振荡器C8051F120包含一个可编程内部振荡器(下页图),该振荡 器在系统复位后被默认为系统时钟内部振荡器的周期可以 通过OSCICL 寄存器调整。
位7-0: OSCICL:内部振荡器校准寄存器 该寄存器校准内部振荡器的周期OSCICL 的复位值定义内 部振荡器的基频复位值已经过工厂校准,对应的基频为 。