8051

1981年英特爾公司製造的單晶元

8051是一種8位元的單晶元微控制器,屬於MCS-51單晶元的一種,由英特爾公司於1981年製造。INTEL公司將MCS51的核心技術授權給了很多其它公司,所以有很多公司在做以8051為核心的單片機,如Atmel、飛利浦、深聯華等公司,相繼開發了功能更多、更強大的兼容產品。

8051單晶元是同步式的順序邏輯系統,整個系統的工作完全是依賴系統內部的時脈信號,用以來產生各種動作周期及同步信號。在8051單片機中已內建時鐘產生器,在使用時只需接上石英晶體諧振器(或其它振蕩子)及電容,就可以讓系統產生正確的時鐘信號。

簡介


8051
單片微型計算機簡稱為單片機,又稱為微型控制器,是微型計算機的一個重要分支。單片機是70年代中期發展起來的一種超大規模集成電路晶元,是集成CPU、RAM、ROM、I/O介面和中斷系統於同一矽片上的器件。80年代以來,單片機發展迅速,各類新產品不斷湧現,出現了許多高性能新型型號,現已逐漸成為工廠自動化和各控制領域的支柱產業之一。
8051
8051

引腳功能


MCS-51是標準的40引腳雙列直插式集成電路晶元,引腳分地布請參照----單片機引腳圖:
lP0.0~P0.7P0口8位雙向口線(在引腳的39~32號端子)。
lP1.0~P1.7P1口8位雙向口線(在引腳的1~8號端子)。
lP2.0~P2.7P2口8位雙向口線(在引腳的21~28號端子)。
lP3.0~P3.7P3口8位雙向口線(在引腳的10~17號端子)。
這4個I/O口具有不完全相同的功能,大家可得學好了,其它書本里雖然有,但寫的太深,初學者很難理解,這裡都是按我自已的表達方式來寫的,相信你也能夠理解。

功能口


