單片機可以通過“定時/計數(shù)模式選擇位C/T”令定時/計數(shù)器工作于定時或計數(shù)模式下,也可通過“工作方式選擇位M1M0”設(shè)定其工作方式。C/T和M1M0等與定時/計數(shù)器有關(guān)的位在寄存器TCON或TMOD中,見表4-8和表4-9。
在家電產(chǎn)品和工業(yè)應(yīng)用系統(tǒng)中,定時和計數(shù)是兩種常用的功能,如:微波爐加熱計時和流水線上產(chǎn)品數(shù)目統(tǒng)計等。MCS-51單片機內(nèi)部集成的兩個可編程定時/計數(shù)器T0和T1使用靈活、方便,在儀器儀表等工業(yè)產(chǎn)品中應(yīng)用廣泛。
MCS-51單片機有兩個外部中斷源INT0和INT1,它們分別在P3.2和P3.3引腳出現(xiàn)低電平或下降沿信號時向單片機發(fā)出中斷請求。外部中斷可用于檢測單片機外部發(fā)生的事件,如鍵盤敲擊和特定脈沖發(fā)生的次數(shù)等。
④處理機執(zhí)行完一條指令后或者這條指令已無法執(zhí)行完,則立即中止現(xiàn)行程序。接著,中斷部件根據(jù)中斷級去指定相應(yīng)的主存單元,并把被中斷的指令地址和處理機當(dāng)前的主要狀態(tài)信息存放在此單元中。
當(dāng)多個同級別中斷同時發(fā)出中斷請求時,單片機中斷系統(tǒng)將按照自然優(yōu)先級別進行中斷排序,并首先響應(yīng)其中自然優(yōu)先級別最高的中斷。
MCS-51單片機中斷系統(tǒng)的結(jié)構(gòu)如圖4-1所示。MCS-51單片機有5個中斷源,分別是2個外部中斷源、2個定時/計數(shù)器中斷源和1個串行接口中斷源。與中斷系統(tǒng)有關(guān)的寄存器有TCON、SCON、IE和IP,它們都可以按位尋址,其中的每一位都可以通過指令來設(shè)置。
單片機系統(tǒng)用戶可以通過中斷系統(tǒng)的軟件和硬件實現(xiàn)對某一中斷請求的開放(或允許)和屏蔽。開放是指中斷請求發(fā)生時中斷系統(tǒng)響應(yīng)該請求,并完成相應(yīng)的中斷服務(wù)處理工作;相反地,屏蔽是指中斷系統(tǒng)既不接收中斷請求,也不進行中斷處理。
控制轉(zhuǎn)移指令能夠改變單片機程序寄存器(PC)的值,即改變單片機從ROM中讀取指令的順序,從而改變程序執(zhí)行順序??刂妻D(zhuǎn)移指令包括以下幾類:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令和子程序調(diào)用及返回指令等。
在單片機與外部設(shè)備(簡稱外設(shè))的數(shù)據(jù)傳送過程中,單片機處于核心地位,所謂的數(shù)據(jù)輸入和輸出都是相對單片機而言。數(shù)據(jù)由外設(shè)傳送至單片機,為“輸入”,反之為“輸出”。通常,單片機與外設(shè)的數(shù)據(jù)傳送速度差別較大,因此,選擇恰當(dāng)?shù)臄?shù)據(jù)傳送時間和傳送時間間隔,是保證數(shù)據(jù)正確傳送的關(guān)鍵。在單片機系統(tǒng)中,有三種解決該問題的方法,即程序控制傳送、中斷式傳送和DMA傳送。
邏輯運算可以分成字節(jié)邏輯運算和位邏輯運算兩大類,其指令格式見表3-8。當(dāng)邏輯運算指令的目的操作數(shù)是累加器A、程序狀態(tài)字寄存器PSW或進位標(biāo)志位CY時,PSW會受到影響,否則PSW不受影響。
ADD指令將源操作數(shù)和累加器A中的數(shù)相加,加法的結(jié)果存入累加器A,并且運算結(jié)果會影響PSW中的CY、OV、AC和P標(biāo)志位。ADD指令對標(biāo)志位的影響如下:當(dāng)加法結(jié)果的第7位有進位時,則進位標(biāo)志位CY被置1,否則被清0;如果加法結(jié)果的第3位有進位,則輔助進位標(biāo)志位AC被置1,否則被清0;如果加法結(jié)果的第6位和第7位的進位情況不一致,則溢出標(biāo)志位OV被置1,否則被清0;運算結(jié)束時,奇偶標(biāo)志位P的值由累加器A中的數(shù)決定,若累加器A中的值以二進制表示后,其中“1”的個數(shù)為奇數(shù)個,則P為1,否則P為0。
單片機工作時,經(jīng)常需要進行算術(shù)邏輯運算等操作,而數(shù)據(jù)通常存放于存儲器和寄存器中,因此進行有效的數(shù)據(jù)傳送、獲取操作數(shù)是單片機程序設(shè)計的基礎(chǔ)。
堆棧指令是FX系列中新增的基本指令,用于多重輸出電路,為編程帶來便利、在FX系列PLC中有11個存儲單元,它們專門用來存儲程序運算的中間結(jié)果,被稱為棧存儲器。
(片內(nèi)RAM)傳送指令MOV(Move)把一個字節(jié)、字或雙字的操作數(shù)從源位置傳送到目的位置,源操作數(shù)的內(nèi)容不變。可以實現(xiàn)立即數(shù)到通用寄存器或主存的傳送,通用寄存器與通用寄存器、主存或段寄存器之間的傳送,主存與段寄存器之間的傳送。該操作屬于復(fù)制性質(zhì),不屬于搬家性質(zhì)。
在指令“MOV A,#12H”中,立即數(shù)#12H是源操作數(shù),緊隨操作碼74H之后存放在ROM中。該指令執(zhí)行時,單片機先從ROM中讀取操作碼74H,對操作碼74H解碼后,確定要進行的操作是將一個8位立即數(shù)送入累加器A,接下來單片機從緊鄰操作碼的下一個存儲單元中取得立即數(shù)12H并送入累加器A。另外,該指令的目的操作數(shù)累加器A隱含在操作碼中,沒有明確給出。