與串口工作有關(guān)的特殊功能寄存器包括:串口控制寄存器SCON(圖4-18中的TI和RI均是該寄存器中的位)、串口緩沖區(qū)寄存器SBUF和電源控制寄存器PCON(圖4-18中的SMOD是該寄存器中的位)。
在并行通信中,數(shù)據(jù)的所有二進(jìn)制位在多條并行的傳輸線上同時(shí)傳送,如圖4-14a所示。在串行通信中,數(shù)據(jù)的所有二進(jìn)制位在一條傳輸線上一位一位地按順序逐個(gè)傳送,如圖4-14b所示。
定時(shí)/計(jì)數(shù)器實(shí)質(zhì)上是一個(gè)加1計(jì)數(shù)器。它隨著計(jì)數(shù)器的輸入脈沖進(jìn)行自加1,也就是每來一個(gè)脈沖,計(jì)數(shù)器就自動(dòng)加1,,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使相應(yīng)的中斷標(biāo)志位置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。
【例1】利用定時(shí)功能產(chǎn)生方波信號(hào)。假設(shè):?jiǎn)纹瑱C(jī)晶振頻率為fosc=6MHz。要求:利用定時(shí)/計(jì)數(shù)器T0的工作方式1控制定時(shí),在單片機(jī)P1.1引腳產(chǎn)生頻率f=50Hz的方波。
在家電產(chǎn)品和工業(yè)應(yīng)用系統(tǒng)中,定時(shí)和計(jì)數(shù)是兩種常用的功能,如:微波爐加熱計(jì)時(shí)和流水線上產(chǎn)品數(shù)目統(tǒng)計(jì)等。MCS-51單片機(jī)內(nèi)部集成的兩個(gè)可編程定時(shí)/計(jì)數(shù)器T0和T1使用靈活、方便,在儀器儀表等工業(yè)產(chǎn)品中應(yīng)用廣泛。
④處理機(jī)執(zhí)行完一條指令后或者這條指令已無法執(zhí)行完,則立即中止現(xiàn)行程序。接著,中斷部件根據(jù)中斷級(jí)去指定相應(yīng)的主存單元,并把被中斷的指令地址和處理機(jī)當(dāng)前的主要狀態(tài)信息存放在此單元中。
當(dāng)多個(gè)同級(jí)別中斷同時(shí)發(fā)出中斷請(qǐng)求時(shí),單片機(jī)中斷系統(tǒng)將按照自然優(yōu)先級(jí)別進(jìn)行中斷排序,并首先響應(yīng)其中自然優(yōu)先級(jí)別最高的中斷。
在單片機(jī)與外部設(shè)備(簡(jiǎn)稱外設(shè))的數(shù)據(jù)傳送過程中,單片機(jī)處于核心地位,所謂的數(shù)據(jù)輸入和輸出都是相對(duì)單片機(jī)而言。數(shù)據(jù)由外設(shè)傳送至單片機(jī),為“輸入”,反之為“輸出”。通常,單片機(jī)與外設(shè)的數(shù)據(jù)傳送速度差別較大,因此,選擇恰當(dāng)?shù)臄?shù)據(jù)傳送時(shí)間和傳送時(shí)間間隔,是保證數(shù)據(jù)正確傳送的關(guān)鍵。在單片機(jī)系統(tǒng)中,有三種解決該問題的方法,即程序控制傳送、中斷式傳送和DMA傳送。
邏輯運(yùn)算可以分成字節(jié)邏輯運(yùn)算和位邏輯運(yùn)算兩大類,其指令格式見表3-8。當(dāng)邏輯運(yùn)算指令的目的操作數(shù)是累加器A、程序狀態(tài)字寄存器PSW或進(jìn)位標(biāo)志位CY時(shí),PSW會(huì)受到影響,否則PSW不受影響。
(片內(nèi)RAM)傳送指令MOV(Move)把一個(gè)字節(jié)、字或雙字的操作數(shù)從源位置傳送到目的位置,源操作數(shù)的內(nèi)容不變??梢詫?shí)現(xiàn)立即數(shù)到通用寄存器或主存的傳送,通用寄存器與通用寄存器、主存或段寄存器之間的傳送,主存與段寄存器之間的傳送。該操作屬于復(fù)制性質(zhì),不屬于搬家性質(zhì)。
在指令“MOV A,#12H”中,立即數(shù)#12H是源操作數(shù),緊隨操作碼74H之后存放在ROM中。該指令執(zhí)行時(shí),單片機(jī)先從ROM中讀取操作碼74H,對(duì)操作碼74H解碼后,確定要進(jìn)行的操作是將一個(gè)8位立即數(shù)送入累加器A,接下來單片機(jī)從緊鄰操作碼的下一個(gè)存儲(chǔ)單元中取得立即數(shù)12H并送入累加器A。另外,該指令的目的操作數(shù)累加器A隱含在操作碼中,沒有明確給出。
單片機(jī)由中央處理器(含部分特殊功能寄存器)、內(nèi)部RAM、程序存儲(chǔ)器、各種外設(shè)(IO端口、定時(shí)器、串行接口、中斷處理電路等等)及對(duì)應(yīng)控制寄存器、時(shí)鐘電路、復(fù)位電路等幾部分組成。
中斷系統(tǒng)是計(jì)算機(jī)的重要組成部分。實(shí)時(shí)控制、故障自動(dòng)處理、計(jì)算機(jī)與外圍設(shè)備間的數(shù)據(jù)傳送往往采用中斷系統(tǒng)。中斷系統(tǒng)的應(yīng)用大大提高了計(jì)算機(jī)效率。
Philips公司生產(chǎn)的與MCS 51單片機(jī)兼容的CMOS型單片機(jī)中,8XC552的功能最強(qiáng),最具有代表性。它除了具有8051單片機(jī)的全部功能之外,又增加了大量的硬件:高速I/O、PWM、A/D、WDT、計(jì)數(shù)器的捕獲/比較邏輯、串行總線I2CBUS等都集成在片內(nèi)。
中斷服務(wù)處理子程序可簡(jiǎn)稱為中斷服務(wù)處理程序或中斷程序,用于處理單片機(jī)的中斷事件,只能被單片機(jī)硬件調(diào)用執(zhí)行,而不能通過子程序調(diào)用指令(ACALL或LCALL)調(diào)用執(zhí)行。中斷服務(wù)處理程序只能通過RETI指令返回。
AT89C系列與MCS 51系列單片機(jī)相比有兩大優(yōu)勢(shì):第一,片內(nèi)程序存儲(chǔ)器采用閃速存儲(chǔ)器,使程序的寫入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整個(gè)硬件電路的體積更小。
前面列舉的各項(xiàng)措施只解決了如何發(fā)現(xiàn)系統(tǒng)受到干擾和如何捕捉“跑飛”的程序,但僅此還不夠,還要能夠讓單片機(jī)根據(jù)被破壞的殘留信息自動(dòng)恢復(fù)到正常的工作狀態(tài)。硬件復(fù)位是使單片機(jī)重新恢復(fù)正常工作狀態(tài)的一個(gè)簡(jiǎn)單有效的方法。硬件復(fù)位后CPU被重新初始化,所有被激活的中斷標(biāo)志都被清除,程序從0000H地址重新開始執(zhí)行。
前面幾項(xiàng)抗干擾措施都是針對(duì)I/O通道而言的。若干擾信號(hào)還未作用到CPU本身,則CPU還能正確地執(zhí)行各種抗干擾程序;若干擾信號(hào)已經(jīng)通過某種途徑作用到CPU上,則CPU就不能按正常狀態(tài)執(zhí)行程序,從而引起混亂,這就是通常所說的程序“跑飛”。程序“跑飛”后使其恢復(fù)正常最簡(jiǎn)單的方法是讓CPU復(fù)位,讓程序從頭開始重新運(yùn)行。這種方法雖然簡(jiǎn)單,但需要人的參與,而且復(fù)位不及時(shí)。人工復(fù)位一般是在整個(gè)系統(tǒng)已經(jīng)癱瘓,無計(jì)可施的情況下才不得已而為之的。因此在進(jìn)行軟件設(shè)計(jì)時(shí)就要考慮到萬一程序“跑
由于數(shù)字量輸入過程中干擾的作用時(shí)間較短,因此在采集數(shù)字信號(hào)時(shí),可多次重復(fù)采集,直到若干次采樣結(jié)果一致時(shí),才認(rèn)為其有效。例如通過A/D轉(zhuǎn)換器測(cè)量各種模擬量時(shí),如果有干擾作用于模擬信號(hào)上,就會(huì)使A/D轉(zhuǎn)換結(jié)果偏離真實(shí)值。這時(shí)如果只采樣一次A/D轉(zhuǎn)換結(jié)果,就無法知道其是否真實(shí)可靠,而必須進(jìn)行多次采樣,得到一個(gè)A/D轉(zhuǎn)換結(jié)果的數(shù)據(jù)系列,對(duì)這些數(shù)據(jù)系列進(jìn)行各種數(shù)字濾波處理,最后才能得到一個(gè)可信度較高的結(jié)果值。
8XC51系列單片機(jī)是Intel公司生產(chǎn)的8位增強(qiáng)型單片機(jī),它是以80C51為核心的一種8位微控制器,也是一種面向事件控制應(yīng)用的優(yōu)選芯片,它與現(xiàn)有MCS 51系列單片機(jī)的指令系統(tǒng)兼容,下面以8XC51GB為代表對(duì)8XC51系列單片機(jī)作一簡(jiǎn)要闡述。