引言
隨著電子技術(shù)的迅速發(fā)展,單片機技術(shù)的出現(xiàn)給現(xiàn)代工業(yè)測控領(lǐng)域帶來了一次新的技術(shù)革命。目前,單片機以其高可靠性、高性能價格比,在工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表、辦公自動化等諸多領(lǐng)域得到極為廣泛的應(yīng)用,并已走入家庭,洗衣機、空調(diào)等,到處都可見到單片機的蹤影。
在單片機家族的眾多成員中,MCS51系列單片機以其優(yōu)越的性能、成熟的技術(shù)及高可靠性和高性能價格比,迅速占領(lǐng)了工業(yè)測控和自動化工程應(yīng)用的主要市場,成為國內(nèi)單片機應(yīng)用領(lǐng)域中的主流。世界各大單片機廠商都在MCS51上投入了大量的資金和人力,圍繞51內(nèi)核,衍生出許多品種,增強51單片機的各種功能。MCS51家族是目前在單片機領(lǐng)域發(fā)展最快的一個品種。
這里要向大家推薦的是新近由STC公司推出的高性價比的STC89系列單片機。
STC89系列單片機的性能
STC89系列單片機是MCS-51系列單片機的派生產(chǎn)品。它們在指令系統(tǒng)、硬件結(jié)構(gòu)和片內(nèi)資源上與標準8052單片機完全兼容,DIP40封裝系列與8051為pin-to-pin兼容。STC89系列單片機高速(最高時鐘頻率90MHz),低功耗,在系統(tǒng)/在應(yīng)用可編程(ISP,IAP),不占用戶資源。下表是STC89系列單片機資源一覽表。
主要特性:
u 80C51核心處理器單元;
u 3V/5V工作電壓,操作頻率0~33MHz(STC89LE516AD最高可達90MHz);5V工作電壓,操作頻率0~40MHz;
u 大容量內(nèi)部數(shù)據(jù)RAM:1K字節(jié)RAM;
u 64/32/16/8kB片內(nèi)Flash程序存儲器,具有在應(yīng)用可編程(IAP) ,在系統(tǒng)可編程(ISP),可實現(xiàn)遠程軟件升級,無需編程器;
u 支持12時鐘(默認)或6時鐘模式;
u 雙DPTR數(shù)據(jù)指針;
u SPI(串行外圍接口)和增強型UART ;
u PCA(可編程計數(shù)器陣列),具有PWM的捕獲/比較功能;
u 4個8位I/O口,含3個高電流P1口,可直接驅(qū)動LED;
u 3個16位定時器/計數(shù)器;
u 可編程看門狗定時器(WDT);
u 低EMI方式(ALE禁止);
u 兼容TTL和COMS邏輯電平;
u 掉電檢測和低功耗模式等。
下面主要介紹STC89系列單片機有特色之處及需要注意的地方。
一、 1k bit片內(nèi)RAM(數(shù)據(jù)存儲器)
普通8051系列單片及片內(nèi)RAM只有128(8051)或256(8052)字節(jié),
1、低128字節(jié)(地址:00H~7FH),可直接或間接尋址;
2、高128字節(jié)(地址:80H~FFH),只可間接尋址;
STC89系列單片機另外增加了768字節(jié)的片內(nèi)擴展RAM,以解決眾多技術(shù)人員在編程時的RAM資源嚴重缺乏的問題。
768字節(jié)的片內(nèi)擴展RAM(地址:000H~2FFH)與外部擴展RAM地址重疊,單片機可通過軟件設(shè)置AUXR.1,決定是否使用片內(nèi)擴展RAM,以防止可能的與外部擴展RAM的沖突,默認為使用片內(nèi)擴展RAM。
片內(nèi)擴展RAM的訪問采用間接尋址,可通過
①、MOVX A,@DPTR 或 MOVX @DPTR ,A 指令訪問片內(nèi)擴展RAM(00H~2FFH,共768字節(jié));
②、MOVX A,@Ri 或 MOVX @Ri,A 指令訪問片內(nèi)擴展RAM(00H~FFH,共256字節(jié))。
當(dāng)DPTR≥300H時,系統(tǒng)訪問外部擴展RAM。
注意:在使用第二種指令時,特別要注意是使用MOV還是MOVX,MOV訪問的是片內(nèi)RAM,MOVX訪問的是片內(nèi)擴展RAM,剛剛接觸此類單片機的技術(shù)人員最容易在這里犯錯誤。
二、 64/32/16/8K片內(nèi)Flash(程序存儲器)與ISP功能
STC89系列單片機按芯片型號分別有64/32/16/8K片內(nèi)Flash,分為2個Flash存儲塊:Block0和Block1。2個 Flash存儲塊在物理上Block0在前,Block1在后。通過REMAP功能可以將Flash塊重定位。下圖顯示的是STC89C58的程序存儲器結(jié)構(gòu)
使用過SST89系列單片機的用戶要注意與STC89區(qū)別:
①、Block1大小不同;
②、Block扇區(qū)大小不同;
③、指令及SFR的不同。
STC89有2個配置位SC0,SC1控制上電復(fù)位/外部復(fù)位后程序是從Block0還是Block1啟動。
①對于STC89C58,SC0,SC1同時起作用:
SC1,SC0=0,0 程序是從Block0啟動;
SC1,SC0=1,1 程序是從Block1啟動,這時Block1物理上在后8K(E000H~FFFFH),邏輯上又影象到前8K(0000H~1FFFH),Block0前8K對于PC指針不可見。
②對于STC89C16,只有SC0起作用:
SC0=0 程序是從Block0啟動;
SC0=1 程序是從Block1啟動,這時Block1邏輯上影象到前8K(0000H~1FFFH),將Block0前8K單元覆蓋。
剛剛接觸STC89系列單片機的技術(shù)人員可能對其REMAP功能不理解,通過了解ISP就會明白REMAP的作用。
ISP主要應(yīng)用于在線(或遠程)升級,通過執(zhí)行ISP引導(dǎo)碼改寫用戶程序,無須編程器,無須親臨現(xiàn)場。STC89系列單片機在出廠時,片內(nèi)已經(jīng)燒錄有ISP引導(dǎo)碼,占用Block1的程序空間前2K字節(jié),并設(shè)置為從Block1啟動。啟動時,首先執(zhí)行ISP引導(dǎo)碼,確認是程序下載,還是正常啟動。無論是程序下載還是正常啟動,ISP引導(dǎo)碼最后總是將REMAP取消,恢復(fù)Block0在前8K的地址空間,進而執(zhí)行Block0中的用戶程序,即用戶程序總是放在Block0的00H開始的單元,除非用戶自行修改了ISP引導(dǎo)碼。