AT89S52

AT89S52

AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 系統可程式Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術製造,與工業80C51 產品指令和引腳完全兼容。片上Flash允許程式存儲器在系統內編程,亦適於常規編程器。在單晶片上,擁有靈巧的8 位CPU 和在系統可程式Flash,使得AT89S52在眾多嵌入式控制套用系統中得到廣泛套用。

主要性能

1、與MCS-51單片機產品兼容;

2、8K位元組在系統可程式Flash存儲器;

3、1000次擦寫周期;

4、全靜態操作:0Hz-33MHz;

5、三級加密程式存儲器;

6、32個可程式I/O口線;

7、三個16位定時器/計數器;

8、6箇中斷源;

9、全雙工UART串列通道;

10、低功耗空閒和掉電模式;

11、掉電後中斷可喚醒;

12、看門狗定時器;

13、雙數據指針;

14、掉電標識符。

引腳說明

AT89S52-24PU AT89S52-24PU
AT89S52引腳圖 DIP封裝 AT89S52引腳圖 DIP封裝

AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統可程式Flash存儲器。使用Atmel 公司高密度非易失性存儲器技術製造,與工業80C51 產品指令和引腳完全兼容。片上Flash允許程式存儲器在系統可程式,亦適於常規編程器。在單晶片上,擁有靈巧的8 位CPU 和在系統可程式Flash,使得AT89S52為眾多嵌入式控制套用系統提供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k位元組Flash,256位元組RAM, 32 位I/O 口線,看門狗定時器,2 個數據指針,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串列口。另外,AT89S52 可降至0Hz 靜態邏 輯操作,支持2種軟體可選擇節電模式。空閒模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工 作。掉電保護方式下,RAM內容被保存,振盪器被凍結,單片機一切工作停止,直到下一個中斷或硬體復位為止。

P0 口

P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏 輯電平。對P0連線埠寫“1”時,引腳用作高阻抗輸入。 當訪問外部程式和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下, P0不具有內部上拉電阻。 在flash編程時,P0口也用來接收指令位元組;在程式校驗時,輸出指令位元組。程式校驗 時,需要外部上拉電阻。

P1 口

P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,p1 輸出緩衝器能驅動4 個 TTL 邏輯電平。

此外,P1.0和P1.1分別作定時器/計數器2的外部計數輸入(P1.0/T2)和定時器/計數器2 的觸發輸入(P1.1/T2EX)。 在flash編程和校驗時,P1口接收低8位地址位元組。

引腳號第二功能:

P1.0 T2(定時器/計數器T2的外部計數輸入),時鐘輸出

P1.1 T2EX(定時器/計數器T2的捕捉/重載觸發信號和方向控制)

P1.5 MOSI(在系統編程用)

P1.6 MISO(在系統編程用)

P1.7 SCK(在系統編程用)

P2 口

AT89S52引腳圖 PLCC封裝 AT89S52引腳圖 PLCC封裝

P2 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩衝器能驅動4 個 TTL 邏輯電平。對P2 連線埠寫“1”時,內部上拉電阻把連線埠拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(IIL)。 在訪問外部程式存儲器或用16位地址讀取外部數據存儲器(例如執行MOVX @DPTR) 時,P2 口送出高八位地址。在這種套用中,P2 口使用很強的內部上拉傳送1。在使用 8位地址(如MOVX @RI)訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。 在flash編程和校驗時,P2口也接收高8位地址位元組和一些控制信號。

P3 口

P3 口是一個具有內部上拉電阻的8 位雙向I/O 口,p3 輸出緩衝器能驅動4 個 TTL 邏輯電平。 P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 在flash編程和校驗時,P3口也接收一些控制信號。

連線埠引腳第二功能:

P3.0 RXD(串列輸入口)

P3.1 TXD(串列輸出口)

P3.2 INTO(外中斷0)

P3.3 INT1(外中斷1)

P3.4 TO(定時/計數器0)

P3.5 T1(定時/計數器1)

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

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

此外,P3口還接收一些用於FLASH快閃記憶體編程和程式校驗的控制信號。

