AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。
AT89S52主要性能
1、與MCS-51單片機(jī)產(chǎn)品兼容;
2、8K字節(jié)在系統(tǒng)可編程Flash存儲器;
3、1000次擦寫周期;
4、全靜態(tài)操作:0Hz-33MHz;
5、三級加密程序存儲器;
6、32個(gè)可編程I/O口線;
7、三個(gè)16位定時(shí)器/計(jì)數(shù)器;
8、6個(gè)中斷源;
9、全雙工UART串行通道;
10、低功耗空閑和掉電模式;
11、掉電后中斷可喚醒;
12、看門狗定時(shí)器;
13、雙數(shù)據(jù)指針;
14、掉電標(biāo)識符。
AT89S52引腳說明
AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編
AT89S52-24PU 程Flash存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)
AT89S52引腳圖 DIP封裝 器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。
P0 口
P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個(gè)TTL邏 輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。 當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下, P0不具有內(nèi)部上拉電阻。 在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn) 時(shí),需要外部上拉電阻。
P1 口
P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個(gè) TTL 邏輯電平。
此外,P1.0和P1.1分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入(P1.1/T2EX)。 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。
引腳號第二功能:
P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出
P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)
P1.5 MOSI(在系統(tǒng)編程用)
P1.6 MISO(在系統(tǒng)編程用)
P1.7 SCK(在系統(tǒng)編程用)
P2 口
P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動
AT89S52引腳圖 PLCC封裝 4 個(gè) TTL 邏輯電平。對P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR) 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時(shí),P2口輸出P2鎖存器的內(nèi)容。 在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號。
P3 口
P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個(gè) TTL 邏輯電平。 P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號。
端口引腳第二功能:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 INTO(外中斷0)
P3.3 INT1(外中斷1)
P3.4 TO(定時(shí)/計(jì)數(shù)器0)
P3.5 T1(定時(shí)/計(jì)數(shù)器1)
P3.6 WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 RD(外部數(shù)據(jù)存儲器讀選通)
此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號。
RST
復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。
ALE/PROG
當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí)將跳過一個(gè)ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。
PSEN
程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。
EA/VPP
外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。FLASH存儲器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。
AT89S52寄存器
并不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將得到一
AT89S52 特殊寄存器映象及復(fù)位值 個(gè)隨機(jī)數(shù)據(jù);寫入的數(shù)據(jù)將會無效。
用戶不應(yīng)該給這些未定義的地址寫入數(shù)據(jù)“1”。由于這些寄存器在將來可能被賦予新的功能,復(fù)位后,這些位都為“0”。
定時(shí)器2寄存器:寄存器T2CON 和T2MOD 包含定時(shí)器2 的控制位和狀態(tài)位(如表2和表3所示),寄存器對RCAP2H和RCAP2L是定時(shí)器2的捕捉/自動重載寄存器。
中斷寄存器:各中斷允許位在IE寄存器中,六個(gè)中斷源的兩個(gè)優(yōu)先級也可在IE中設(shè)置。
表2 T2CON:定時(shí)器/計(jì)數(shù)器2控制寄存器
T2CON 地址為0C8H 復(fù)位值:0000 0000B位可尋址
TF2 | EXF2 | RLCLK | TCLK | EXEN2 | TR2 | C/T2 | CP/RL2 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
符號 | 功能 |
TF2 | 定時(shí)器2 溢出標(biāo)志位。必須軟件清“0”。RCLK=1 或TCLK=1 時(shí),TF2不 用置位。 |
EXF2 | 定時(shí)器2 外部標(biāo)志位。EXEN2=1 時(shí),T2EX 上的負(fù)跳變而出現(xiàn)捕捉或重載 時(shí),EXF2 會被硬件置位。定時(shí)器2 打開,EXF2=1 時(shí),將引導(dǎo)CPU執(zhí)行定 時(shí)器2 中斷程序。EXF2 必須軟件清“0”。在向下/向上計(jì)數(shù)模式(DCEN=1) 下EXF2不能引起中斷。 |
RLCLK | 串行口接收數(shù)據(jù)時(shí)鐘標(biāo)志位。若RCLK=1,串行口將使用定時(shí)器2 溢出脈沖 作為串行口工作模式1 和3 的串口接收時(shí)鐘;RCLK=0,將使用定時(shí)器1計(jì)數(shù) 溢出作為串口接收時(shí)鐘。 |
TCLK | 串行口發(fā)送數(shù)據(jù)時(shí)鐘標(biāo)志位。若TCLK=1,串行口將使用定時(shí)器2 溢出脈沖作 為串行口工作模式1 和3 的串口發(fā)送時(shí)鐘;TCLK=0,將使用定時(shí)器1計(jì)數(shù)溢出 作為串口發(fā)送時(shí)鐘。 |
EXEN2 | 定時(shí)器2外部允許標(biāo)志位。當(dāng)EXEN2=1時(shí),如果定時(shí)器2沒有用作串行時(shí)鐘, T2EX(P1.1)的負(fù)跳變將引起定時(shí)器2 捕捉和重載。若EXEN2=0,定時(shí)器2 將視T2EX端的信號無效 |
TR2 | 開始/停止控制定時(shí)器2。TR2=1,定時(shí)器2開始工作 |
C/T2 | 定時(shí)器 2 定時(shí)/計(jì)數(shù)選擇標(biāo)志位。C/T2 =0,定時(shí); C/T2 =1,外部事件計(jì) 數(shù)(下降沿觸發(fā)) |
CP/RL2 | 捕捉/重載選擇標(biāo)志位。當(dāng)EXEN2=1時(shí), CP/RL2=1,T2EX出現(xiàn)負(fù)脈沖,會引 起捕捉操作;當(dāng)定時(shí)器2溢出或EXEN2=1時(shí)T2EX出現(xiàn)負(fù)跳變,都會出現(xiàn)自動重載 操作。CP/RL2=0 將引起T2EX 的負(fù)脈沖。當(dāng)RCKL=1或TCKL=1時(shí),此標(biāo)志位 無效,定時(shí)器2溢出時(shí),強(qiáng)制做自動重載操作。 |
雙數(shù)據(jù)指針寄存器:為了更有利于訪問內(nèi)部和外部數(shù)據(jù)存儲器,系統(tǒng)提供了兩路16位數(shù)據(jù)指針寄存器:位于SFR中82H~83H的DP0和位于84H~85。特殊寄存器AUXR1中DPS=0 選擇DP0;DPS=1 選擇DP1。用戶應(yīng)該在訪問數(shù)據(jù)指針寄存器前先初始化DPS至合理的值。
表 3a AUXR:輔助寄存器
AUXR 地址:8EH 復(fù)位值:XXX00XX0B不可位尋址
WDIDLE | DISRTO | DISALE | |||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
預(yù)留擴(kuò)展用
DISALE ALE使能標(biāo)志位
DISALE 操作方式
0 ALE 以1/6晶振頻率輸出信號
1 ALE 只有在執(zhí)行MOVX 或MOVC指令時(shí)激活
DISRTO 復(fù)位輸出標(biāo)志位
DISRTO
0看門狗(WDT)定時(shí)結(jié)束,Reset 輸出高電平
1 Reset 只有輸入
WDIDLE 空閑模式下WDT 使能標(biāo)志位
WDIDLE
0 空閑模式下,WDT繼續(xù)計(jì)數(shù)
1 空閑模式下,WDT停止計(jì)數(shù)
掉電標(biāo)志位:掉電標(biāo)志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上電期間POF置“1”。POF可以軟件控制使用與否,但不受復(fù)位影響。
表 3b AUXR1:輔助寄存器1
AUXR1 地址:A2H 復(fù)位值:XXXXXXX0B
不可位尋址
DPS | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
預(yù)留擴(kuò)展用
DPS 數(shù)據(jù)指針選擇位
DPS
0 選擇DPTR寄存器DP0L和DP0H
1 選擇DPTR寄存器DP1L和DP1H
AT89S52存儲器
MCS-51器件有單獨(dú)的程序存儲器和數(shù)據(jù)存儲器。外部程序存儲器和數(shù)據(jù)存儲器都可以64K尋址。
程序存儲器:如果EA引腳接地,程序讀取只從外部存儲器開始。
對于 89S52,如果EA 接VCC,程序讀寫先從內(nèi)部存儲器(地址為0000H~1FFFH)開始,接著從外部尋址,尋址地址為:2000H~FFFFH。
數(shù)據(jù)存儲器:AT89S52 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲器。高128 字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。
當(dāng)一條指令訪問高于7FH 的地址時(shí),尋址方式?jīng)Q定CPU 訪問高128 字節(jié)RAM 還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。
例如,下面的直接尋址指令訪問0A0H(P2口)存儲單元MOV 0A0H , #data使用間接尋址方式訪問高128 字節(jié)RAM。例如,下面的間接尋址方式中,R0 內(nèi)容為0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOV @R0 , #data堆棧操作也是間接尋址方式。因此,高128字節(jié)數(shù)據(jù)RAM也可用于堆??臻g。
片上資源
看門狗定時(shí)器
WDT是一種需要軟件控制的復(fù)位方式。WDT 由13位計(jì)數(shù)器和特殊功能寄存器中的看門狗定時(shí)器復(fù)位存儲器(WDTRST)構(gòu)成。WDT 在默認(rèn)情況下無法工作;為了激活WDT,用戶必須往WDTRST寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當(dāng)WDT激活后,晶振工作,WDT在每個(gè)機(jī)器周期都會增加。WDT計(jì)時(shí)周期依賴于外部時(shí)鐘頻率。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。當(dāng)WDT溢出,它將驅(qū)動RSR引腳一個(gè)高電平輸出。
WDT的使用為了激活WDT,用戶必須向WDTRST寄存器(地址為0A6H的SFR)依次寫入01EH和0E1H。當(dāng)WDT激活后,用戶必須向WDTRST寫入01EH和0E1H喂狗來避免WDT溢出。當(dāng)計(jì)數(shù)達(dá)到8191(1FFFH)時(shí),13 位計(jì)數(shù)器將會溢出,這將會復(fù)位器件。晶振正常工作、WDT激活后,每一個(gè)機(jī)器周期WDT 都會增加。為了復(fù)位WDT,用戶必須向WDTRST 寫入01EH 和0E1H(WDTRST 是只讀寄存器)。WDT計(jì)數(shù)器不能讀或?qū)憽?/span>
當(dāng)WDT計(jì)數(shù)器溢出時(shí),將給RST引腳產(chǎn)生一個(gè)復(fù)位脈沖輸出,這個(gè)復(fù)位脈沖持續(xù)96個(gè)晶振周期(TOSC),其中TOSC=1/FOSC。為了很好地使用WDT,應(yīng)該在一定時(shí)間內(nèi)周期性寫入那部分代碼,以避免WDT復(fù)位。
掉電和空閑方式下的 WDT在掉電模式下,晶振停止工作,這意味這WDT也停止了工作。在這種方式下,用戶不必喂狗。有兩種方式可以離開掉電模式:硬件復(fù)位或通過一個(gè)激活的外部中斷。通過硬件復(fù)位退出掉電模式后,用戶就應(yīng)該給WDT喂狗,就如同通常AT89S52 復(fù)位一樣。
通過中斷退出掉電模式的情形有很大的不同。中斷應(yīng)持續(xù)拉低很長一段時(shí)間,使得晶振穩(wěn)定。當(dāng)中斷拉高后,執(zhí)行中斷服務(wù)程序。為了防止WDT在中斷保持低電平的時(shí)候復(fù)位器件,WDT 直到中斷拉低后才開始工作。這就意味著WDT 應(yīng)該在中斷服務(wù)程序中復(fù)位。
為了確保在離開掉電模式最初的幾個(gè)狀態(tài)WDT不被溢出,最好在進(jìn)入掉電模式前就復(fù)位WDT。
在進(jìn)入待機(jī)模式前,特殊寄存器AUXR的WDIDLE位用來決定WDT是否繼續(xù)計(jì)數(shù)。
默認(rèn)狀態(tài)下,在待機(jī)模式下,WDIDLE=0,WDT繼續(xù)計(jì)數(shù)。為了防止WDT在待機(jī)模式下復(fù)位AT89S52,用戶應(yīng)該建立一個(gè)定時(shí)器,定時(shí)離開待機(jī)模式,喂狗,再重新進(jìn)入待機(jī)模式。
UART
在AT89S52 中,UART 的操作與AT89C51和AT89C52一樣。為了獲得更深入的關(guān)于UART 的信息,選擇“Products”,然后選擇“8051-Architech Flash Microcontroller”,再選擇“ProductOverview”即可。
定時(shí)器 0 和定時(shí)器1
在AT89S52 中,定時(shí)器0 和定時(shí)器1 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關(guān)于UART 的信息,選擇“Products”,然后選擇“8051-Architech Flash Microcontroller”,再選擇“ProductOverview”即可。
定時(shí)器 2
定時(shí)器2是一個(gè)16位定時(shí)/計(jì)數(shù)器,它既可以做定時(shí)器,又可以做事件計(jì)數(shù)器。其工作方式由特殊寄存器T2CON中的C/T2位選擇(如表2所示)。定時(shí)器2有三種工作模式:
捕捉方式、自動重載(向下或向上計(jì)數(shù))和波特率發(fā)生器。如表3 所示,工作模式由T2CON中的相關(guān)位選擇。定時(shí)器2 有2 個(gè)8位寄存器:TH2和TL2。在定時(shí)工作方式中,每個(gè)機(jī)器周期,TL2寄存器都會加1。由于一個(gè)機(jī)器周期由12 個(gè)晶振周期構(gòu)成,因此,計(jì)數(shù)頻率就是晶振頻率的1/12。表 3定時(shí)器2工作模式
RCLK+TCLK | CP/RL2 | TR2 | MODE |
0 | 0 | 1 | 16位自動重載 |
0 | 1 | 1 | 16位捕捉 |
1 | x | 1 | 波特率發(fā)生器 |
x | x | 0 | (不用) |
捕捉方式在捕捉模式下,通過T2CON中的EXEN2來選擇兩種方式。
圖 5 定時(shí)器的捕捉模式 如果EXEN2=0,定時(shí)器2時(shí)一個(gè)16位定時(shí)/計(jì)數(shù)器,溢出時(shí),對T2CON 的TF2標(biāo)志置位,TF2引起中斷。如果EXEN2=1,定時(shí)器2做相同的操作。除上述功能外,外部輸入T2EX引腳(P1.1)1至0的下跳變也會使得TH2和TL2中的值分別捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳變會引起T2CON 中的EXF2 置位。像TF2 一樣,T2EX 也會引起中斷。捕捉模式如圖5所示。在計(jì)數(shù)工作方式下,寄存器在相關(guān)外部輸入角T2 發(fā)生1 至0 的下降沿時(shí)增加1。在這種方式下,每個(gè)機(jī)器周期的S5P2期間采樣外部輸入。一個(gè)機(jī)器周期采樣到高電平,而下一個(gè)周期采樣到低電平,計(jì)數(shù)器將加1。在檢測到跳變的這個(gè)周期的S3P1 期間,新的計(jì)數(shù)值出現(xiàn)在寄存器中。因?yàn)樽R別1-0的跳變需要2個(gè)機(jī)器周期(24個(gè)晶振周期),所以,最大的計(jì)數(shù)頻率不高于晶振頻率的1/24。為了確保給定的電平在改變前采樣到一次,電平應(yīng)該至少在一個(gè)完整的機(jī)器周期內(nèi)保持不變。
自動重載當(dāng)定時(shí)器2 工作于16 位自動重載模式,可對其編程實(shí)現(xiàn)向上計(jì)數(shù)或向下計(jì)數(shù)。這一功能可以通過特殊寄存器T2MOD(見表4)中的DCEN(向下計(jì)數(shù)允許位)來實(shí)現(xiàn)。通過復(fù)位,DCEN 被置為0,因此,定時(shí)器2 默認(rèn)為向上計(jì)數(shù)。DCEN 設(shè)置后,定時(shí)器2就可以取決于T2EX向上、向下計(jì)數(shù)。
如圖6 所示,DCEN=0 時(shí),定時(shí)器2 自動計(jì)數(shù)。通過T2CON 中的EXEN
圖 6 定時(shí)器2重載模式(DCEN=0) 2 位可以選擇兩種方式。如果EXEN2=0,定時(shí)器2計(jì)數(shù),計(jì)到0FFFFH后置位TF2溢出標(biāo)志。計(jì)數(shù)溢出也使得定時(shí)器寄存器重新從RCAP2H 和RCAP2L 中加載16 位值。定時(shí)器工作于捕捉模式,RCAP2H和RCAP2L的值可以由軟件預(yù)設(shè)。如果EXEN2=1,計(jì)數(shù)溢出或在外部T2EX(P1.1)引腳上的1到0的下跳變都會觸發(fā)16位重載。這個(gè)跳變也置位EXF2中斷標(biāo)志位。T2EX 上的一個(gè)邏輯0 使得定時(shí)器2 向下計(jì)數(shù)。當(dāng)TH2 和TL2 分別等于RCAP2H 和RCAP2L中的值的時(shí)候,計(jì)數(shù)器下溢。計(jì)數(shù)器下溢,置位TF2,并將0FFFFH加載到定時(shí)器存儲器中。如圖6所示,置位DCEN,允許定時(shí)器2向上或向下計(jì)數(shù)。在這種模式下,T2EX引腳控制著計(jì)數(shù)的方向。T2EX上的一個(gè)邏輯1使得定時(shí)器2向上計(jì)數(shù)。定時(shí)器計(jì)到0FFFFH溢出,并置位TF2。定時(shí)器的溢出也使得RCAP2H和RCAP2L中的16位值分別加載到定時(shí)器存儲器TH2和TL2中。
定時(shí)器2上溢或下溢,外部中斷標(biāo)志位EXF2 被鎖死。在這種工作模式下,EXF2不能觸發(fā)中斷。
表 4 T2MOD-定時(shí)器2控制寄存器
T2MOD 地址:0C9H 復(fù)位值:XXXXXX00B
不可位尋址
T2OE | DCEN | ||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
符號 | 功能 |
無定義,預(yù)留擴(kuò)展 | |
定時(shí)器2輸出允許位 | |
置1后,定時(shí)器2可配置成向上/向下計(jì)數(shù) |
AT89S52中斷源
AT89S52 有6個(gè)中斷源:兩個(gè)外部中斷(INT0 和INT1),三個(gè)定時(shí)中斷(定時(shí)器0、1、2)和一個(gè)串行中斷。這些中斷如圖10所示每個(gè)中斷源都可以通過置位或清除特殊寄存器IE 中的相關(guān)中斷允許控制位分別使得中斷源有效或無效。IE還包括一個(gè)中斷允許總控制位EA,它能一次禁止所有中斷。
如表5所示,IE.6位是不可用的。對于AT89S52,IE.5位也是不能用的。用戶軟件不應(yīng)給這些位寫1。它們?yōu)?/span>AT89系列新產(chǎn)品預(yù)留。
定時(shí)器2可以被寄存器T2CON中的TF2和EXF2的或邏輯觸發(fā)。程序進(jìn)入中斷服務(wù)后,這些標(biāo)志位都可以由硬件清0。實(shí)際上,中斷服務(wù)程序必須判定是否是TF2 或EXF2激活中斷,標(biāo)志位也必須由軟件清0。
定時(shí)器0和定時(shí)器1標(biāo)志位TF0 和TF1在計(jì)數(shù)溢出的那個(gè)周期的S5P2被置位。它們的值一直到下一個(gè)周期被電路捕捉下來。然而,定時(shí)器2 的標(biāo)志位TF2 在計(jì)數(shù)溢出的那個(gè)周期的S2P2被置位,在同一個(gè)周期被電路捕捉下來。
表 4 中斷允許控制寄存器(IE)
(MSB) (LSB)
EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
中斷允許控制位=1,允許中斷
中斷允許控制位=0,禁止中斷
符號 | 位地址 | 功能 |
EA | IE.7 | 中斷總允許控制位。EA=0,中斷總禁止;EA=1,各中斷 由各自的控制位設(shè)定 |
IE.6 | 預(yù)留 | |
ET2 | IE.5 | 定時(shí)器2中斷允許控制位 |
ES | IE.4 | 串行口中斷允許控制位 |
ET1 | IE.3 | 定時(shí)器1中斷允許控制位 |
EX1 | IE.2 | 外部中斷1允許控制位 |
ET0 | IE.1 | 定時(shí)器0中斷允許控制位 |
EX0 | IE.0 | 外部中斷0允許控制位 |
各大手機(jī)應(yīng)用商城搜索“拍明芯城”
下載客戶端,隨時(shí)隨地買賣元器件!