日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書(shū)頻道 > 電子 > 《計(jì)算機(jī)組成原理與匯編語(yǔ)言》 > 第5章 輸入輸出技術(shù)

第4節(jié) 中斷控制器8259

5.2.3 中斷控制器8259


·弄清芯片外部引線以便將它們連接到系統(tǒng)中;
·了解它們的工作方式和工作特點(diǎn),以便有選擇地應(yīng)用它們的某些工作方式;
·理解芯片內(nèi)部的控制字、命令字,以便對(duì)它們進(jìn)行編程;
·了解每塊芯片所占的地址,以便具體進(jìn)行連接;
·在上述基礎(chǔ)上實(shí)現(xiàn)對(duì)芯片的初始化及具體應(yīng)用。

下面我們就開(kāi)始具體介紹可編程中斷控制器8259。

   1. 8259的外部引線

     可編程中斷控制器8259外部引線圖如圖5.15所示。
 
      D0-D7為雙向數(shù)據(jù)線,與系統(tǒng)總線的數(shù)據(jù)線相連接。

       WR、RD 為寫(xiě)和讀控制信號(hào),與系統(tǒng)總線的讀寫(xiě)信號(hào)相連接。

       CS為片選信號(hào),只有CS 為低電平時(shí),才能實(shí)現(xiàn)CPU對(duì)8259的寫(xiě)或讀操作。 

       A0是8259內(nèi)部寄存器的選擇信號(hào)。 

       INT為8259的中斷請(qǐng)求輸出信號(hào),可直接接到CPU的INTR輸入端。

       INIT為中斷響應(yīng)輸入信號(hào)。 

       CAS0~CAS2為級(jí)聯(lián)控制線。

       SP/EN 為雙功能引線。

      IR0~IR7中斷請(qǐng)求輸入端。
 
   8259的內(nèi)部有多個(gè)寄存器,其中包括:

   中斷請(qǐng)求寄存器(IRR),其內(nèi)部保存著所有外部中斷源IR0~IR7的中斷請(qǐng)求狀態(tài)。
 
   中斷服務(wù)寄存器(ISR),用來(lái)保存所有正在服務(wù)的中斷源。當(dāng)8259收到中斷結(jié)束命令時(shí),其寄存的狀態(tài)進(jìn)行調(diào)整。

   中斷屏蔽寄存器(IMR),保存著被屏蔽的所有中斷源。其屏蔽功能可用命令修改。

2. 8259的工作方式

       通過(guò)編程,可以設(shè)置8259的不同工作方式,以便適應(yīng)不同環(huán)境的需要。這也說(shuō)明8259工作的靈活性和適應(yīng)性。

   (1) 8080/85與8086/88工作模式
   (2) 特殊屏蔽方式

    在正常情況下,當(dāng)一個(gè)中斷請(qǐng)求被響應(yīng)時(shí),8259將禁止所有同級(jí)及更低優(yōu)先級(jí)中斷請(qǐng)求,這就稱為一般屏蔽方式。
     
   但是,在一特殊情況下,希望也允許較低優(yōu)先級(jí)的中斷請(qǐng)求產(chǎn)生中斷。這時(shí),可用特殊屏蔽方式。要做到這一點(diǎn),需要利用后面將要提到的8259初始化命令字。

    一個(gè)特殊屏蔽方式的示意圖如圖5.19所示,其中SMM等需要參看后面的命令字的定義。

(3) 中斷結(jié)束

   8259中,中斷結(jié)束是利用復(fù)位ISR中的相應(yīng)位來(lái)實(shí)現(xiàn)的。

   具體有兩種方法:

   ① 自動(dòng)結(jié)束。
 
   ② 利用命令結(jié)束。
   (a)一般中斷結(jié)束命令(EOI)。
   (b)特殊中斷結(jié)束命令(SEOI)。