RST

復位輸入。當振盪器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。

ALE/PROG

當訪問外部程式存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈衝用於鎖存地址的低8位位元組。一般情況下,ALE仍以時鐘振盪頻率的1/6輸出固定的脈衝信號,因此它可對外輸出時鐘或用於定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈衝。對FLASH存儲器編程期間,該引腳還用於輸入編程脈衝(PROG)。如有必要,可通過對特殊功能暫存器(SFR)區中的8EH單元的D0位置位,可禁止ALE操作。該位置位後,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執行外部程式時,應設定ALE禁止位無效。

PSEN

程式儲存允許(PSEN)輸出是外部程式存儲器的讀選通信號,當AT89S52由外部程式存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈衝,在此期間,當訪問外部數據存儲器,將跳過兩次PSEN信號。

EA/VPP

外部訪問允許,欲使CPU僅訪問外部程式存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態。如EA端為高電平(接Vcc端),CPU則執行內部程式存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。

暫存器

AT89S52 特殊暫存器映象及復位值 AT89S52 特殊暫存器映象及復位值

並不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將得到一個隨機數據;寫入的數據將會無效。

用戶不應該給這些未定義的地址寫入數據“1”。由於這些暫存器在將來可能被賦予新的功能,復位後,這些位都為“0”。

定時器2暫存器:暫存器T2CON 和T2MOD 包含定時器2 的控制位和狀態位(如表2和表3所示),暫存器對RCAP2H和RCAP2L是定時器2的捕捉/自動重載暫存器。

中斷暫存器:各中斷允許位在IE暫存器中,六個中斷源的兩個優先權也可在IE中設定。

表2 T2CON:定時器/計數器2控制暫存器

T2CON 地址為0C8H 復位值:0000 0000B位可定址

TF2 EXF2 RLCLK TCLK EXEN2 TR2 C/T2 CP/RL2
7 6 5 4 3 2 1 0
符號 功能
TF2 定時器2 溢出標誌位。必須軟體清“0”。RCLK=1 或TCLK=1 時,TF2不 用置位。
EXF2 定時器2 外部標誌位。EXEN2=1 時,T2EX 上的負跳變而出現捕捉或重載 時,EXF2 會被硬體置位。定時器2 打開,EXF2=1 時,將引導CPU執行定 時器2 中斷程式。EXF2 必須軟體清“0”。在向下/向上計數模式(DCEN=1) 下EXF2不能引起中斷。
RLCLK 串列口接收數據時鐘標誌位。若RCLK=1,串列口將使用定時器2 溢出脈衝 作為串列口工作模式1 和3 的串口接收時鐘;RCLK=0,將使用定時器1計數 溢出作為串口接收時鐘。
TCLK 串列口傳送數據時鐘標誌位。若TCLK=1,串列口將使用定時器2 溢出脈衝作 為串列口工作模式1 和3 的串口傳送時鐘;TCLK=0,將使用定時器1計數溢出 作為串口傳送時鐘。
EXEN2 定時器2外部允許標誌位。當EXEN2=1時,如果定時器2沒有用作串列時鐘, T2EX(P1.1)的負跳變將引起定時器2 捕捉和重載。若EXEN2=0,定時器2 將視T2EX端的信號無效
TR2 開始/停止控制定時器2。TR2=1,定時器2開始工作
C/T2 定時器 2 定時/計數選擇標誌位。C/T2 =0,定時; C/T2 =1,外部事件計 數(下降沿觸發)
CP/RL2 捕捉/重載選擇標誌位。當EXEN2=1時, CP/RL2=1,T2EX出現負脈衝,會引 起捕捉操作;當定時器2溢出或EXEN2=1時T2EX出現負跳變,都會出現自動重載 操作。CP/RL2=0 將引起T2EX 的負脈衝。當RCKL=1或TCKL=1時,此標誌位 無效,定時器2溢出時,強制做自動重載操作。

