MCS-51單片機的匯編語言程序由若干條匯編語言指令和偽指令構(gòu)成。指令存放在程序存儲器中,被單片機讀取并執(zhí)行,且執(zhí)行結(jié)果將影響單片機自身的狀態(tài)。
單片機由中央處理器(含部分特殊功能寄存器)、內(nèi)部RAM、程序存儲器、各種外設(shè)(IO端口、定時器、串行接口、中斷處理電路等等)及對應(yīng)控制寄存器、時鐘電路、復位電路等幾部分組成。
MCS-51單片機4個并行I/O端口引腳的內(nèi)部結(jié)構(gòu)如圖2-10所示,每個端口有8個相互獨立且內(nèi)部結(jié)構(gòu)完全相同的引腳。圖2-10中的字母X代表引腳序號,是0~7的整數(shù)。接下來將分別介紹P0、P1、P2和P3口的引腳特性。
MCS-51系列單片機產(chǎn)品有8051,8031,8751,80C51,80C31等型號(前三種為CMOS芯片,后兩種為CHMOS芯片)。它們的結(jié)構(gòu)基本相同,其主要差別反映在存儲器的配置上。8051內(nèi)部設(shè)有4K字節(jié)的掩模ROM程序存儲器,8031片內(nèi)沒有程序存儲器,而8751是將8051片內(nèi)的ROM換成EPROM。由ATMEL公司生產(chǎn)的89C51將EPROM改成了4K的閃速存儲器。
它是80C51單片機中最具有特色的部分,幾乎所有80C51系列功能的增加和擴展都是通過增加特殊功能寄存器來達到目的的。英文縮寫為SFR,是Special Function Register(特殊功能寄存器)的縮寫。
MCS-51單片機的CPU字長為8位,內(nèi)部包含運算器、控制器和特殊功能寄存器。由于特殊功能寄存器在功能和使用方法方面與存儲器比較相似,因此將與存儲器一同講解。本小節(jié)僅介紹運算器和控制器的基本情況。
MCS-51單片機內(nèi)部集成了微處理器、存儲器、輸入接口和輸出接口,其體系結(jié)構(gòu)如圖2-1所示。在MCS-51單片機中,ROM存放程序代碼,RAM存放數(shù)據(jù),因此ROM和RAM分別被稱為程序存儲器和數(shù)據(jù)存儲器。因為,程序存儲器和數(shù)據(jù)存儲器是獨立分開的,所以MCS-51單片機屬于哈佛體系結(jié)構(gòu)。
在微型計算機中,所有信息(如數(shù)值、符號和圖像等)均以二進制形式存儲、傳輸和計算。由于二進制數(shù)冗長、不方便讀寫和辨認,因此,現(xiàn)代微型計算機也支持編程時使用書寫長度更短的十六進制數(shù)和十進制數(shù),同時也為各種非數(shù)值信息提供了相應(yīng)的數(shù)值編碼(即用數(shù)值表示非數(shù)值信息)方法。
I2 C總線是Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。它只需要兩根線(串行時鐘線和串行數(shù)據(jù)線)即可在連接于總線上的器件之間傳送信息。這種總線的主要特性如下:
中斷系統(tǒng)是計算機的重要組成部分。實時控制、故障自動處理、計算機與外圍設(shè)備間的數(shù)據(jù)傳送往往采用中斷系統(tǒng)。中斷系統(tǒng)的應(yīng)用大大提高了計算機效率。
Philips公司生產(chǎn)的與MCS 51單片機兼容的CMOS型單片機中,8XC552的功能最強,最具有代表性。它除了具有8051單片機的全部功能之外,又增加了大量的硬件:高速I/O、PWM、A/D、WDT、計數(shù)器的捕獲/比較邏輯、串行總線I2CBUS等都集成在片內(nèi)。
定時器T2和連接到這個寄存器上的4個16位捕捉寄存器及1個比較器組成定時器T2與捕捉比較邏輯。當在相應(yīng)引腳上電平發(fā)生變化時,捕捉寄存器將捕捉定時器T2的內(nèi)容,比較邏輯是以固定的時間去設(shè)置、復位和觸發(fā)P4口的輸出。
Philips公司生產(chǎn)的與MCS 51單片機兼容的CMOS型單片機中,8XC552的功能最強,最具有代表性。它除了具有8051單片機的全部功能之外,又增加了大量的硬件:高速I/O、PWM、A/D、WDT、計數(shù)器的捕獲/比較邏輯、串行總線I2CBUS等都集成在片內(nèi)。
8XC51GB有15個中斷源,對應(yīng)有15個固定的中斷矢量地址(見圖10.8)。其中有7個外部中斷是INT0~INT6,外部中斷引腳與端口3和端口5引腳的功能復用;有8個內(nèi)部中斷,它們分別是3個定時器中斷(定時器T0、T1、T2)、2個可編程定時計數(shù)器陣列中斷(PCA、PCA1)、1個串行口中斷、1個SEP中斷和1個A/D中斷。下面分別對各個中斷作簡要介紹。
中斷服務(wù)處理子程序可簡稱為中斷服務(wù)處理程序或中斷程序,用于處理單片機的中斷事件,只能被單片機硬件調(diào)用執(zhí)行,而不能通過子程序調(diào)用指令(ACALL或LCALL)調(diào)用執(zhí)行。中斷服務(wù)處理程序只能通過RETI指令返回。