浙江網站備案加急域名注冊商
STC89C52RC單片機介紹
STC89C52RC單片機是宏晶科技推出的新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12時鐘/機器周期和6時鐘/機器周期可以任意選擇。
主要特性如下:
增強型8051單片機,6時鐘/機器周期和12時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051.
工作電壓:5.5V~3.3V(5V單片機)/3.8V~2.0V(3V單片機)
工作頻率范圍:0~40MHz,相當于普通8051的0~80MHz,實際工作頻率可達48MHz
用戶應用程序空間為8K字節(jié)
片上集成512字節(jié)RAM
通用I/O口(32個),復位后為:P1/P2/P3/P4是準雙向口/弱上拉,P0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。
ISP(在系統(tǒng)可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完成一片
具有EEPROM功能
具有看門狗功能
共3個16位定時器/計數(shù)器。即定時器T0、T1、T2
外部中斷4路,下降沿中斷或低電平觸發(fā)電路,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒
通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART
工作溫度范圍:-40~+85℃(工業(yè)級)/0~75℃(商業(yè)級)
PDIP封裝
STC89C52RC單片機的工作模式
掉電模式:典型功耗<0.1μA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序
空閑模式:典型功耗2mA
正常工作模式:典型功耗4Ma~7mA
掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統(tǒng)及便攜設備
STC89C52RC引腳功能說明
VCC(40引腳):電源電壓
VSS(20引腳):接地
P0端口(P0.0~P0.7,39~32引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅動8個TTL負載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復用總線。此時,P0口內部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。
P1端口(P1.0~P1.7,1~8引腳):P1口是一個帶內部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內部上拉電阻,那些被外部拉低的引腳會輸出一個電流()。
此外,P1.0和P1.1還可以作為定時器/計數(shù)器2的外部技術輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見下表:
在對Flash ROM編程和程序校驗時,P1接收低8位地址。
表XX ??????????????P1.0和P1.1引腳復用功能
引腳號 | 功能特性 |
P1.0 | T2(定時器/計數(shù)器2外部計數(shù)輸入),時鐘輸出 |
P1.1 | T2EX(定時器/計數(shù)器2捕獲/重裝觸發(fā)和方向控制) |
P2端口(P2.0~P2.7,21~28引腳):P2口是一個帶內部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電平,這時可用作輸入口。P2作為輸入口使用時,因為有內部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流()。
在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX @DPTR”指令)時,P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX @R1”指令)時,P2口引腳上的內容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內容),在整個訪問期間不會改變。
在對Flash ROM編程和程序校驗期間,P2也接收高位地址和一些控制信號。
P3端口(P3.0~P3.7,10~17引腳):P3是一個帶內部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因為有內部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流()。
在對Flash ROM編程或程序校驗時,P3還接收一些控制信號。
P3口除作為一般I/O口外,還有其他一些復用功能,如下表所示:
表XX ?????????????????????P3口引腳復用功能
引腳號 | 復用功能 |
P3.0 | RXD(串行輸入口) |
P3.1 | TXD(串行輸出口) |
P3.2 | (外部中斷0) |
P3.3 | (外部中斷1) |
P3.4 | T0(定時器0的外部輸入) |
P3.5 | T1(定時器1的外部輸入) |
P3.6 | (外部數(shù)據(jù)存儲器寫選通) |
P3.7 | (外部數(shù)據(jù)存儲器讀選通) |
RST(9引腳):復位輸入。當輸入連續(xù)兩個機器周期以上高電平時為有效,用來完成單片機單片機的復位初始化操作??撮T狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。
ALE/(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳()也用作編程輸入脈沖。
在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。
如果需要,通過將地址位8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOV指令時有效。否則,ALE將被微弱拉高。這個ALE使能標志位(地址位8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。
(29引腳):外部程序存儲器選通信號()是外部程序存儲器選通信號。當AT89C51RC從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時,將不被激活。
/VPP(31引腳):訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,必須接GND。注意加密方式1時,將內部鎖定位RESET。為了執(zhí)行內部程序指令,應該接VCC。在Flash編程期間,也接收12伏VPP電壓。
XTAL1(19引腳):振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。
XTAL2(18引腳):振蕩器反相放大器的輸入端。
特殊功能寄存器
在STC89C52RC片內存儲器中,80H~FFH共128個單元位特殊功能寄存器(SFR),SFR的地址空間如下表1所示。
并非所有的地址都被定義,從80H~FFH共128個字節(jié)只有一部分被定義。還有相當一部分沒有定義。對沒有定義的單元讀寫將是無效的,讀出的數(shù)值將不確定,而寫入的數(shù)據(jù)也將丟失。
不應將“1”寫入未定義的單元,由于這些單元在將來的產品中可能賦予新的功能,在這種情況下,復位后這些單元數(shù)值總是“0”。
STC89C52RC除了有定時器/計數(shù)器0和定時器/計數(shù)器1之外,還增加了一個一個定時器/計數(shù)器2.定時器/計數(shù)器2的控制和狀態(tài)位位于T2CON(見表2)和T2MOD(見表4)。
定時器2是一個16位定時/計數(shù)器。通過設置特殊功能寄存器T2CON中的C/T2位,可將其作為定時器或計數(shù)器(特殊功能寄存器T2CON的描述如表2所列)。定時器2有3種操作模式:捕獲、自動重新裝載(遞增或遞減計數(shù))和波特率發(fā)生器,這3種模式由T2CON中的位進行選擇(如表2所列)
表1 ?????STC89C52RC的特殊功能寄存器
2 ????????????特殊功能寄存器T2CON的描述
表3 ?????定時/計數(shù)器2控制寄存器各位功能說明
符號 | 功能 |
TF2 | 定時器2溢出標志。定時器2溢出時,又由硬件置位,必須由軟件請0.當RCLK=1或TCLK=1時,定時器2溢出,不對TF2置位。 |
EXF2 | 定時器2外部標志。當EXEN2=1,且當T2EX引腳上出現(xiàn)負跳變而出現(xiàn)捕獲或重裝載時,EXF2置位,申請中斷。此時如果允許定時器2中斷,CPU將響應中斷,執(zhí)行定時器2 中斷服務程序,EXF2必須由軟件清除。當定時器2工作在向上或向下計數(shù)方式時(DCEN=1),EXF2不能激活中斷。 |
RCLK | 接收時鐘允許。RCLK=1時,用定時器2溢出脈沖作為串口(工作于工作方式1或3時)的接收時鐘,RCLK=0,用定時器1的溢出脈沖作為接收脈沖 |
TCLK | 發(fā)送時鐘允許。TCLK=1時,用定時器2溢出脈沖作為串口(工作于工作方式1或3時)的發(fā)送時鐘,TCLK=0,用定時器1的溢出脈沖作為發(fā)送脈沖 |
EXEN2 | 定時器2外部允許標志。當EXEN2=1時,如果定時器2未用于作串行口的波特率發(fā)生器,在T2EX端口出現(xiàn)負跳變脈沖時,激活定時器2捕獲或者重裝載。EXEN2=0時,T2EX端的外部信號無效。 |
TR2 | 定時器2啟動/停止控制位。TR2=1時,啟動定時器2. |
C/ | 定時器2定時方式或計數(shù)方式控制位。C/=0時,選擇定時方式,C/=1時,選擇對外部事件技術方式(下降沿觸發(fā))。 |
CP/ | 捕獲/重裝載選擇。CP/=1時,如EXEN2=1,且T2EX端出現(xiàn)負跳變脈沖時發(fā)生捕獲操作。CP/=1時,若定時器2溢出或EXEN2=1條件下,T2EX端出現(xiàn)負跳變脈沖,都會出現(xiàn)自動重裝載操作。當RCLK=1或TCLK=1時,該位無效,在定時器2溢出時強制其自動重裝載。 |
表4 ??定時器2工作方式
RCLK+TCLK | CP/ | TR2 | 模式 |
0 | 0 | 1 | 16位自動重裝 |
0 | 1 | 1 | 16位捕獲 |
1 | X | 1 | 波特率發(fā)生器 |
X | X | 0 | (關閉) |
捕獲模式
在捕獲模式中,通過T2CON中的EXEN2設置2個選項。如果EXEN2=0, 定時器2作為一個16位定時器或計數(shù)器(由T2CON中的C/位選擇),溢出時置位TF2(定時器2溢出標志位)。該位可用于產生中斷(通過使能IE寄存器中的定時器2中斷使能位)。如果EXEN2=1,與以上描述相同,但增加了一個特性,即外部輸入T2EX由1變0時,將定時器2中TL2和TH2的當前值各自捕獲到RCAP2L和RACP2H。另外,T2EX的負跳變使T2CON中的EXF2置位,EXF2也像TF2一樣能夠產生中斷(其向量與定時器2溢出中斷地址相同,定時器2中斷服務程序通過查詢TF2和EXF2來確定引起中斷的事件),捕獲模式如圖X所示。在該模式中,TL2和TH2勿重新裝載值,甚至當T2EX產生捕獲時間時,計數(shù)器仍以T2EX的負跳變或振蕩頻率的1/2(12時鐘模式)或1/6(6時鐘模式)計數(shù)。
自動重裝模式(遞增/遞減計數(shù)器)
16位自動重裝模式中,定時器2可通過C/T2配置為定時器/計數(shù)器,編程控制遞增/遞減。計數(shù)的方向有DCEN(遞減計數(shù)使能位)確定,DCEN位于T2MMOD寄存器中,T2MOD寄存器各位的功能描述如表XX所示。當DCEN=0時,定時器2默認為向上計數(shù);當DCEN=1時,定時器2可通過T2EX確定遞增或遞減計數(shù)。圖XX顯示了當DCEN=0時,定時器2自動遞增計數(shù)。在該模式中,通過設置EXEN2位進行選擇。如果EXEN2=0,定時器2遞增計數(shù)到0FFFFH,并在溢出后將TF2置位,然后將RCAP2L和RCAP2H中的16位值作為重新裝載值裝入定時器2。RCAP2L和RCAP2H的值是通過軟件預設的。
表5??????????????定時器2模式(T2MOD)控制寄存器的描述
*用戶勿將其置1.這些為在將來80C51系列產品中用來實現(xiàn)新的特性。在這種情況下,以后用到保留位,復位時或非有效狀態(tài)時,它的值應為0;而在這些位有效狀態(tài)時,它的值為1.保留位讀到的值不確定。
如果EXEN2=1,16位重新裝載可通過溢出或T2EX從1到0的負跳變實現(xiàn)。此負跳變同時將EXF2置位。如果定時器2中斷被使能,則當TF2或EXF2置1時,定時器2遞增計數(shù),計數(shù)到0FFFFH后溢出并置位TF2,還將產生中斷(如果中斷被使能)。定時器2的溢出將使RCAP2L和RCAP2H中的16位值作為重新裝載值放入TL2和TH2。
當T2EX置零時,將使定時器2遞減計數(shù)。當TL2和TH2計數(shù)到等于RCAP2L和RCAP2H時,定時器產生中斷。
波特率發(fā)生器模式
寄存器T2CON的位TCLK和(或)RCLK允許從定時器1或定時器2獲得串行口發(fā)送和接收的波特率。當TCLK=0時,定時器1作為串行口發(fā)送波特率發(fā)生器;當TCLK=1時,定時器2作為串行口發(fā)送波特率發(fā)生器。RCLK對串行口接收波特率有同樣的作用。通過這2位,串行口能得到不同的接收和發(fā)送波特率,一個通過定時器1產生,另一個通過定時器2產生。
如圖XX所示為定時器工作在波特率發(fā)生器模式。與自動重裝模式相似,當TH2溢出時,波特率發(fā)生器模式使定時器2寄存器重新裝載來自寄存器RCAP2H和RCAP2L的16位的值,寄存器RCAP2H和RCAP2L的值由軟件預置。當工作與模式1和模式3時,波特率由下面的公式所決定:
圖XX??定時器2波特率發(fā)生器模式
定時器可配置成“定時”或“計數(shù)”方式,在許多應用上,定時器被設置為“定時”方式(C/=0)。當定時器2作為定時器時,它的操作不同于波特率發(fā)生器。通常定時器2作為定時器,它會在每個機器周期遞增(1/6或1/12振蕩頻率)。當定時器2作為波特率發(fā)生器時,它在6時鐘模式下,以振蕩器頻率遞增(12時鐘模式時為1/12振蕩頻率)。
這時的波特率公式如下:
式中:n=16(6時鐘模式)或32(12時鐘模式);是的內容,為16位勿符號整數(shù)。
如圖XX(上面)所示,定時器2是作為波特率發(fā)生器,僅當寄存器T2CON中的RCLK和(或)TCLK=1時,定時器2作為波特率發(fā)生器才有效。注意:TH2溢出并不置位TF2,也不產生中斷。這樣當定時器作為波特率發(fā)生器時,定時器2中斷不必禁止。如果EXEN2(T2外部使能標志)被置位,在T2EX中由1到0的轉換會置位EXF2(T2外部標志位),但并不導致(TH2,TL2)重新裝載()。當定時器2用作波特率發(fā)生器時,如果需要,T2EX可用作附加的外部中斷。
當計時器工作在波特率發(fā)生器模式下,則不要對TH2和TL2進行讀/寫,每隔一個狀態(tài)時間()或由T2進入的異步信號,定時器2將加1.在此情況下對TH2和TL2進行讀/寫是不準確的;可對RCAP2寄存器進行讀,但不要進行寫,否則將導致自動重裝錯誤。當對定時器2或寄存器RCAP進行訪問時。應關閉定時器(清零TR2)。表XX列出了常用的波特率和如何用定時器2得到這些波特率。
表XX ?????????????????由定時器2產生的常用波特率
門狗應用
STC89C52RC單片機看門狗定時器特殊功能寄存器
符號 | 功能 |
EN_WDT | 看門狗允許位,當設置為“1”,看門狗啟動 |
CLR_WDT | 看門狗清“0”位,當設為“1”時,看門狗將重新計數(shù)。硬件將自動清“0” 此位 |
IDLE_WDT | 看門狗“IDLE”模式位,當設置為“1”時,看門狗定時器在“空閑模式”計數(shù);當清“0”該位時,看門狗在“空閑模式”時不計數(shù) |
PS2,PS1,PS0 | 看門狗定時器預分頻值,不同值對應預分頻數(shù)如表XX所示 |
表XX ??????????20MHz晶振看門狗定時器預分頻值
PS2 | PS1 | PS0 | 預分頻 | 看門狗溢出時間 |
0 | 0 | 0 | 2 | 39.3ms |
0 | 0 | 1 | 4 | 78.6 ms |
0 | 1 | 0 | 8 | 157.3 ms |
0 | 1 | 1 | 16 | 314.6 ms |
1 | 0 | 0 | 32 | 629.1 ms |
1 | 0 | 1 | 64 | 1.25s |
1 | 1 | 0 | 128 | 2.5s |
1 | 1 | 1 | 256 | 5s |
看門狗溢出時間與預分頻值有直接的關系,公式如下:
式中,N表示STC單片機的時鐘模式。STC單片機有兩種時鐘模式,一種是單倍速,也就是12時鐘模式,在該模式下,STC單片機與其他公司51系列單片機具有相同的機器周期,即12個振蕩周期為一個機器周期;另一種是雙倍速,又稱6時鐘模式,在該模式下,STC單片機比其他公司的51單片機運行速度快一倍。