雙數據指針暫存器 為了更有利於訪問內部和外部數據存儲器,系統提供了兩路16位數據指針暫存器:位於SFR中82H~83H的DP0和位於84H~85。特殊暫存器AUXR1中DPS=0 選擇DP0;DPS=1 選擇DP1。用戶應該在訪問數據指針暫存器前先初始化DPS至合理的值。

表 3a AUXR:輔助暫存器

AUXR 地址:8EH 復位值:XXX00XX0B不可位定址

WDIDLE DISRTO DISALE
7 6 5 4 3 2 1 0

預留擴展用

DISALE ALE使能標誌位

DISALE 操作方式

0 ALE 以1/6晶振頻率輸出信號

1 ALE 只有在執行MOVX 或MOVC指令時激活

DISRTO 復位輸出標誌位

DISRTO

0看門狗(WDT)定時結束,Reset 輸出高電平

1 Reset 只有輸入

WDIDLE 空閒模式下WDT 使能標誌位

WDIDLE

0 空閒模式下,WDT繼續計數

1 空閒模式下,WDT停止計數

掉電標誌位:掉電標誌位(POF)位於特殊暫存器PCON的第四位(PCON.4)。上電期間POF置“1”。POF可以軟體控制使用與否,但不受復位影響。

表 3b AUXR1:輔助暫存器1

AUXR1 地址:A2H 復位值:XXXXXXX0B

不可位定址

DPS
7 6 5 4 3 2 1 0

預留擴展用

DPS 數據指針選擇位

DPS

0 選擇DPTR暫存器DP0L和DP0H

1 選擇DPTR暫存器DP1L和DP1H

存儲器

MCS-51器件有單獨的程式存儲器和數據存儲器。外部程式存儲器和數據存儲器都可以64K定址。

程式存儲器:如果EA引腳接地,程式讀取只從外部存儲器開始。

對於 89S52,如果EA 接VCC,程式讀寫先從內部存儲器(地址為0000H~1FFFH)開始,接著從外部定址,定址地址為:2000H~FFFFH。

數據存儲器:AT89S52 有256 位元組片內數據存儲器。高128 位元組與特殊功能暫存器重疊。也就是說高128位元組與特殊功能暫存器有相同的地址,而物理上是分開的。

當一條指令訪問高於7FH 的地址時,定址方式決定CPU 訪問高128 位元組RAM 還是特殊功能暫存器空間。直接定址方式訪問特殊功能暫存器(SFR)。

例如,下面的直接定址指令訪問0A0H(P2口)存儲單元MOV 0A0H , #data使用間接定址方式訪問高128 位元組RAM。例如,下面的間接定址方式中,R0 內容為0A0H,訪問的是地址0A0H的暫存器,而不是P2口(它的地址也是0A0H)。

MOV @R0 , #data堆疊操作也是間接定址方式。因此,高128位元組數據RAM也可用於堆疊空間。

片上資源

看門狗定時器

WDT是一種需要軟體控制的復位方式。WDT 由13位計數器和特殊功能暫存器中的看門狗定時器復位存儲器(WDTRST)構成。WDT 在默認情況下無法工作;為了激活WDT,用戶必須往WDTRST暫存器(地址:0A6H)中依次寫入01EH 和0E1H。當WDT激活後,晶振工作,WDT在每個機器周期都會增加。WDT計時周期依賴於外部時鐘頻率。除了復位(硬體復位或WDT溢出復位),沒有辦法停止WDT工作。當WDT溢出,它將驅動RSR引腳一個高電平輸出。

WDT的使用為了激活WDT,用戶必須向WDTRST暫存器(地址為0A6H的SFR)依次寫入01EH和0E1H。當WDT激活後,用戶必須向WDTRST寫入01EH和0E1H餵狗來避免WDT溢出。當計數達到8191(1FFFH)時,13 位計數器將會溢出,這將會復位器件。晶振正常工作、WDT激活後,每一個機器周期WDT 都會增加。為了復位WDT,用戶必須向WDTRST 寫入01EH 和0E1H(WDTRST 是唯讀暫存器)。WDT計數器不能讀或寫。

