×
单片机 > 单片机程序设计 > 详情

拾:最小系统与省电工作方式

发布时间:2020-05-27 发布时间:
|

1、什么是最小系统?
能让单片机正常工作的最小电路,我们称之为最小系统。
2、最下系统包含哪些电路?
①电源电路。
②晶振电路。
③复位电路。

晶振电路
晶振是为电路提供频繁基准的元器件,通常分为有源晶振和无源晶振两个大类。

无源晶振

有源晶振

复位电路
51芯片,通常在上电的瞬间需要一个短暂的时间进行内部参数的初始化,这个时候芯片无法立即进入工作状态。通常称上电初始化这些工作为复位。
复位电路的基本功能是:系统上电时提供复位信号,直至电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时(共大于两个机器周期)才撤销复位信号。

上电复位电路

开关复位电路

省电

1、为什么要省电?
①便携、耐用
2、有哪些省电途径?
①低工作电压
②省电工作方式
③内部模块的单独开关
④工作频率的设置
⑤优秀的软件设计

省电工作方式

51有两种可用软件来选择的省电方式——空闲工作方式和掉电工作方式。
寄存器PCON(电源控制寄存器)中PD(PCON.1)和IDL(PCON.0)位来控制。

D7
D6
D5
D4
D3
D2
D1
D0
SMOD


GF1GF0PDIDL

SMOD是串行口波特率倍增位。当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。
GF1,GF0:两个通用工作标志位,用户可以自由使用。
PD:掉电模式设定位。PD=0单片机处于正常工作状态。PD=1单片夹进入掉电(Power Down)模式,可由外部中断或硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断工作。
IDL:空闲模式设定位。IDL=0单片机处于正常工作状态。IDL=1单片机进入空闲(Idle)模式,除CPU不工作外,其余仍继续工作,在空闲模式下可由任一中断或硬件复位唤醒。

外部中断使用

2个外部中断资源:外部中断0(INT0、对应P3.2引脚)和外部中断1(INT1、对应P3.3引脚)。
外部中断有两种触发方式:低电平触发方式、负跳变触发方式。

低电平触发方式

负跳变触发方式

51单片机中的每个外部中断都可以设置是否中断屏蔽、中断触发方式。当产生中断事件后,会置位相应的中断标志位。 中断允许控制寄存器IE用于设置中断源的开放和屏蔽,其中与外部中断相关的涉及到3个位。

D7
D6
D5
D4
D3
D2
D1
D0
EA



EX1
EX0

EA:中断允许总开关位。EA=1,开中断;EA=0,禁用所有中断。
EX1:外部中断1允许位。ET1=1,开INT1中断;ET1=0,关INT1中断。
EX0:外部中断0允许位。ET0=1,开INT0中断;ET0=0,关INT0中断。
还有一个中断优先级控制寄存器IP可设置某个中断源为高优先级还是低优先级中断,一般情况下不需要设置。

TCON寄存器

D7
D6
D5
D4
D3
D2
D1
D0




IE1IT1IE0IT0




外部中断1外部中断1外部中断0外部中断0

IT1:外部中断1中断触发方式设置位。IT1=0,为低电平触发方式;IT1=1,为下降沿(负跳变)触发方式。 IE1:外部中断1中断请求标志位。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断请求标志。 IT0:外部中断0中断触发方式设置位,其意义和功能与IT1类似。 IE0:外部中断0中断请求标志位。

实验


汇编代码


******************************************************************/ 

*   【课程11】 ****单片机的省电工作模式***********

*   【说  明】 ****让单片机工作在省电模式,

*   【描  述】 ****让单片机工作在省电模式,通过外部中断推出省电模式

******************************************************************/       


        ORG 0000H

JMP MAIN

ORG 0003H

MOV PCON,#00H

RETI


ORG  0030H

MAIN: SETB IT0 ;设置边沿触发

      SETB EA ;开总中断开关

      SETB EX0 ;开中断0

      MOV  R2,#10

JX: CLR  P1.0 ;控制LED灯闪烁10次

CALL DELAY

SETB  P1.0

CALL DELAY

DJNZ R2,JX

MOV  PCON,#01H ;进入省电模式

JMP  MAIN


DELAY:    ;延时子函数

         MOV    R7,#0FFH  ;延时程序

W1:      MOV    R6,#0fFH

W2:      DJNZ   R6,W2

         DJNZ   R7,W1

RET

END


C代码


******************************************************************/

*   【课程11】 ****单片机的省电工作模式***********

*   【说  明】 ****让单片机工作在省电模式,

*   【描  述】 ****让单片机工作在省电模式,通过外部中断推出省电模式

******************************************************************/

#include //51头文件,

#include


//---------常用的两个宏定义-------------- 

#define uint8 unsigned char

#define uint16  unsigned int


sbit LED=P1^0; //发光二极管引脚定义

/*----------------------------------

函数名:INT0_i()

功能: 中断服务程序

-------------------------------------*/

void INT0_i()    interrupt 0

{

PCON=0x00; //退出省电模式

}


/*----------------------------------

函数名:main()

功能: 主程序

-------------------------------------*/

void main()

{

uint16 i,j;


IT0=1; //选择外部中断0为下降沿触发

EX0=1; //开启外部中断0

EA=1; //开启总中断


LED=1;

while(1)

{

for(i=0;i<20;i++)

{

for(j=0;j<30000;j++)   //延时一段时间

_nop_();

LED=~LED;        //让LED灯闪烁

}

PCON=0x01;                //进入空闲模式

}

}



关键字:最小系统  省电  工作方式 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析