(4)優(yōu)先級(jí)循環(huán)

   根據(jù)8259命令字的規(guī)定,它有兩種優(yōu)先級(jí)規(guī)定:循環(huán)優(yōu)先級(jí)和固定優(yōu)先級(jí)。
   
   循環(huán)優(yōu)先級(jí)有3個(gè)結(jié)構(gòu):自動(dòng)優(yōu)先級(jí)循環(huán)用于中斷源具有相等優(yōu)先級(jí)的情況。

(5)查詢狀態(tài)

   通過(guò)將操作命令字OCW3中的P位置1(后面要提到),可以查詢8259的狀態(tài)。

3. 8259的內(nèi)部控制字


(1)初始化命令字

   ①初始化命令字ICW1。在A0=0,D4=1時(shí)為寫(xiě)入,各位的功能見(jiàn)圖5.21。
   ②初始化命令字ICW2。 
   ③初始化命令字ICW3。
   ④初始化命令字ICW4。 

 

   (2) 操作命令字OCW

       ①操作命令字OCW1。

       ②操作命令字OCW2。 

   R為優(yōu)先級(jí)循環(huán)控制位,R=1為循環(huán)優(yōu)先級(jí);R=0為固定優(yōu)先級(jí)。 L2、L1、L0為系統(tǒng)最低優(yōu)先級(jí)編碼,用它們來(lái)指定哪個(gè)IR優(yōu)先級(jí)最低。

   EOI是中斷結(jié)束命令。該位為1時(shí),將復(fù)位現(xiàn)行中斷的中斷服務(wù)寄存器中的相應(yīng)位。在非自動(dòng)EOI的情況下,需要用OCW2來(lái)復(fù)位當(dāng)前最高優(yōu)先級(jí)所對(duì)應(yīng)的位。

   SL用于選擇L2、L1、L0編碼。當(dāng)SL=1時(shí),L2~L0編碼有效。SL=0時(shí),L2~L0編碼無(wú)效。除上述所說(shuō)的外,R,SL,EOI編碼功能見(jiàn)圖5.26和表5.1。

     ③操作命令字OCW3。OCW3可用以設(shè)置查詢方式、特殊屏蔽方式以及讀8259的中斷請(qǐng)求寄存器IRR、

      中斷服務(wù)寄存器ISR、中斷屏蔽寄存器IMR的當(dāng)前狀態(tài)。OCW3各位功能如圖5.27所示。

   4. 8259的尋址與連接

    為了使8259按照設(shè)計(jì)者的要求工作,就需要利用軟件將初始化命令及操作命令字寫(xiě)入8259;

    另一方面為了知道8259的工作狀態(tài),又必須將其內(nèi)部的一些寄存器的內(nèi)容讀出來(lái)。對(duì)寄存器和命令的訪問(wèn)控制如表5.2所示。

 

 

 