當WDT計數器溢出時,將給RST引腳產生一個復位脈衝輸出,這個復位脈衝持續96個晶振周期(TOSC),其中TOSC=1/FOSC。為了很好地使用WDT,應該在一定時間內周期性寫入那部分代碼,以避免WDT復位。

掉電和空閒方式下的 WDT在掉電模式下,晶振停止工作,這意味這WDT也停止了工作。在這種方式下,用戶不必餵狗。有兩種方式可以離開掉電模式:硬體復位或通過一個激活的外部中斷。通過硬體復位退出掉電模式後,用戶就應該給WDT餵狗,就如同通常AT89S52 復位一樣。

通過中斷退出掉電模式的情形有很大的不同。中斷應持續拉低很長一段時間,使得晶振穩定。當中斷拉高后,執行中斷服務程式。為了防止WDT在中斷保持低電平的時候覆位器件,WDT 直到中斷拉低後才開始工作。這就意味著WDT 應該在中斷服務程式中復位。

為了確保在離開掉電模式最初的幾個狀態WDT不被溢出,最好在進入掉電模式前就復位WDT。

在進入待機模式前,特殊暫存器AUXR的WDIDLE位用來決定WDT是否繼續計數。

默認狀態下,在待機模式下,WDIDLE=0,WDT繼續計數。為了防止WDT在待機模式下復位AT89S52,用戶應該建立一個定時器,定時離開待機模式,餵狗,再重新進入待機模式。

UART

在AT89S52 中,UART 的操作與AT89C51和AT89C52一樣。為了獲得更深入的關於UART 的信息,選擇“Products”,然後選擇“8051-Architech Flash Microcontroller”,再選擇“ProductOverview”即可。

定時器 0 和定時器1

在AT89S52 中,定時器0 和定時器1 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關於UART 的信息,選擇“Products”,然後選擇“8051-Architech Flash Microcontroller”,再選擇“ProductOverview”即可。

定時器 2

定時器2是一個16位定時/計數器,它既可以做定時器,又可以做事件計數器。其工作方式由特殊暫存器T2CON中的C/T2位選擇(如表2所示)。定時器2有三種工作模式:

捕捉方式、自動重載(向下或向上計數)和波特率發生器。如表3 所示,工作模式由T2CON中的相關位選擇。定時器2 有2 個8位暫存器:TH2和TL2。在定時工作方式中,每個機器周期,TL2暫存器都會加1。由於一個機器周期由12 個晶振周期構成,因此,計數頻率就是晶振頻率的1/12。表 3定時器2工作模式

RCLK+TCLK CP/RL2 TR2 MODE
0 0 1 16位自動重載
0 1 1 16位捕捉
1 x 1 波特率發生器
x x 0 (不用)
圖 5 定時器的捕捉模式 圖 5 定時器的捕捉模式

捕捉方式在捕捉模式下,通過T2CON中的EXEN2來選擇兩種方式。如果EXEN2=0,定時器2時一個16位定時/計數器,溢出時,對T2CON 的TF2標誌置位,TF2引起中斷。如果EXEN2=1,定時器2做相同的操作。除上述功能外,外部輸入T2EX引腳(P1.1)1至0的下跳變也會使得TH2和TL2中的值分別捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳變會引起T2CON 中的EXF2 置位。像TF2 一樣,T2EX 也會引起中斷。捕捉模式如圖5所示。在計數工作方式下,暫存器在相關外部輸入角T2 發生1 至0 的下降沿時增加1。在這種方式下,每個機器周期的S5P2期間採樣外部輸入。一個機器周期採樣到高電平,而下一個周期採樣到低電平,計數器將加1。在檢測到跳變的這個周期的S3P1 期間,新的計數值出現在暫存器中。因為識別1-0的跳變需要2個機器周期(24個晶振周期),所以,最大的計數頻率不高於晶振頻率的1/24。為了確保給定的電平在改變前採樣到一次,電平應該至少在一個完整的機器周期內保持不變。

