新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 對8259A的編程:統計中斷申請的次數到十燈全滅

        對8259A的編程:統計中斷申請的次數到十燈全滅

        作者: 時間:2016-12-01 來源:網絡 收藏
        DATA SEGMENT DATA ENDS

        CODE SEGMENT ASSUME CS:CODE
        ORG 11B0H ; 設置程序存儲的起始位置
        START:
        CLI ;關中斷,需要先關中
        ;初始化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 裝入的是中斷類型號
        OUT DX,AL ; 控制字存入ICW2,設置中斷類型號
        MOV AL,03H ; ICW4控制字存入AL
        OUT DX,AL ; 控制字存入ICW4,設置中斷結束方式
        ;控制字寫完了。
        ;修改中斷向量表
        SUB AX,AX

        本文引用地址:http://www.104case.com/article/201612/324151.htm

        MOV ES,AX.

        MOV AX,2CH
        MOV DI,AX ;設置偏移地址
        MOV AX,OFFSET INTWQ ;取偏移地址
        CLD
        STOSW ;存儲偏移地址
        MOV AX,SEG INTWQ ;取段基址
        STOSW ;存儲段基址

        STI ;開中斷
        MOV BL,0 ;初始化中斷次數計數器
        main:
        mov al,00h ;主程序
        mov dx,iobpt
        out dx,al ;點亮所有的燈
        jmp main
        MOV AH,4CH ;程序的結束
        INT 21H
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        INTWQ PROC NEAR ;中斷子程序
        CLI ;關中斷
        PUSH AX

        PUSH DX
        PUSHF
        INC BL ;中斷次數計數器加一
        mov al,bl
        mov dx,iobpt ;把中斷次數送到led
        OUT DX,AL
        CALL DELAY ;延時
        cmp bl,0ah ;判斷是否達到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 ;延時子程序的開始
        MOV CX,0FFFFH ;初始化計數次數
        CC:NOP ;空操作
        LOOP CC ;循環
        RET ;子程序返回
        DELAY ENDP
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        CODE ENDS ;代碼段結束
        END START ;源程序結束



        關鍵詞: 8259A編程中斷申

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 奉节县| 珠海市| 黄龙县| 庐江县| 淮安市| 长海县| 诸城市| 威宁| 博野县| 常山县| 东安县| 怀柔区| 丹阳市| 五大连池市| 赫章县| 尼玛县| 麻栗坡县| 凤庆县| 六枝特区| 蓬溪县| 新兴县| 竹山县| 农安县| 台北市| 新乡县| 无锡市| 康乐县| 郧西县| 和林格尔县| 阜宁县| 安西县| 苍南县| 靖远县| 青铜峡市| 仁化县| 文山县| 平潭县| 虞城县| 平山县| 调兵山市| 拉萨市|