【摘要】外部中斷是單片機(jī)接收外部器件的信號而不占用CPU常規(guī)時(shí)間的實(shí)用技術(shù),是單片機(jī)技術(shù)的一個(gè)難點(diǎn)?;谖以簡纹瑱C(jī)實(shí)驗(yàn)室的基本實(shí)驗(yàn)條件,經(jīng)過近四個(gè)學(xué)期的研究和教學(xué)實(shí)踐驗(yàn)證,設(shè)計(jì)了適用于高職高專相關(guān)專業(yè)教學(xué)和自學(xué)單片機(jī)外部中斷的一種方法,實(shí)驗(yàn)表明該方法可以實(shí)現(xiàn)良好的教學(xué)效果。
【關(guān)鍵詞】單片機(jī);外部中斷;優(yōu)先級;教學(xué)方法
1.前言
在多年的機(jī)電一體化技術(shù)專業(yè)《單片機(jī)原理及應(yīng)用》課程的授課過程中,逐漸總結(jié)出了該課程的重點(diǎn)和難點(diǎn),其中,單片機(jī)外部中斷是重中之重。
2.實(shí)驗(yàn)設(shè)備介紹
我院采用的是自主研發(fā)的單片機(jī)實(shí)踐教學(xué)設(shè)備,如圖1所示。
圖1 單片機(jī)實(shí)踐教學(xué)設(shè)備
控制核心為STC89C52RC單片機(jī),采用DIP40封裝,該系列單片機(jī)具備極為方便的程序下載方式,是目前保有率較高的一款通用單片機(jī)。顯示器采用六個(gè)共陽極數(shù)碼管,P2口作為數(shù)碼管的位選信號,P0口信息作為數(shù)碼管的顯示段碼。兩類輸入設(shè)備均采用機(jī)械式自復(fù)位按鍵,其一是4*4矩陣按鍵,其二是P3口的獨(dú)立式按鍵。P3.2和P3.3分別是外部中斷0和外部中斷1的觸發(fā)信號,KEY2和KEY3兩個(gè)按鍵產(chǎn)生的低電平信號和由1到0的下降沿信號可以觸發(fā)中斷。設(shè)備的部分原理圖如圖2所示。
3.中斷原理
3.1 中斷基本原理
中斷技術(shù)是指CPU要中斷當(dāng)前正在處理而未完成的任務(wù)一,先去完成任務(wù)二,待任務(wù)二完成之后再繼續(xù)完成先前未完成的任務(wù)一。在這里任務(wù)一可以是C代碼的任何一個(gè)函數(shù)或者是主函數(shù),任務(wù)二是中斷處理子函數(shù)。
可以觸發(fā)單片機(jī)中斷的信號被叫做中斷觸發(fā)信號,單片機(jī)配置兩個(gè)外部中斷源INT0和INT1,他們的觸發(fā)信號分別是由P3.2和P3.3兩條管腳輸入的,低電平觸發(fā)INT0。外部中斷觸發(fā)信號的形式可以通過IT0和IT1兩個(gè)控制位來配置,控制位設(shè)置為0,其觸發(fā)相應(yīng)中斷的信號形式為低電平觸發(fā),若設(shè)置為1則為控制引腳出現(xiàn)由1到0的下降沿的時(shí)候觸發(fā)。兩類信號均可以通過連接在P3口的獨(dú)立式按鍵實(shí)現(xiàn)。
3.2 中斷優(yōu)先級
中斷優(yōu)先級有兩層意義。第一層意義是中斷源的默認(rèn)優(yōu)先級,他們依次從高到低是INT0,定時(shí)器0,INT1,定時(shí)器1,串行口。第二層意義是中斷源的自定義優(yōu)先級,一般設(shè)置兩級自定義優(yōu)先級,若將中斷源的優(yōu)先級控制位設(shè)置為高電平1,則為高級中斷,反之為低級中斷。自定義優(yōu)先級同為高級中斷或者低級中斷的中斷源,他們的中斷優(yōu)先級由默認(rèn)優(yōu)先級決定。
4.中斷的實(shí)驗(yàn)驗(yàn)證
為了充分解析單片機(jī)的中斷技術(shù),結(jié)合上述中斷原理,研究設(shè)計(jì)了一系列實(shí)驗(yàn)?zāi)K,各模塊詳見下列程序清單。
#include
unsigned char code table[]={0xc0, 0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,
0x8e};//共陽極數(shù)碼管顯示段碼。
unsigned char counter,ValueS,ValueG; //定義三個(gè)無符號字符型變量。
void DelayXms(unsigned char i);
void display();
void main()
{
EA=1;//打開總中斷“開關(guān)”。
EX0=1;//打開INT0“開關(guān)”。
EX1=1;//打開INT1“開關(guān)”。
IT0=1;//INT0觸發(fā)引腳P3.2低電平0觸發(fā)(IT0=1將配置該觸發(fā)引腳出現(xiàn)1->0下降沿時(shí)觸發(fā)中斷)。
IT1=0;//INT1觸發(fā)引腳P3.3低電平0觸發(fā)(IT1=1將配置該觸發(fā)引腳出現(xiàn)1->0下降沿時(shí)觸發(fā)中斷)。
PX0=0;//設(shè)置INT0為低級中斷。
PX1=1;//設(shè)置INT1為高級中斷。
while(1){display();}//主函數(shù)循環(huán)的主體是顯示工作。
}
void WINT0()interrupt 0//INT0處理函數(shù)。模塊一:實(shí)現(xiàn)計(jì)數(shù)值加一。
{
DelayXms(5);//消除機(jī)械式自復(fù)位按鍵的抖動(dòng)。
if(INT0==0)//INT0=P3.2。
{counter++;}//計(jì)數(shù)值加一。
if(counter==10)
{counter=0;}//計(jì)數(shù)值逢十清零。
}
void WINT11()interrupt 2//INT1處理函數(shù)。模塊二:實(shí)現(xiàn)最左邊一個(gè)數(shù)碼管顯示0。
{
P2=0x01;
P0=table[0];
display();
}
void display()//模塊三:最右邊兩位數(shù)碼管的動(dòng)態(tài)顯示計(jì)數(shù)值。
{
ValueS=counter/10;//取整,十位。
ValueG=counter%10;//取余,個(gè)位。
P2=0x20;
P0=table[ValueG];
DelayXms(3);
P2=0X10;
P0=table[ValueS];
DelayXms(3);
}
void DelayXms(unsigned char i)//模塊四:X毫秒延時(shí)。
{
while(--i)
{
unsigned char j = 250;
while(--j);
}
}
(1)實(shí)驗(yàn)一:設(shè)置INT0為下降沿觸發(fā)方式(IT0=1),中斷處理函數(shù)為模塊一計(jì)數(shù)值加一。實(shí)驗(yàn)結(jié)果表明單片機(jī)可以順利的將按鍵的按下次數(shù)顯示出來。
(2)實(shí)驗(yàn)二:設(shè)置INT0為低電平觸發(fā)方式(IT0=0)。實(shí)驗(yàn)結(jié)果表明單片機(jī)不能夠正常顯示按鍵按下次數(shù)。因?yàn)殡娖接|發(fā)方式的時(shí)候,只要觸發(fā)信號引腳是低電平就要申請中斷加一,人工按下機(jī)械式按鍵,將會(huì)被單片機(jī)掃描為多次低電平,出現(xiàn)重復(fù)加一,顯示亂碼的情況??梢詳U(kuò)展到INT1,收獲同樣的實(shí)驗(yàn)結(jié)果。
(3)實(shí)驗(yàn)三:采用默認(rèn)優(yōu)先級,設(shè)置INT0為低電平0觸發(fā),一直按下KEY2實(shí)現(xiàn)顯示0功能。設(shè)置INT1為下降沿觸發(fā),按下KEY3一次實(shí)現(xiàn)加一功能。實(shí)驗(yàn)第一步,單獨(dú)按KEY3可以順利實(shí)現(xiàn)加一功能;第二步,保持KEY2按下狀態(tài),因?yàn)榈碗娖?觸發(fā)的緣故,CPU將不斷的實(shí)現(xiàn)INT0的顯示0的功能,這時(shí)候按下KEY3是不能夠?qū)崿F(xiàn)加一功能的,因?yàn)镮NT0的優(yōu)先級要高于INT1。
(4)實(shí)驗(yàn)四:設(shè)置INT0實(shí)現(xiàn)加一功能而INT1實(shí)現(xiàn)顯示0的功能。實(shí)驗(yàn)第一步,單獨(dú)的KEY2和KEY3的功能可以分別實(shí)現(xiàn);第二步,在保持KEY3按下的情況下,再來按KEY2可以實(shí)現(xiàn)加一功能。
(5)實(shí)驗(yàn)五:通過自定義優(yōu)先級的方式將INT1設(shè)置為高級中斷(PX1=1),INT0設(shè)置為低級中斷(PX0=0),重復(fù)實(shí)驗(yàn)三和實(shí)驗(yàn)四可以達(dá)到類似的效果。
5.總結(jié)
經(jīng)過近幾年的實(shí)踐教學(xué),研究設(shè)計(jì)了適用于高職高專機(jī)電一體化技術(shù)相關(guān)專業(yè)教學(xué)和自學(xué)單片機(jī)外部中斷的一種方法,其中涵蓋了簡單可行的五個(gè)實(shí)驗(yàn),實(shí)驗(yàn)表明該方法可以實(shí)現(xiàn)良好的教學(xué)效果。
參考文獻(xiàn)
[1]脫建智.基于自適應(yīng)算法的圓柱狀旋轉(zhuǎn)顯示屏的研究與設(shè)計(jì)[J].電子世界,2013,7:155.
[2]脫建智.高職單片機(jī)技術(shù)的理論與實(shí)踐一體化教學(xué)研究[J].中國職工教育,2012.12:136.
[3]脫建智.一種基于單片機(jī)的矩陣式鍵盤的設(shè)計(jì)與應(yīng)用[J].中國新通信.2012,24:52.
作者簡介:脫建智(1981—),男,山東青州人,碩士,講師,現(xiàn)供職于濰坊工程職業(yè)學(xué)院,研究方向:機(jī)電一體化系統(tǒng)。