5. 8259的初始化使用

   下面是8259的初始化程序:

   SET59A:MOV DX,0FF00H ;8259A的地址,A0=0

   MOVAL,13H; ICW1,LT1M=0,單片,需要ICW4 

   OUT DX,AL

   MOV DX,0FF02H;8259地址,此時(shí)A0=1

   MOV AL,48H;ICW2,中斷向量碼

   OUT DX,AL
   MOV AL,03H ;ICW4,8086/88模式,自動(dòng)EOI,非緩沖

   OUT DX,AL;方式,一般全嵌套

   MOV AL,0E0H; OCW1,屏蔽IR5,IR6,IR7

   因?yàn)槲从玫竭@3個(gè)中斷輸入 

   OUT DX,AL
   

 

 


   MOV DX,0FF02H

   MOV AL,0;取OCW1為00H

   OUT DX,AL;取00H寫(xiě)入IMR

   IN AL,DX;讀IMR

   OR AL,AL;判斷其內(nèi)容為00H否

   JNZ IMERR

   MOV AL,0FFH

   OUT DX,AL

   IN AL,DX

   ADD AL,1

   JNZ IMERR
      在讀IMR時(shí),可直接在對(duì)應(yīng)A0=1的地址上讀出;但要讀IRR或ISR時(shí),則必須先向8259寫(xiě)入一個(gè)命令字OCW3。以下是讀出ISR內(nèi)容的一段程序:

   MOV DX,0FF00H ;對(duì)應(yīng)A0=0

   MOV AL,0BH ;0BH為OCW3

   OUT DX,AL ;OCW3寫(xiě)入8259

   IN AL,DX ;讀出ISR的內(nèi)容,放在AL中

   具體做法如下:

   (1) 編寫(xiě)20ms中斷服務(wù)程序

   CLOCK PROC FAR

   PUSH AX

   PUSH SI

   MOV AX,SEGTIMER

   MOV DS,AX

   MOV SI,OFFSETTIMER

   MOV AL,[SI] ;取50次計(jì)數(shù)

   INC AL

   MOV[SI],AL

   CMP AL,50 ;判1s到否?

   JNE TRNED

   MOV AL,0

   MOV [SI],AL 

   MOV AL,[SI+1] ;取60s計(jì)數(shù)

   ADD AL,1

   DAA

   MOV [SI+1],AL 

   CMP AL,60H ;判1min到否?

   JNE TRNED

   MOV AL,0

   MOV [SI+1],AL 

   MOVAL, [SI+2] ;取60min計(jì)數(shù)

   ADD AL,1

   DAA

   MOV [SI+2],AL

   CMP AL,60H ;判1h到否?

   JNE TRNED

   MOV AL,0

   MOV [SI+2],AL

   MOV AL,[SI+3];取小時(shí)計(jì)數(shù)
   ADD AL,1

   DAA

   MOV [SI+3],AL

   CMP AL,24H

   JNE TRNED

   MOV AL,0

   MOV [SI+3],AL

   TRNED:POP SI

   POP AX

   STI

   IRET

   ENDP


   (2)確定中斷向量,初始化8259


   (3)初始化中斷向量表


   (a)直接編程初始化中斷向量表

   INTITB:MOV AX,0000H

   MOV DS,AX

   MOV SI,0120H

   MOV DX,OFFSETCLOCK

   MOV [SI],DX

   MOV DX,SEGCLOCK

   MOV [SI+2],DX
(b) DOS系統(tǒng)調(diào)用

   若在DOS下工作,則可采用DOS系統(tǒng)調(diào)用:

   INT 21H的功能25H

   25H→AH

   中斷向量碼→AL

   中斷服務(wù)程序段:偏移量→DS:DX
 程序如下: 

   MOV AH,25H ;功能號(hào)

   MOV AL,48H ;中斷向量碼

   MOV DX,SEGCLOCK

   MOV DS,DX

   MOV DX,OFFSETCLOCK

   INT21H
  6. 8259的級(jí)聯(lián)

     當(dāng)微型機(jī)系統(tǒng)中的中斷源較多,一片8259不能解決問(wèn)題時(shí),可以采用級(jí)聯(lián)工作方式。這時(shí)指定一片8259為主控芯片,它的INT接到CPU上而其余的8259芯片均作為

從屬芯片,其INT輸出接到主控芯片的IR輸入端。由于主控8259有8個(gè)IR輸入端,故一個(gè)主控8259可以連接8片從屬8259,最多允許有64個(gè)IR輸入。

?
宣恩县| 通城县| 河曲县| 德惠市| 鄄城县| 吴江市| 利川市| 鄂托克旗| 慈溪市| 寻甸| 蓬莱市| 山东省| 双牌县| 永靖县| 韩城市| 和平区| 张家川| 克拉玛依市| 亳州市| 运城市| 平利县| 公主岭市| 保靖县| 乐亭县| 祁连县| 潼南县| 贵州省| 绵竹市| 进贤县| 岳普湖县| 增城市| 宁蒗| 屯留县| 始兴县| 清涧县| 桂平市| 泗阳县| 抚顺县| 大竹县| 休宁县| 定安县|