如何擴(kuò)展單片機(jī)中的中斷?
MCS—51系列單片機(jī)內(nèi)部只需兩個(gè)外部接連源輸入端,當(dāng)外部接中斷連源多于兩個(gè)時(shí),就必須進(jìn)行拓寬,下面介紹幾種簡(jiǎn)略的拓寬辦法:
一、選用硬件央求和軟件查詢的辦法:
這種辦法是:把各個(gè)接連源通過硬件“或非(高有用,如CD4002)”(與,低有用)門引進(jìn)到單片機(jī)外部接連源輸入端(INT0或INT1),一同再把外部接連源送到單片機(jī)的某個(gè)輸入輸出端口,這么當(dāng)外部接連時(shí),通過“或非”(與)門致使單片機(jī)接連,在接連效能程序中再通過軟件查詢,進(jìn)而轉(zhuǎn)相應(yīng)的接連效能程序。
明顯,這種辦法的接連優(yōu)先級(jí)取決于軟件查詢的次第。其硬件銜接和軟件編程如下:
Void zhongduan (void) interrupt 0 using 3 //接連函數(shù)
{
EX0=0;//關(guān)接連
If(P0_0=1) { *****}//接連查詢
If(P0_1=1) { *****}//接連查詢
If(P0_2=1) { *****}//接連查詢
EX0=1;開接連
}
二、用一般二極管構(gòu)成接連選擇
四種拓寬51單片機(jī)接連的辦法
拓寬的8個(gè)外部接連源均通過二極管向I N T(x=0或I)央求接連。當(dāng)某個(gè)外部接連源央求接連效能時(shí)輸出低電平,單片機(jī)的I NT 經(jīng)二極管接地電平,單片機(jī)滿意照料外部接連(I N T)央求條件,照料接連,程序當(dāng)即轉(zhuǎn)向I NT 對(duì)應(yīng)的接連進(jìn)口地址處初步施行接連效能程序,通過軟件查詢PI.0~P1.7口外接連源的情況,以辨認(rèn)提出央求的外擴(kuò)接連源,并轉(zhuǎn)向接連效能程序?yàn)槠湫?,其查詢次第即為外部拓寬接連源的接連優(yōu)先級(jí)次第。在圖中,是選用PI.0~PI.7作為外擴(kuò)接連源央求的情況信息輸入端口。
有點(diǎn)相似第一種辦法。
三、用定時(shí)器/計(jì)數(shù)器作外部接連
單片機(jī)的定時(shí)器/計(jì)數(shù)器是一個(gè)加一計(jì)數(shù)器,每當(dāng)計(jì)數(shù)輸入端有一個(gè)“1—0”的負(fù)跳變時(shí),計(jì)數(shù)器加一,當(dāng)加一計(jì)數(shù)器溢出時(shí),就向CPU宣告接連,運(yùn)用這個(gè)特性
來拓寬接連的辦法是:首先把定時(shí)器/計(jì)數(shù)器設(shè)置成計(jì)數(shù)辦法,并預(yù)置滿值,把外部接連源輸入到P3口第4引腳或第5引腳(計(jì)數(shù)器輸入端),這么就可以運(yùn)用
定時(shí)器/計(jì)數(shù)器作為單片機(jī)外部接連了。留神這種辦法的接連效能的進(jìn)口地址應(yīng)
在000BH或001BH。
四、用專用接連拓寬芯片8259A
8259A是可編程接連控制接口,單片機(jī)控制八級(jí)接連。在系統(tǒng)中還可選用級(jí)聯(lián)辦法,一個(gè)主片可級(jí)聯(lián)8個(gè)從片,構(gòu)成64級(jí)接連處理系統(tǒng)。
8259A的主要功能如下:
①一片8259A可以接受并管理8級(jí)可屏蔽中斷請(qǐng)求,通過9片8259A級(jí)聯(lián)可擴(kuò)展至64級(jí)可屏蔽中斷優(yōu)先控制。
②對(duì)每一級(jí)中斷都可以通過程序來屏蔽或允許。
③在中斷響應(yīng)周期,8259A可為CPU提供相應(yīng)的中斷類型碼。
④具有多種工作方式,并可通過編程來加以選擇。
初始化命令字的作用是什么?如何對(duì)8259A進(jìn)行初始化編程?
答案:通過初始化編程向8259A寫入相應(yīng)的初始化命令I(lǐng)CW,可以使芯片處于一個(gè)規(guī)定的基本工作方式,并在此方式下進(jìn)行工作。8259A的初始化命令字共有4個(gè)ICW1-ICW4,進(jìn)行初始化時(shí)要求ICW1-ICW4按一定的順序?qū)懭搿?
STC15系列單片機(jī)最多有4個(gè)外部中斷,有時(shí)還是覺得不夠用, 如我們用它做自動(dòng)機(jī)的限位保護(hù)時(shí)就需要多個(gè)中斷.例如點(diǎn)膠機(jī)三軸限位就要6個(gè)中斷.加上點(diǎn)膠閥操控,上料控制共十幾個(gè)也不算多。外部中斷擴(kuò)展大致有以下幾種方法:
1. 使用專用芯片,如8259A。
2. 將內(nèi)部定時(shí)/計(jì)數(shù)器做計(jì)數(shù)器使用,設(shè)置使其當(dāng)計(jì)數(shù)值為1時(shí)即觸發(fā)中斷,就可當(dāng)外部中斷用.
3. 用2的方法可將3路CCP/PCA當(dāng)成外部中斷使用。
4. 外部中斷端口二極管并接輸入再加軟件查詢定位輸入源法。
4 個(gè)I/O口外加一片CD4051與8只1開關(guān)二極管將INT0由一個(gè)擴(kuò)展為八個(gè)。
軟件實(shí)現(xiàn):首選使能中斷及INT0中斷,將INT0設(shè)置成下降沿觸發(fā)中斷,在中斷函數(shù)中寫出掃描觸發(fā)中斷源的代碼,對(duì)不同的中斷源,寫出相應(yīng)的響應(yīng)代碼。注意:方法4的實(shí)時(shí)性相對(duì)較差,因?yàn)檩斎朐磼呙瑁枰恍r(shí)間,要求高時(shí),因謹(jǐn)慎選用。