微型機系統與接口(含彙編)實驗七 8259中斷控制器實驗(綜合)

 一、實驗目的

練習8259中斷控制器的使用

繼續練習8255驅動LED的顯示。

掌握PC機中斷處理系統的基本原理。

學會編寫中斷服務程序。

二、實驗內容

要求:8259是用來管理中斷請求的,題目使用單脈衝發生電路,產生單脈衝作爲中斷源,引入8259,由中斷服務程序記錄中斷的次數(0-9,有能力的同學擴展下,做兩位數字的顯示),並在LED顯示器上顯示出來。

背景知識: PC機用戶可使用的硬件中斷只有可屏蔽中斷,由8259中斷控制器管理 。中斷控制器用於接收外部的中斷請求信號,經過優先級判別等處理後向CPU發出可屏蔽中斷請求。IBMPC、PC/XT機內有一片8259中斷控制器對外可以提供8箇中斷源:

8箇中斷源的中斷請求信號線IRQ0~IRQ7在主機的62線ISA總線插座中可以引出,系統已設定中斷請求信號爲“邊沿觸發”,普通結束方式。對於PC/AT及286以上微機內又擴展了一片8259中斷控制,IRQ2用於兩片8259之間級連,對外可以提供16箇中斷源:

中斷源

中斷類型號

中斷功能

中斷源

中斷類型號

中斷功能

IRQ0

08H

時鐘

IRQ8

070H

實時時鐘

IRQ1

09H

鍵盤

IRQ9

071H

用戶中斷

IRQ2

0AH

保留

IRQ10

072H

保留

IRQ3

OBH

串行口2

IRQ11

O73H

保留

IRQ4

0CH

串行口1

IRQ12

074H

保留

IRQ5

0DH

硬盤

IRQ13

075H

協處理器

IRQ6

0EH

軟盤

IRQ14

076H

硬盤

IRQ7

0FH

並行打印機

IRQ15

077H

保留

 

 

 

 

 

 

 

 

 

本實驗箱中使用了一級的8259中斷控制器。其偶地址端口地址:2B0H,基地址端口2B1H

8255的端口地址:

C8255        equ 28ah

K8255        equ 28bh

A8255        equ 288h

LED顯示0-9段碼:3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

電路連接:

  1. 8259片選CS--Y6(2B0H)
  2. 8259的INTA接+5V
  3. 8259的請求IN0—單脈衝
  4. 8255選通端:PC0-S0、
  5. 8255段碼端:PA0-a、PA1-b、PA2-c、PA3-d、PA4-e、PA5-f、PA6-g、PA7-dp
  6. 8255的CS接288H

四、實驗報告

  1. 8259的命令字各位的含義,本程序中設置的意義。
  2. 8259初始化的方法和步驟。
  3. 寫出程序代碼,並適當加註釋
DSEG SEGMENT
	O8259 EQU 2B0H		;8259偶地址端口
	J8259	EQU 2B1H		;8259奇地址端口
	K8255 EQU 28BH		;8255控制口地址
	A8255 EQU 288H		;8255A口地址
	C8255 EQU 28AH		;8255C口地址
	LED   DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DSEG ENDS

CODE SEGMENT
ASSUME CS:CODE, DS:DSEG
START:
MOV AX, DSEG
MOV DS, AX
MOV BX, OFFSET LED

;初始化8259
MOV DX, O8259			;8259偶地址端口
MOV AL, 13H				;控制字13H=00010011B,從右到左:要寫ICW4、單片、間隔爲8、上升沿觸發
OUT DX, AL				;ICW1

MOV DX, J8259			;8259奇地址端口
MOV AL, 00H				;控制字00H=00000000B
OUT DX, AL				;ICW2

MOV DX, J8259			;8259奇地址端口
MOV AL, 01H				;控制字01H=00000001B,從右到左:D08086/88系統、D1正常EOI、D2D3非緩衝方式、D4一般嵌套
OUT DX, AL				;ICW4

MOV DX, J8259			;8259奇地址端口
MOV AL, 00H				;控制字00H=00000000B
OUT DX, AL				;OCW1


MOV DX, K8255			;8255控制端口
MOV AL, 80H				;控制字80H=10000000B
OUT DX, AL				;將控制字寫入控制端口

MOV DX, C8255			;8255C口地址	
MOV AL, 00000001B			;只讓LED的第一位顯示
OUT DX, AL				;寫入C口

S1:					;顯示
MOV DX, A8255			;8255A口地址,輸出需要顯示的字符
MOV AL, DS:[BX]			;顯示的字
OUT DX, AL				;輸出到A口

S2:
MOV AL, 0CH				;控制字0CH=00001100B
MOV DX, O8259			;8259偶地址端口
OUT DX, AL				;OCW3
IN AL, DX				;從8259偶地址端口讀中斷狀態
MOV AH, AL
AND AL, 80H				;判斷是中斷
JZ S2					;跳到P2段,JZ此前的結果爲0的時候跳轉
AND AH, 07H				;判斷是IRO
JZ S3					;跳到P3段
MOV DX, O8259			;8259偶地址端口
MOV AL, 20H				;控制字20H=00100000B,001EOI命令
OUT DX, AL				;OCW2
JMP S2

S3:
INC BX				;BX指向數組下一個元素
CMP BX, 10				;判斷BX是否小於10
JE START				;跳到開始處
MOV DX, O8259			;8259偶地址端口
MOV AL, 20H				;控制字20H=00100000B
OUT DX, AL				;寫OCW2命令,使ISR的相應位復位(即發EOI命令)
JMP S1				;跳轉到P1

CODE ENDS
END START

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章