AT89S51

AT89S51

AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反覆擦寫1000次的Flash唯讀程式存儲器,器件採用ATMEL公司的高密度、非易失性存儲技術製造,兼容標準MCS-51指令系統及80C51引腳結構,晶片內集成了通用8位中央處理器和ISP Flash存儲單元,AT89S51在眾多嵌入式控制套用系統中得到廣泛套用。

主要性能參數

1、4k Bytes Flash片內程式存儲器;

2、128 bytes的隨機存取數據存儲器(RAM);

3、32個外部雙向輸入/輸出(I/O)口;

4、2箇中斷優先權、2層中斷嵌套中斷;

5、5箇中斷源;

6、2個16位可程式定時器/計數器;

7、1個全雙工串列通信口;

8、看門狗(WDT)電路;

9、片內振盪器和時鐘電路;

10、與MCS-51兼容;

11、全靜態工作:0Hz-33MHz;

12、三級程式存儲器保密鎖定;

13、可程式串列通道;

14、低功耗的閒置和掉電模式。

管腳說明

VCC:電源電壓輸入端。

GND:電源地。

P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用於外部程式數據存儲器,它可以被定義為數據/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

PDIP封裝的AT89S51管腳圖 PDIP封裝的AT89S51管腳圖

P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩衝器能接收輸出4TTL門電流。P1口管腳寫入1後,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由於內部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。

P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩衝器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。並因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由於內部上拉的緣故。P2口當用於外部程式存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能暫存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。

P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”後,它們被內部上拉為高電平,並用作輸入。作為輸入,由於外部下拉為低電平,P3口將輸出電流(ILL)這是由於上拉的緣故。P3口除了作為普通I/O口,還有第二功能:

P3.0 RXD(串列輸入口)

P3.1 TXD(串列輸出口)

P3.2 /INT0(外部中斷0)

P3.3 /INT1(外部中斷1)

P3.4 T0(T0定時器的外部計數輸入)

P3.5 T1(T1定時器的外部計數輸入)

P3.6 /WR(外部數據存儲器的寫選通)

P3.7 /RD(外部數據存儲器的讀選通)

P3口同時為閃爍編程和編程校驗接收一些控制信號。

I/O口作為輸入口時有兩種工作方式,即所謂的讀連線埠與讀引腳。讀連線埠時實際上並不從外部讀入數據,而是把連線埠鎖存器的內容讀入到內部匯流排,經過某種運算或變換後再寫回到連線埠鎖存器。只有讀連線埠時才真正地把外部的數據讀入到內部匯流排。89C51的P0、P1、P2、P3口作為輸入時都是準雙向口。除了P1口外P0、P2、P3口都還有其他的功能。

RST:復位輸入端,高電平有效。當振盪器復位器件時,要保持RST腳兩個機器周期的高電平時間。

ALE/PROG:地址鎖存允許/編程脈衝信號端。當訪問外部存儲器時,地址鎖存允許的輸出電平用於鎖存地址的低位位元組。在FLASH編程期間,此引腳用於輸入編程脈衝。在平時,ALE端以不變的頻率周期輸出正脈衝信號,此頻率為振盪器頻率的1/6。因此它可用作對外部輸出的脈衝或用於定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈衝。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令時ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。

PSEN:外部程式存儲器的選通信號,低電平有效。在由外部程式存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。

EA/VPP:外部程式存儲器訪問允許。當/EA保持低電平時,則在此期間外部程式存儲器(0000H-FFFFH),不管是否有內部程式存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程式存儲器。在FLASH編程期間,此引腳也用於施加12V編程電源(VPP)。

XTAL1:片內振盪器反相放大器和時鐘發生器的輸入端。

XTAL2:片內振盪器反相放大器的輸出端。

下載程式

AT89SXX系列單片機實現了ISP下載功能,故而取代了89CXX系列的下載方式,也是因為這樣,ATMEL公司已經停止生產89CXX系列的單片機,現在市面上的AT89CXX多是停產前的庫存產品。

2控制線,共4根。

(1)輸入:

RST——復位輸入信號,高電平有效。在振盪器工作時,在RST上作用兩個機器周期以上的高電平,將器件復位。

EA/Vpp——片外程式存儲器訪問允許信號,低電平有效。在編程時,其上施加12V的編程電壓。

(2)輸入,輸出:

