㈠ 51系列單片機介面是TTL還是232電平還是別的什麼
51系列單片機介面是TTL電平,其中 就有 串口 如 Tx Rx 等
電腦自帶 串口 是 標准 rs232電平
51系列單片機 串口 一般要用 max232電平轉換後才能與電腦自帶 串口 相連
請看 武漢鴻偉光電
E232TTL RS232/TTL電平無源轉換器
㈡ 學習單片機之前需要預備哪些知識
(1)數字電路中只有兩種電平:高和低,定義單片機為TTL電平:高 +5V 低 0V;
(2)RS232電平:計算機的串口高 -12V 低+12V,所以計算機與單片機之間通訊時需要加電平轉換晶元;
(3)進制轉換與邏輯、算術運算;
(4)C語言基礎;
(5)80C51了解80C51是MCS-51系列中的一個典型品種;其它廠商以8051為基核開發出的 CMOS工藝單片機產品統稱為80C51系列;
(6)匯流排(BUS)是計算機各部件之間傳送信息的公共通道。微機中有內部匯流排和 外部匯流排兩類。內部匯流排是CPU內部之間的連線。外部匯流排是指CPU與其它部件之間 的連線。 外部匯流排有三種: 數據匯流排DB(Data Bus), 地址匯流排 AB(Address Bus) 和控制匯流排 CBControl Bus);
(7)CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM:用以存放程序、一些原始數據和表格;
I/O口:四個8位並行I/O口,既可用作輸入,也可用作輸出;
T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工UART(通用非同步接收發送器)的串列I/O口,用於實現單片機之間或單片機與微機之間的串列通信;
片內振盪器和時鍾產生電路,石英晶體和微調電容需要外接。最高振盪頻率取決於單片機型號及性能。
(8)C51數據存儲類型例:
數據類型 變數名
char var1;
bit flags;
unsigned char vextor[10];
int wwww;
注意:變數名不能用C語言中的關鍵字表示。
(9)包含的頭文件(可以在安裝目錄下INC目錄下查看)
通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h
常用有:reg51.h reg52.h(定義特殊功能寄存器和位寄存器);math.h (定義常用數學運算);
(10)中斷服務程序的格式
函數名()interrupt n using m
{
函數內部實現 ….
}
(11)I/O口定義:sbit beep=P2^3;
(12)單片機的基本時序:機器周期和指令周期
①振盪周期: 也稱時鍾周期, 是指為單片機提供時鍾脈沖信號的振盪源的 周期,TX實驗板上為11.0592MHZ;
②狀態周期: 每個狀態周期為時鍾周期的 2 倍, 是振盪周期經二分頻後 得到的;
③機器周期: 一個機器周期包含 6 個狀態周期S1~S6, 也就是 12 個時 鍾周期。 在一個機器周期內, CPU可以完成一個獨立的操作;
④指令周期: 它是指CPU完成一條操作所需的全部時間。 每條指令執行時間都是有一個或幾個機器周期組成。MCS - 51 系統中, 有單周期指令、雙周期指令和四周期指令;
㈢ 單片機埠都是TTL電平嗎
1、大多數單片機都是 TTL 電平,各自的高低電平定義不一樣;
2、當電源電壓為5V時:51,avr單片機高電平是5V;
3、當電源電壓為3.3V時:51,avr單片機高電平是3.3v;
4、arm 如lpc2138,電源電壓只能為3.3v,io輸出高電平為3.3V;但io口可承受5V電壓
5、不知你還有什麼不清楚的?
㈣ 單片機晶元中有哪些結構和功能部件
以8051內核為例,其它種類大致相同
AT89S52
主要性能
l 與MCS-51單片機產品兼容
l 8K位元組在系統可編程Flash存儲器
l 1000次擦寫周期
l 全靜態操作:0Hz~33Hz
l 三級加密程序存儲器
l 32個可編程I/O口線
l 三個16位定時器/計數器
l 八個中斷源
l 全雙工UART串列通道
l 低功耗空閑和掉電模式
l 掉電後中斷可喚醒
l 看門狗定時器
l 雙數據指針
l 掉電標識符
功能特性描述
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內容被保存,振盪器被凍結,
單片機一切工作停止,直到下一個中斷或硬體復位為止。
R
8 位微控制器
8K 位元組在系統可編程
Flash
AT89S52
Rev. 1919-07/01
AT89S52
2
引腳結構
AT89S52
3
方框圖
引腳功能描述
AT89S52
4
VCC : 電源
GND: 地
P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏
輯電平。對P0埠寫「1」時,引腳用作高阻抗輸入。
當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,
P0具有內部上拉電阻。
在flash編程時,P0口也用來接收指令位元組;在程序校驗時,輸出指令位元組。程序校驗
時,需要外部上拉電阻。
P1 口:P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅動4 個
TTL 邏輯電平。對P1 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(IIL)。
此外,P1.0和P1.2分別作定時器/計數器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 口: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 口,p2 輸出緩沖器能驅動4 個
TTL 邏輯電平。對P3 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入
口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(IIL)。
P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。
在flash編程和校驗時,P3口也接收一些控制信號。
AT89S52
5
引腳號第二功能
P3.0 RXD(串列輸入)
P3.1 TXD(串列輸出)
P3.2 INT0(外部中斷0)
P3.3 INT0(外部中斷0)
P3.4 T0(定時器0外部輸入)
P3.5 T1(定時器1外部輸入)
P3.6 WR(外部數據存儲器寫選通)
P3.7 RD(外部數據存儲器寫選通)
RST: 復位輸入。晶振工作時,RST腳持續2 個機器周期高電平將使單片機復位。看門
狗計時完成後,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上
的DISRTO位可以使此功能無效。DISRTO默認狀態下,復位高電平有效。
ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址
的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。
在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或
時鍾使用。然而,特別強調,在每次訪問外部數據存儲器時,ALE脈沖將會跳過。
如果需要,通過將地址為8EH的SFR的第0位置「1」,ALE操作將無效。這一位置「1」,
ALE 僅在執行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使
能標志位(地址為8EH的SFR的第0位)的設置對微控制器處於外部執行模式下無效。
PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。
當AT89S52從外部程序存儲器執行外部代碼時,PSEN在每個機器周期被激活兩次,而
在訪問外部數據存儲器時,PSEN將不被激活。
EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器
讀取指令,EA必須接GND。
為了執行內部程序指令,EA應該接VCC。
在flash編程期間,EA也接收12伏VPP電壓。
XTAL1:振盪器反相放大器和內部時鍾發生電路的輸入端。
XTAL2:振盪器反相放大器的輸出端。
AT89S52
6
表1 AT89S52 特殊寄存器映象及復位值
特殊功能寄存器
特殊功能寄存器(SFR)的地址空間映象如表1所示。
並不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將
得到一個隨機數據;寫入的數據將會無效。
用戶不應該給這些未定義的地址寫入數據「1」。由於這些寄存器在將來可能被賦予新的
功能,復位後,這些位都為「0」。
定時器2 寄存器:寄存器T2CON 和T2MOD 包含定時器2 的控制位和狀態位(如表2
和表3所示),寄存器對RCAP2H和RCAP2L是定時器2的捕捉/自動重載寄存器。
中斷寄存器:各中斷允許位在IE寄存器中,六個中斷源的兩個優先順序也可在IE中設置。
AT89S52
7
表2 T2CON:定時器/計數器2控制寄存器
T2CON 地址為0C8H 復位值:0000 0000B
位可定址
TF2 EXF2 RLCLK TCLK EXEN2 TR2
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不能引起中斷。
RCLK
串列口接收數據時鍾標志位。若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開始工作
定時器2 定時/計數選擇標志位。=0,定時; =1,外部事
件計數(下降沿觸發)
捕捉/重載選擇標志位。當EXEN2=1時, =1,T2EX出現負脈沖,
會引起捕捉操作;當定時器2溢出或EXEN2=1時T2EX出現負跳變,都
會出現自動重載操作。=0 將引起T2EX 的負脈沖。當RCKL=1
或TCKL=1時,此標志位無效,定時器2溢出時,強製做自動重載操作。
雙數據指針寄存器:為了更有利於訪問內部和外部數據存儲器,系統提供了兩路16位
數據指針寄存器:位於SFR中82H~83H的DP0和位於84H~85。特殊寄存器AUXR1
中DPS=0 選擇DP0;DPS=1 選擇DP1。用戶應該在訪問數據指針寄存器前先初始化
AT89S52
8
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
AT89S52
9
存儲器結構
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)依次寫入0E1H
和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 復位一樣。
通過中斷退出掉電模式的情形有很大的不同。中斷應持續拉低很長一段時間,使得晶振
AT89S52
10
穩定。當中斷拉高後,執行中斷服務程序。為了防止WDT在中斷保持低電平的時候復
位器件,WDT 直到中斷拉低後才開始工作。這就意味著WDT 應該在中斷服務程序中
復位。
為了確保在離開掉電模式最初的幾個狀態WDT不被溢出,最好在進入掉電模式前就復
位WDT。
在進入待機模式前,特殊寄存器AUXR的WDIDLE位用來決定WDT是否繼續計數。
默認狀態下,在待機模式下,WDIDLE=0,WDT繼續計數。為了防止WDT在待機模
式下復位AT89S52,用戶應該建立一個定時器,定時離開待機模式,喂狗,再重新進
入待機模式。
UART
在AT89S52 中,UART 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關於
UART 的信息,可參考ATMEL 網站(http://www.atmel.com)。從這個主頁,選擇
「Procts」,然後選擇「8051-Architech Flash Microcontroller」,再選擇「Proct
Overview」即可。
定時器0 和定時器1
在AT89S52 中,定時器0 和定時器1 的操作與AT89C51 和AT89C52 一樣。為了獲得
更深入的關於UART 的信息,可參考ATMEL 網站(http://www.atmel.com)。從這個主
頁,選擇「Procts」,然後選擇「8051-Architech Flash Microcontroller」,再選擇「Proct
Overview」即可。
定時器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 × 1 波特率發生器
× × 0 (不用)
在計數工作方式下,寄存器在相關外部輸入角T2 發生1 至0 的下降沿時增加1。在這
AT89S52
11
種方式下,每個機器周期的S5P2期間采樣外部輸入。一個機器周期采樣到高電平,而
下一個周期采樣到低電平,計數器將加1。在檢測到跳變的這個周期的S3P1 期間,新
的計數值出現在寄存器中。因為識別1-0的跳變需要2個機器周期(24個晶振周期),
所以,最大的計數頻率不高於晶振頻率的1/24。為了確保給定的電平在改變前采樣到
一次,電平應該至少在一個完整的機器周期內保持不變。
捕捉方式
在捕捉模式下,通過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所示。
圖5 定時器的捕捉模式
自動重載
當定時器2 工作於16 位自動重載模式,可對其編程實現向上計數或向下計數。這一功
能可以通過特殊寄存器T2MOD(見表4)中的DCEN(向下計數允許位)來實現。通
過復位,DCEN 被置為0,因此,定時器2 默認為向上計數。DCEN 設置後,定時器2
就可以取決於T2EX向上、向下計數。
如圖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
中斷標志位。
如圖6所示,置位DCEN,允許定時器2向上或向下計數。在這種模式下,T2EX引腳
控制著計數的方向。T2EX上的一個邏輯1使得定時器2向上計數。定時器計到0FFFFH
AT89S52
12
溢出,並置位TF2。定時器的溢出也使得RCAP2H和RCAP2L中的16位值分別載入到
定時器存儲器TH2和TL2中。
T2EX 上的一個邏輯0 使得定時器2 向下計數。當TH2 和TL2 分別等於RCAP2H 和
RCAP2L中的值的時候,計數器下溢。計數器下溢,置位TF2,並將0FFFFH載入到定
時器存儲器中。
定時器2上溢或下溢,外部中斷標志位EXF2 被鎖死。在這種工作模式下,EXF2不能
觸發中斷。
圖6 定時器2重載模式(DCEN=0)
表4 T2MOD-定時器2控制寄存器
T2MOD 地址:0C9H 復位值:XXXXXX00B
不可位定址
- - - - - - T2OE DCEN
7 6 5 4 3 2 1 0
符號功能
- 無定義,預留擴展
T2OE 定時器2輸出允許位
DCEN 置1後,定時器2可配置成向上/向下計數
AT89S52
13
圖7 定時器2自動重載(DCEN=1)
圖8 定時器2 波特率發生器模式
AT89S52
14
波特率發生器
通過設置T2CON(見表2)中的TCLK或RCLK可選擇定時器2 作為波特率發生器。
如果定時器2作為發送或接收波特率發生器,定時器1可用作它用,發送和接收的波特
率可以不同。如圖8 所示,設置RCLK 和(或)TCLK 可以使定時器2 工作於波特率
產生模式。
波特率產生工作模式與自動重載模式相似,因此,TH2 的翻轉使得定時器2 寄存器重
載被軟體預置16位值的RCAP2H和RCAP2L中的值。
模式1和模式3的波特率由定時器2溢出速率決定,具體如下公式:
模式1和模式3波特率=
16
2溢出率定時器
定時器可設置成定時器,也可為計數器。在多數應用情況下,一般配置成定時方式
(CP/T2=0)。定時器2 用於定時器操作與波特率發生器有所不同,它在每一機器周期
(1/12晶振周期)都會增加;然而,作為波特率發生器,它在每一機器狀態(1/2晶振
周期)都會增加。波特率計算公式如下:
模式1和模式3的波特率=
)] 2 , 2 ( 65536 [ 32 L RCAP H RCAP - ´
晶振頻率*原文少半個括弧「(」
其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L組成的16位無符號整數。
定時器2 作為波特率發生器,如圖8 所示。圖中僅僅在T2CON 中RCLK 或TCLK=1
才有效。特別強調,TH2的翻轉並不置位TF2,也不產生中斷; EXEN2置位後,T2EX
引腳上1~0的下跳變不會使(RCAP2H,RCAP2L)重載到(TH2,TL2)中。因此,
定時器2作為波特率發生器,T2EX也還可以作為一個額外的外部中斷。
定時器2處於波特率產生模式,TR2=1,定時器2正常工作。TH2或TL2不應該讀寫。
在這種模式下,定時器在每一狀態都會增加,讀或寫就不會准確。寄存器RCAP2可以
讀,但不能寫,因為寫可能和重載交迭,造成寫和重載錯誤。在讀寫定時器2 或RCAP2
寄存器時,應該關閉定時器(TR2清0)。
可編程時鍾輸出
如圖9 所示,可以通過編程在P1.0 引腳輸出一個占空比為50%的時鍾信號。這個引腳
除了常規的I/O 角外,還有兩種可選擇功能。它可以通過編程作為定時器/計數器2 的
外部時鍾輸入或占空比為50%的時鍾輸出。當工作頻率為16MHZ時,時鍾輸出頻率范
圍為61HZ到4HZ。
為了把定時器2配置成時鍾發生器,位C/T2(T2CON.1)必須清0,位T2OE(T2MOD.1)
必須置1。位TR2(T2CON.2)啟動、停止定時器。時鍾輸出頻率取決於晶振頻率和定
時器2捕捉寄存器(RCAP2H,RCAP2L)的重載值,如公式所示:
時鍾輸出頻率=
] 2 , 2 65536 [ 4 ) -(
晶振頻率
L RCAP H RCAP ´
在時鍾輸出模式下,定時器2不會產生中斷,這和定時器2用作波特率發生器一樣。定
AT89S52
15
時器2也可以同時用作波特率發生器和時鍾產生。不過,波特率和輸出時鍾頻率相互並
不獨立,它們都依賴於RCAP2H和RCAP2L。
圖9 定時器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被置位,在同一個周期被電路捕捉下來。
AT89S52
16
表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 外部中斷1允許控制位
圖10 中斷源
AT89S52
17
晶振特性
如圖10 所示,AT89S52 單片機有一個用於構成內部振盪器的反相放大器,XTAL1 和
XTAL2 分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構成自
激振盪器。從外部時鍾源驅動器件的話,XTAL2 可以不接,而從XTAL1 接入,如圖
12 所示。由於外部時鍾信號經過二分頻觸發後作為外部時鍾電路輸入的,所以對外部
時鍾信號的占空比沒有其它要求,最長低電平持續時間和最少高電平持續時間等還是要
符合要求的。
圖11 內部振盪電路連接圖圖12 外部振盪電路連接圖
石英晶振C1,C2=30PF±10PF
陶瓷諧振器C1,C2=40PF±10PF
空閑模式
在空閑工作模式下,CPU 處於睡眠狀態,而所有片上外部設備保持激活狀態。這種狀
態可以通過軟體產生。在這種狀態下,片上RAM和特殊功能寄存器的內容保持不變。
空閑模式可以被任一個中斷或硬體復位終止。
由硬體復位終止空閑模式只需兩個機器周期有效復位信號,在這種情況下,片上硬體禁
止訪問內部RAM,而可以訪問埠引腳。空閑模式被硬體復位終止後,為了防止預想
不到的寫埠,激活空閑模式的那一條指令的下一條指令不應該是寫埠或外部存儲
器。
掉電模式
在掉電模式下,晶振停止工作,激活掉電模式的指令是最後一條執行指令。片上RAM
AT89S52
18
和特殊功能寄存器保持原值,直到掉電模式終止。掉電模式可以通過硬體復位和外部中
斷退出。復位重新定義了SFR 的值,但不改變片上RAM 的值。在VCC未恢復到正常
工作電壓時,硬體復位不能無效,並且應保持足夠長的時間以使晶振重新工作和初始化。
表6 空閑模式和掉電模式下的外部引腳狀態
模式程序存儲器ALE PSEN PORT0 PORT1 PORT2 PORT3
空閑內部1 1 數據數據數據數據
空閑外部1 1 浮空數據地址數據
掉電內部0 0 數據數據數據數據
掉電外部0 0 浮空數據數據數據
程序存儲器的加密位
AT89S52有三個加密位不可編程(U)和可編程獲得下表所示的功能。
表7 加密位保護模式
加密位1(LB1)編程後,EA 引腳的邏輯值被采樣,並在復位期間鎖存。如果器件復
位,而沒有復位,將鎖存一個隨機值,直到復位為止。為了器件功能正常,鎖存到的
EA值必須和這個引腳的當前邏輯電平一致。
Flash編程―並行模式
AT89S52 帶有用作編程的片上Flash 存儲器陣列。編程介面需要一個高電壓(12V)編
程使能信號,並且兼容常規的第三方*(原文:third-party,不知道對不對)Flash或EPROM
編程器。
AT89S52程序存儲陣列採用位元組式編程。
編程方法
對AT89S52編程之前,需根據Flash編程模式表和圖13、圖14對地址、數據和控制信
號設置。可採用下列步驟對AT89S52編程:
AT89S52
19
1.在地址線上輸入編程單元地址信號
2.在數據線上輸入正確的數據
3.激活相應的控制信號
4.把EA/Vpp升至12V
5.每給Flash寫入一個位元組或程序加密位時,都要給ALE/PROG一次脈沖。位元組寫周
期時自身定製的,典型值僅僅50us。改變地址、數據重復第1步到第5步,知道全
部文件結束。