本文主要是介绍8259A PIC 总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
处理器与外设的数据通信,一般有三种方式:程序直接I/O下面介绍8259A
8259A
中断屏蔽寄存器为一个8
中断屏蔽寄存器每一位代表一种外设:
0
1
2
3
4
5
6
7
命令寄存器每一位表示如下:
0 L0
1 L1
2 L2
3 0
4 0
5 EOI
6 SL
7 R
EOI
MOV AL
OUT 21H
中断程序如何工作:
1.
2.
3.
4.
一个自定义中断的例子:(响应定时器中断)
DATA_SEG SEGMENT
MSG DB 'TIMEOUT!' , 0DH , 0AH , '$'
DATA_SEG ENDS
SUB_FUNC_CODE SEGMENT
ASSUME CS:SUB_FUNC_CODE , DS:DATA_SEG
ALARM PROC FAR
PUSH DS
PUSH AX
PUSH DX
STI
MOV AX , DATA_SEG
MOV DS , AX
MOV DX , OFFSET MSG
MOV AH , 09H
INT 21H
POP DX
POP AX
POP DS
IN AL , 20H
OR AL , 00100000B
OUT 20H , AL
CLI
IRET
ALARM ENDP
SUB_FUNC_CODE ENDS
MAIN_CODE SEGMENT
ASSUME CS:MAIN_CODE
MAIN PROC FAR
START:
MOV AH , 35H
MOV AL , 1CH
INT 21H
PUSH ES
PUSH BX
MOV BX , SEG ALARM
MOV DS , BX
MOV DX , OFFSET ALARM
MOV AH , 25H
MOV AL , 1CH
INT 21H
IN AL , 21H
AND AL , 11111110B
OUT 21H , AL
STI
MOV CX , 50000
OUTTER:
PUSH CX
MOV CX , 50000
INNER:
LOOP INNER
POP CX
LOOP OUTTER
POP DX
POP DS
MOV AH , 25H
MOV AL , 1CH
INT 21H
MOV AH , 4CH
INT 21H
MAIN ENDP
MAIN_CODE ENDS
END START
这篇关于8259A PIC 总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!