自動重載當定時器2 工作於16 位自動重載模式,可對其編程實現向上計數或向下計數。這一功能可以通過特殊暫存器T2MOD(見表4)中的DCEN(向下計數允許位)來實現。通過復位,DCEN 被置為0,因此,定時器2 默認為向上計數。DCEN 設定後,定時器2就可以取決於T2EX向上、向下計數。

圖 6 定時器2重載模式(DCEN=0) 圖 6 定時器2重載模式(DCEN=0)

如圖6 所示,DCEN=0 時,定時器2 自動計數。通過T2CON 中的EXEN2 位可以選擇兩種方式。如果EXEN2=0,定時器2計數,計到0FFFFH後置位TF2溢出標誌。計數溢出也使得定時器暫存器重新從RCAP2H 和RCAP2L 中載入16 位值。定時器工作於捕捉模式,RCAP2H和RCAP2L的值可以由軟體預設。如果EXEN2=1,計數溢出或在外部T2EX(P1.1)引腳上的1到0的下跳變都會觸發16位重載。這個跳變也置位EXF2中斷標誌位。T2EX 上的一個邏輯0 使得定時器2 向下計數。當TH2 和TL2 分別等於RCAP2H 和RCAP2L中的值的時候,計數器下溢。計數器下溢,置位TF2,並將0FFFFH載入到定時器存儲器中。如圖6所示,置位DCEN,允許定時器2向上或向下計數。在這種模式下,T2EX引腳控制著計數的方向。T2EX上的一個邏輯1使得定時器2向上計數。定時器計到0FFFFH溢出,並置位TF2。定時器的溢出也使得RCAP2H和RCAP2L中的16位值分別載入到定時器存儲器TH2和TL2中。

定時器2上溢或下溢,外部中斷標誌位EXF2 被鎖死。在這種工作模式下,EXF2不能觸發中斷。

表 4 T2MOD-定時器2控制暫存器

T2MOD 地址:0C9H 復位值:XXXXXX00B

不可位定址

T2OE DCEN
7 6 5 4 3 2 1 0
符號 功能
無定義,預留擴展
定時器2輸出允許位
置1後,定時器2可配置成向上/向下計數

中斷源

AT89S52 有6箇中斷源:兩個外部中斷(INT0 和INT1),三個定時中斷(定時器0、1、2)和一個串列中斷。這些中斷如圖10所示每箇中斷源都可以通過置位或清除特殊暫存器IE 中的相關中斷允許控制位分別使得中斷源有效或無效。IE還包括一個中斷允許總控制位EA,它能一次禁止所有中斷。

如表5所示,IE.6位是不可用的。對於AT89S52,IE.5位也是不能用的。用戶軟體不應給這些位寫1。它們為AT89系列新產品預留。

定時器2可以被暫存器T2CON中的TF2和EXF2的或邏輯觸發。程式進入中斷服務後,這些標誌位都可以由硬體清0。實際上,中斷服務程式必須判定是否是TF2 或EXF2激活中斷,標誌位也必須由軟體清0。

定時器0和定時器1標誌位TF0 和TF1在計數溢出的那個周期的S5P2被置位。它們的值一直到下一個周期被電路捕捉下來。然而,定時器2 的標誌位TF2 在計數溢出的那個周期的S2P2被置位,在同一個周期被電路捕捉下來。

表 4 中斷允許控制暫存器(IE)

(MSB) (LSB)

EA ET2 ES ET1 EX1 ET0 EX0

中斷允許控制位=1,允許中斷

中斷允許控制位=0,禁止中斷

符號 位地址 功能
EA IE.7 中斷總允許控制位。EA=0,中斷總禁止;EA=1,各中斷 由各自的控制位設定
IE.6 預留
ET2 IE.5 定時器2中斷允許控制位
ES IE.4 串列口中斷允許控制位
ET1 IE.3 定時器1中斷允許控制位
EX1 IE.2 外部中斷1允許控制位
ET0 IE.1 定時器0中斷允許控制位
EX0 IE.0 外部中斷0允許控制位

相關詞條

相關搜尋

熱門詞條

聯絡我們