ALE/PROG——地址鎖存允許信號,輸出。用做片外存儲器訪問時,低位元組地址鎖存。ALE以1/6的振盪頻率穩定速率輸出,可用做對外輸出的時鐘或用於定時。在EPROM編程期間,作輸入。輸入編程脈衝。ALE可以驅動8個LSTTL負載。

(3)輸出:

PSEN——片外程式存儲器選通信號,低電平有效。在從片外程式存儲器取指期間,在每個機器周期中,當PSEN有效時,程式存儲器的內容被送上P0口(數據匯流排)。PSEN可以驅動8個LSTTL負載。

3、 I/O口:4個口,32根

單片機51系列共有四個8位雙向並行I/O通道口,分別是P0、P1、P2、P3,各具有特殊的電路結構,每位均有自己的鎖存器、輸出驅動器和輸入緩衝器。這種結構,在數據輸出時可鎖存,即輸出新的數據之前,通道口上原數據一直保持不變,但對輸入信息是不鎖存的,因此從外部輸入的信息必須保持到取數指令執行完為止。在這四個8位雙向並行I/O通道口中,我們應該選擇哪一個通道口作為輸入信號和輸出信號的連線埠呢?下面我們先來了解一下四個通道口的結構。

(1)P0口介紹

P0口在訪問外部存儲器時,P0口既是一個真正的雙向數據匯流排口,又是從分時輸出8位地址口。它包括一個輸出鎖存器,兩個三態緩衝器,一個輸出驅動電路和一個輸出控制電路

(2)P1口介紹

P1口是專門為用戶使用的I/O口,是準雙向口,P1口為8位準雙向口,每一位均可單獨定義為輸入或輸出口。在編程校驗期間,用做輸入低位位元組地址。P1口可以驅動4個LSTTL負載。

(3)P2口介紹

P2口也是雙向口。它是供系統擴展時輸出高8位地址。如果沒有系統擴展時,也可以作為用戶的I/O口使用。P2口作為外部數據存儲器或程式存儲器的地址匯流排的高8位輸出口AB8-AB15,P0口由ALE選通作為地址匯流排的低8位輸出口AB0-AB7。外部的程式存儲器由PSEN信號選通,數據存儲器則由WR和RD讀寫信號選通,因為2=64k,所以89S51最大可外接64kB的程式存儲器和數據存儲器

(4)P3口介紹

P3口是個雙功能口,第一功能作通用I/O口,第二功能是作變異功能用,為適應引腳的第二功能的需要,增加了第二功能控制邏輯,在真正的套用電路中,第二功能顯得更為重要。由於第二功能信號有輸入輸出兩種情況,我們分別加以

說明。

P3口的輸入輸出及P3口鎖存器、中斷、定時/計數器、串列口和特殊功能暫存器有關,P3口的第一功能和P1口一樣可作為輸入輸出連線埠,同樣具有位元組操作和位操作兩種方式,在位操作模式下,每一位均可定義為輸入或輸出。

表1P3口的第二功能

連線埠引腳 功能特徵
P3.0 串列輸入口(RXD)
P3.1 串列輸出口(TXD)
P3.2 外中斷0(INT0)
P3.3 外中斷1(INT1)
P3.4 定時/計數器0的外部輸入口(T0)
P3.5 定時/計數器1的外部輸入口(T1)
P3.6 外部數據存儲器寫選通(WR)
P3.7 外部數據存儲器讀選通(RD)

現在我們已經對四個8位雙向並行I/O口有了初步的了解。根據以上的介紹我們知道只有P1口是標準的I/O口,所以我們選用P0口作為數據連線埠,P0口可逐位分別定義各口線為輸入或輸出線。

3.1.289S51單片機的中斷系統

以下內容是對89S51單片機的中斷系統的介紹。

1中斷:程式執行過程中,允許外部或內部事件通過硬體打斷程式的執行,使其轉向為處理內部事件的中斷服務程式中去;完成中斷服務的程式後,CPU繼續原來被打斷的程式,這樣的過程稱為中斷過程。

2中斷源:能產生中斷的外部和內部事件。

89S51有5箇中斷源:

(1) INT0:外部中斷0請求,低電平有效。通過P3.2引腳輸入。

(2)INT1:外部中斷1請求,低電平有效。通過P3.3引腳輸入。

(3)T0:定時器/計數器0溢出中斷請求。

(4)TI:定時器/計數器1溢出中斷請求。

