新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 對(duì)8259A的編程:統(tǒng)計(jì)中斷申請(qǐng)的次數(shù)到十燈全滅

對(duì)8259A的編程:統(tǒng)計(jì)中斷申請(qǐng)的次數(shù)到十燈全滅

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
DATA SEGMENT DATA ENDS

CODE SEGMENT ASSUME CS:CODE
ORG 11B0H ; 設(shè)置程序存儲(chǔ)的起始位置
START:
CLI ;關(guān)中斷,需要先關(guān)中
;初始化8255命令字
IOCONPT EQU 0FF2BH ;控制口
IOBPT EQU 0FF29H ;PB口
IOAPT EQU 0FF28H ;PA口
MOV AL,90H ;控制字存入AL
MOV DX,IOCONPT ;取8255控制字寄存器的端口地址存入DX
OUT DX,AL ; 控制字存入控制寄存器
;初始化8255 over
;初始化8259命令字
MOV DX,0FF80H ; 取8259的偶端口地址存入DX
MOV AL,13H ; ICW1控制字存入AL
OUT DX,AL ; 控制字存入ICW1
MOV DX,0FF81H ; 取8259的奇端口地址存入DX
MOV AL,0BH ; ICW2控制字存入AL 裝入的是中斷類(lèi)型號(hào)
OUT DX,AL ; 控制字存入ICW2,設(shè)置中斷類(lèi)型號(hào)
MOV AL,03H ; ICW4控制字存入AL
OUT DX,AL ; 控制字存入ICW4,設(shè)置中斷結(jié)束方式
;控制字寫(xiě)完了。
;修改中斷向量表
SUB AX,AX

本文引用地址:http://m.butianyuan.cn/article/201612/324151.htm

MOV ES,AX.

MOV AX,2CH
MOV DI,AX ;設(shè)置偏移地址
MOV AX,OFFSET INTWQ ;取偏移地址
CLD
STOSW ;存儲(chǔ)偏移地址
MOV AX,SEG INTWQ ;取段基址
STOSW ;存儲(chǔ)段基址

STI ;開(kāi)中斷
MOV BL,0 ;初始化中斷次數(shù)計(jì)數(shù)器
main:
mov al,00h ;主程序
mov dx,iobpt
out dx,al ;點(diǎn)亮所有的燈
jmp main
MOV AH,4CH ;程序的結(jié)束
INT 21H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTWQ PROC NEAR ;中斷子程序
CLI ;關(guān)中斷
PUSH AX

PUSH DX
PUSHF
INC BL ;中斷次數(shù)計(jì)數(shù)器加一
mov al,bl
mov dx,iobpt ;把中斷次數(shù)送到led
OUT DX,AL
CALL DELAY ;延時(shí)
cmp bl,0ah ;判斷是否達(dá)到10次
jz shuchu
jmp jiedian
shuchu:
MOV AL,0FFH ;燈全滅
mov dx,iobpt
OUT DX,AL
CALL DELAY
jiedian:
MOV AL,20H

OUT 0FF80H,AL
POPF

POP DX
POP AX

STI
IRET ;中斷返回
INT28 ENDP ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY PROC NEAR ;延時(shí)子程序的開(kāi)始
MOV CX,0FFFFH ;初始化計(jì)數(shù)次數(shù)
CC:NOP ;空操作
LOOP CC ;循環(huán)
RET ;子程序返回
DELAY ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CODE ENDS ;代碼段結(jié)束
END START ;源程序結(jié)束



關(guān)鍵詞: 8259A編程中斷申

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