摘 要:單片機的發(fā)展是計算機領域日益精細化的結果和產物。文章簡明概述了單片機的概念、類型,著重提出了C語言中斷中存在的部分問題及相關解決方案。本文試圖將單片機的中斷技術與實際工業(yè)生產相結合,運用的案例也是實際生活得來,以期更加深入地交流單片機中斷技術的使用情況和問題解決方案。
關鍵詞:單片機;語言;中斷
中圖分類號:TP311
1 相關概念及分類
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器、計數(shù)器等功能集成到一塊硅片上構成的一個小且完善的微型計算機系統(tǒng)。簡而言之,一塊芯片就是一臺計算機,它雖然沒有普通計算機的外觀,但卻具有了微型計算機包含的基本組成結構和特有的控制應用功能。同時,它在體積、結構和功能特點,在實際應用中能夠完全融入應用系統(tǒng)中,也稱為嵌入式微控制器。而且它應用在極其廣泛的各個領域,幫助人類實現(xiàn)許多不可想象的功效,給生活和工作帶來更多的便利。
單片機是微型計算機領域發(fā)展的重要分支,是專門面向控制的微處理器件。從工作方式分為,硬件和軟件兩個組成部分。
硬件根據(jù)電路的功能和配置分為三類:基本功能類,控制功能類,輔助功能類。
軟件根據(jù)其要實現(xiàn)的功能分為兩類:管理程序和應用程序。
從不同角度講,它亦可以分為三個大的類型。
第一類:通用型與專用型。按照單片機的適用范圍劃分。
第二類:總線型與非總線型。按照單片機是否提供并行總線來區(qū)分。
第三類:工控型與家電型。按照單片機應用的領域區(qū)分。
2 C語言中斷的各種問題及解決方案
單片機程序設計語言是其在開發(fā)系統(tǒng)中使用的語言,在其開發(fā)系統(tǒng)中可以使用機器語言,匯編語言和高級語言三種。單片機的中斷主要指CPU在正常運行時外部或內部發(fā)生了請求CPU迅速處理的事件,CPU暫時中止正在執(zhí)行的程序,轉去執(zhí)行提出中斷請求的服務程序,執(zhí)行完畢后返回原程序繼續(xù)執(zhí)行的過程。
引起CPU中斷的設備或事件稱為中斷源。中斷源向CPU發(fā)出的請求處理信號稱為中斷申請或中斷請求。CPU暫時中斷正在處理的事情,轉去處理突發(fā)事件的過程稱為中斷響應。
這種語言中斷,看起來很普通,但在實際生產中應用卻很廣泛。在工業(yè)生產中,如果我們的機器需要在特定時段進行加水或是加藥工作,而且數(shù)量固定,但操作之后又要恢復到原來的運行中就需要運用語言中斷程序設計。我們就需要對單片機進行中斷編程,實際應用中就可以實現(xiàn)機器的自動化生產,并且保證不出現(xiàn)人為原因的失誤,減少損失和浪費。
首先,關于如何運用語言中斷對設備進行簡單操作。中斷服務的子程序的最后命令必然為中斷返回指令RETI。在這一過程中,CPU響應中斷請求后進入中斷服務程序,在返回RETI前卻要注意標志位的清除問題。使用C語言進行清除有以下幾種方法:
IE1=0;//清除外部中斷INT1請求標志
TF0=0;//清除定時器T0中斷請求標志
TF0=1;//清除定時器T1中斷請求標志
R1=0;//串行通訊接收中斷請求標志
T1=0;// 串行通訊發(fā)送中斷請求標志
下面是簡單的一則語言中斷例子,說明一部小型電動玩具在運行過程中如何運用C語言中斷來完成其一種演示后繼續(xù)原來的操作,也可以重復實施語言中斷,這樣電動玩具的演示種類也可以逐步增加。
#include
Void init(void)//聲明中斷初始
{EA=1;//中斷總開關
{EXO=1;//開中斷0開關。中斷1為,EX1=1;
IT1=1;//采用邊沿觸發(fā),下降沿有效。IT1=0為低電平觸發(fā)中斷。
}
Main()
{init(),調用中斷初始化函數(shù)
==
===主程序;
}
Void in _0(void)interrupt0//中斷服務函數(shù)
{==
==要服務的程序
}
其次,如何處理好中斷優(yōu)先級的關系。不同類型的單片機有不同數(shù)量的中斷源,但中斷優(yōu)先級一般只有高級和低級兩種。CPU在處理不同優(yōu)先級的中斷時,又會出現(xiàn)中斷嵌套。中斷嵌套可能是兩級甚至更多。越精密的儀器設備,多級嵌套出現(xiàn)的可能性越大,因為人們對高精尖的儀器有著更加苛刻的要求,希望通過對其發(fā)出指令,而實現(xiàn)自己對生活、工作的更高享受和更多用途。
也可以通過程序設置中斷的允許或屏蔽來設置中斷的優(yōu)先級。
例如,設置定時器和串行口中斷為高優(yōu)先級,兩個外部中斷為低優(yōu)先級,如何設置IP的值。
IP=0x3a;
匯編語言程序:
(1)使用字節(jié)操作指令:
MOV IP,#3AH
(2)使用位操作指令:
CLR PXO;設置外部中斷0為低級中斷
CLR PX1;設置外部中斷0為低級中斷
SETB PT0;置定時器/計數(shù)器0為高級中斷
SETB PT1;置定時器/計數(shù)器1為高級中斷
SETB PS;置串行口中斷為高優(yōu)先級
SETB PT2;置定時器/計數(shù)器2為高級中斷
由于復位后IP=OOH,外部中斷可不設置。
最后,中斷響應分為三個階段:中斷采樣并置位,查詢標志,響應中斷。一般來說,中斷響應的最短時間為3個機器周期,最長為8個機器周期。如果我們對有機器設備的特殊要求,就需要事先了解單片機的機器周期,能否在中斷響應的機器周期內完成中斷要求,是我們需要克服和研究的問題。
如果人為的中斷請求被機器接收并正在執(zhí)行,但中斷響應周期無法滿足中斷請求,就會造成程序的混亂和操作的失誤。即使優(yōu)先級被機器接收并合理安排,但中斷響應的時間也必須考慮進去,我們可以致力于中斷響應時間的機器周期縮短,延長中斷請求時間,充分滿足我們的生活和工作需要。
中斷響應結束就要執(zhí)行中斷服務,要保護現(xiàn)場,中斷處理程序,恢復現(xiàn)場三個步驟完成。特別是要保護現(xiàn)場免受破壞,在中斷返回時需要使用RETI指令,不能用RET來替代。
綜上所述,單片機的應用范圍廣泛,適用性強,且功能強大,發(fā)展前景看好。但在具體的操作和使用過程中,仍然存在一些技術性的難題和弊端,需要技術人員在實際應用不斷完善和思考,推進單片機的深入廣泛應用,為社會發(fā)展提供更先進更優(yōu)厚的服務和技術。
參考文獻:
[1]馮立杰,劉長泉.談8031單片機中斷系統(tǒng)的增強方法[J].武警工程學報,2000(02).
[2]胡坤.單片機的中斷技術[J].遼寧師專學報(自然科學版),2003(02).
[3]陳靜.單片機應用系統(tǒng)中的編程語言[J].淮北職業(yè)技術學院學報,2009(01).
[4]劉益,鄧祖明.單片機中斷服務程序處理方法[J].宜賓學院學報,2009(06).
作者單位:襄陽職業(yè)技術學院,湖北襄陽 441000