(5)TXD/RXD:串列口中斷請求。當串列口完成一幀數據的傳送或接收時,便請求中斷。

每一個中斷源都對應一個中斷請求標誌位,它們設定在特殊功能暫存器TCON和SCON中。當這些中斷源請求中斷時,相應的標誌分別有TCON和SCON中的相應位來鎖存。

389S51中斷系統有以下4個特殊功能暫存器:

(1)定時器控制暫存器TCON(用6位);

(2)串列口控制暫存器SCON(用2位);

(3)中斷允許暫存器IE;

(4)中斷優先權暫存器IP。

其中,TCON和SCON只有一部分用於中斷控制。通過對以上各特殊功能暫存器的各位進行置位或復位等操作,可實現各種中斷控制功能。

4中斷的回響過程及中斷矢量地址

中斷處理過程可分為3個階段:中斷回響、中斷處理和中斷返回。89C51的CPU在每個機器周期的S5P2期間順序採樣每箇中斷源,CPU在下一個機器周期S6期間按優先權順序查詢中斷標誌。如查詢到某箇中斷標誌為1,則將在接下來的機器周期S1期間按優先權進行中斷處理。中斷系統通過硬體自動將相應的中斷矢量地址裝入PC,以便進入相應的中斷服務程式。表2既是各箇中斷源對應的中斷矢量地址。

由於89S51系列單片機的兩個相鄰的中斷源中斷服務程式入口地址相距只有八個單元,一般的中斷服務程式是容納不下的,通常是在相應的中斷服務程式入口地址中放一條常跳轉指令LJMP,這樣就可以轉到64KB任何可用區域了。

表2 中斷源及其對應的矢量地址

中斷源 中斷矢量地址
外部中斷0() 0003H
定時器/計數器0(T0) 000BH
外部中斷1() 0013H
定時器/計數器1(T1) 001BH
串列口中斷(RI、TI) 0023H

中斷服務程式從矢量地址開始執行,一直到返回指令RETI為止。RETI指令的操作一方面告訴中斷系統該中斷服務程式已執行完畢,另一方面把原來壓入堆疊保護斷點地址從棧頂彈出,裝入程式暫存器PC,使程式返回到被中斷的程式斷點處繼續執行。

5 在編寫中斷服務程式時應注意:

(1)在中斷矢量地址單元處存放一條無條件轉移指令(如LJMP ××××H),使中斷程式可靈活的安排在64KB程式存儲器的任何空間。

(2)在中斷服務程式中,用戶應注意用軟體保護現場,以免中斷返回後丟失原暫存器、累加器中的信息。

(3)若要在執行當前中斷程式時禁止更高優先權中斷,則可先用軟體關閉CPU中斷或禁止某中斷源中斷,在中斷返回前在開放中斷。

AT89S51單片機的優勢

性能強大

AT89S51具有完整的輸入輸出、控制連線埠、以及內部程式存儲空間。與我們通常意義上的微機原理類似,可以通過外接A/D,D/A轉換電路及運放晶片實現對感測器傳送信息的採集,且能夠提供以點陣或LCD液晶及外接按鍵實現人機互動,能對內部眾多I/O連線埠連線步進電機對外圍設備進行精確操控,具有強大的工控能力。

易於學習

AT89S51系列單片機編寫程式的基本流程。其語法結構與我們常用的計算機C語言基本相同,不同之處在於增加了控制具體引腳工作的語句和命令,相對於計算機C語言,單片機C語言更簡練和明確,可以控制每個引腳的輸入輸出狀態。其主要語句集中在例如:“ifelse”、“while”、“for”等循環與判斷語句上,相比計算機C語言更簡單。有過計算機C語言學習經歷經過一段時間的熟悉就能夠熟練進行編程。

使用AT89S51系列單片機編程,可以在沒有實物單片機的情況下在普通電腦上進行程式編寫甚至是調試工作。一般工作中使用Keil公司開發的51單片機編程軟體進行編程,它採用目前流行的開發環境,集編輯,編譯和仿真於一體。在該軟體上用戶可以編寫彙編語言或C語言源程式,並利用該軟體生成單片機能運行的程式。

價格低廉

AT89S51晶片價格便宜,適合對大批量的計量儀器進行規模化改造,其單片售價不超過5元。

相關詞條

相關搜尋

熱門詞條

聯絡我們