P0口有三個功能
1、外部擴展存儲器時,當做數據匯流排(如圖1中的D0~D7為數據匯流排介面)
2、外部擴展存儲器時,當作地址匯流排(如圖1中的A0~A7為地址匯流排介面)
3、不擴展時,可做一般的I/O使用,但內部無上拉電阻,作為輸入或輸出時應在外部接上拉電阻。
P1口
只做I/O口使用:其內部有上拉電阻。
P2口有兩個功能
1、擴展外部存儲器時,當作地址匯流排使用
2、做一般I/O口使用,其內部有上拉電阻;
P3口有兩個功能
除了作為I/O使用外(其內部有上拉電阻),還有一些特殊功能,由特殊寄存器來設置,具體功能請參考我們後面的引腳說明。
有內部EPROM的單片機晶元(例如8751),為寫入程序需提供專門的編程脈衝和編程電源,這些信號也是由信號引腳的形式提供的,
即:編程脈衝:30腳(ALE/PROG)
編程電壓(25V):31腳(EA/Vpp)
接觸過工業設備的兄弟可能會看到有些印刷線路板上會有一個電池,這個電池是幹什麼用的呢?這就是單片機的備用電源,當外接電源下降到下限值時,備用電源就會經第二功能的方式由第9腳(即RST/VPD)引入,以保護內部RAM中的信息不會丟失。
(註:這些引腳的功能應用,除9腳的第二功能外,在“新動力2004版”學習套件中都有應用到。)
上拉電阻
在介紹這四個I/O口時提到了一個“上拉電阻”那麼上拉電阻又是一個什麼東東呢?他起什麼作用呢?都說了是電阻那當然就是一個電阻啦,當作為輸入時,上拉電阻將其電位拉高,若輸入為低電平則可提供電流源;所以如果P0口如果作為輸入時,處在高阻抗狀態,只有外接一個上拉電阻才能有效。
ALE/PROG地址鎖存控制信號
在系統擴展時,ALE用於控制把P0口的輸出低8位地址送鎖存器鎖存起來,以實現低位地址和數據的隔離。(在後面關於擴展的課程中我們就會看到8051擴展EEPROM電路,在圖中ALE與74LS373鎖存器的G相連接,當CPU對外部進行存取時,用以鎖住地址的低位地址,即P0口輸出。ALE有可能是高電平也有可能是低電平,當ALE是高電平時,允許地址鎖存信號,當訪問外部存儲器時,ALE信號負跳變(即由正變負)將P0口上低8位地址信號送入鎖存器。當ALE是低電平時,P0口上的內容和鎖存器輸出一致。關於鎖存器的內容,我們稍後也會介紹。
在沒有訪問外部存儲器期間,ALE以1/6振蕩周期頻率輸出(即6分頻),當訪問外部存儲器以1/12振蕩周期輸出(12分頻)。從這裡我們可以看到,當系統沒有進行擴展時ALE會以1/6振蕩周期的固定頻率輸出,因此可以做為外部時鐘,或者外部定時脈衝使用。
PORG為編程脈衝的輸入端
在第五課單片機的內部結構及其組成中,我們已知道,在8051單片機內部有一個4KB或8KB的程序存儲器(ROM),ROM的作用就是用來存放用戶需要執行的程序的,那麼我們是怎樣把編寫好的程序存入進這個ROM中的呢?實際上是通過編程脈衝輸入才能寫進去的,這個脈衝的輸入埠就是PROG。
PSEN外部程序存儲器讀選通信號:在讀外部ROM時PSEN低電平有效,以實現外部ROM單元的讀操作。
1、內部ROM讀取時,PSEN不動作;
2、外部ROM讀取時,在每個機器周期會動作兩次;
3、外部RAM讀取時,兩個PSEN脈衝被跳過不會輸出;
4、外接ROM時,與ROM的OE腳相接。
參見圖2—(8051擴展2KBEEPROM電路,在圖中PSEN與擴展ROM的OE腳相接)
EA/VPP訪問和序存儲器控制信號
1、接高電平時:
CPU讀取內部程序存儲器(ROM)
擴展外部ROM:當讀取內部程序存儲器超過0FFFH(8051)1FFFH(8052)時自動讀取外部ROM。
2、接低電平時:CPU讀取外部程序存儲器(ROM)。在前面的學習中我們已知道,8031單片機內部是沒有ROM的,那麼在應用8031單片機時,這個腳是一直接低電平的。
3、8751燒寫內部EPROM時,利用此腳輸入21V的燒寫電壓。
RST複位信號:當輸入的信號連續2個機器周期以上高電平時即為有效,用以完成單片機的複位初始化操作,當複位后程序計數器PC=0000H,即複位后將從程序存儲器的0000H單元讀取第一條指令碼。
XTAL1和XTAL2外接晶振引腳。當使用晶元內部時鐘時,此二引腳用於外接石英晶體和微調電容;當使用外部時鐘時,用於接外部時鐘脈衝信號。
VCC:電源+5V輸入
VSS:GND接地。
AVR和pic都是跟8051結構不同的8位單片機,因為結構不同,所以彙編指令也有所不同,而且區別於使用CISC指令集的8051,他們都是RISC指令集的,只有幾十條指令,大部分指令都是單指令周期的指令,所以在同樣晶振頻率下,較8051速度要快。另PIC的8位單片機前幾年是世界上出貨量最大的單片機,飛思卡爾的單片機緊隨其後。
ARM實際上就是32位的單片機,它的內部資源(寄存器和外設功能)較8051和PIC、AVR都要多得多,跟計算機的CPU晶元很接近了。常用於手機、路由器等等。
DSP其實也是一種特殊的單片機,它從8位到32位的都有。它是專門用來計算數字信號的。在某些公式運算上,它比現行家用計算機的最快的CPU還要快。比如說一般32位的DSP能在一個指令周期內運算完一個32位數乘32位數積再加一個32位數。應用於某些對實時處理要求較高的場合

彙編指令


指令由於操作碼和操作數。分為單位元組指令,雙位元組指令,三位元組指令。
定址方式:
立即定址:操作數包含在指令位元組中,指令操作碼後面位元組的內容就是操作數本身。
直接定址:1內部數據存儲器的低128個位元組單元(00H-7FH)2位地址空間;3專用功能寄存器
寄存器定址:由指令指出某一個寄存器中的內容作為操作數,這種定址方式稱為寄存器定址。
寄存器間接定址:由指令指出某一個寄存器的內容作為操作數的地址。
基址寄存器加變址寄存器間接定址:用於訪問程序存儲器中的數據表格。
相對定址:以PC的內容作為基地址,加上指令中給定的偏移量所得結果作為轉移地址,只適用於雙位元組轉移指令。
位定址:對片內RAM的位定址區和某些可進行位定址的特殊功能寄存器中的任一二進位位進行操作時的定址方式。

技術發展


Intel公司於1980年推出的MCS-51奠定了嵌入式應用的單片微型計算機的經典體系結構,但不久就放棄了進一步發展計劃,並實施了8051的技術開放政策。在8051實現開放后,PHILIPS公司作為全球著名的電器商以其在電子應用系統的優勢,著力發展80C51的控制功能及外圍單元。將MCS-51的單片微型計算機迅速地推進到80C51的MCU時代,形成了可滿足大量嵌入式應用的單片機系列產品。實現第一次飛躍。
Flash ROM促使8051第2次飛躍
當前,嵌入式系統普遍採用Flash ROM技術。Flash ROM的使用加速了單片機技術的發展。基於Flash ROM的ISP/IAP技術,極大地改變了單片機應用系統的結構模式以及開發和運行條件;而在單片機中最早實現Flash ROM技術的是ATMEL公司的AT89Cxx系列。
內核化SoC的加速8051第3次飛躍
MCS-51典型的體系結構以及極好的兼容性,對於MCU不斷擴展的外圍來說,形成了一個良好的嵌入式處理器內核的結構模式。當前嵌入式系統應用進入SoC模式,從各個角度,以不同方式向SoC進軍,形成了嵌入式系統應用熱潮。在這個技術潮流中,8051又扮演了嵌入式系統內核的重要角色。在MCU向SoC過渡的數、模混合集成的過程中,ADI公司推出了ADμC8xx系列,而公司則實現了向SoC的C8051F過渡;在PLD向SoC發展過程中,Triscend公司在可配置系統晶元CSoC的E5系列中便以8052作為處理器內核。
8051
8051