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