1. 程式人生 > >拾:最小系統與省電工作方式

拾:最小系統與省電工作方式

1、什麼是最小系統? 能讓微控制器正常工作的最小電路,我們稱之為最小系統。 2、最下系統包含哪些電路? ①電源電路。 ②晶振電路。 ③復位電路。

晶振電路 晶振是為電路提供頻繁基準的元器件,通常分為有源晶振和無源晶振兩個大類。

無源晶振
有源晶振

復位電路 51晶片,通常在上電的瞬間需要一個短暫的時間進行內部引數的初始化,這個時候晶片無法立即進入工作狀態。通常稱上電初始化這些工作為復位。 復位電路的基本功能是:系統上電時提供復位訊號,直至電源穩定後,撤銷復位訊號。為可靠起見,電源穩定後還要經一定的延時(共大於兩個機器週期)才撤銷復位訊號。

上電覆位電路
開關復位電路

這裡寫圖片描述

省電

1、為什麼要省電? ①便攜、耐用 2、有哪些省電途徑? ①低工作電壓 ②省電工作方式 ③內部模組的單獨開關 ④工作頻率的設定 ⑤優秀的軟體設計

省電工作方式

51有兩種可用軟體來選擇的省電方式——空閒工作方式和掉電工作方式。 暫存器PCON(電源控制暫存器)中PD(PCON.1)和IDL(PCON.0)位來控制。

D7
D6
D5
D4
D3
D2
D1
D0
SMOD GF1 GF0 PD IDL

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
IE1 IT1 IE0 IT0
外部中斷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<reg51.h>		//51標頭檔案,
#include <intrins.h>

//---------常用的兩個巨集定義-------------- 
#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;	               //進入空閒模式
	}
}