微机----------------8255A的编程

初始化命令字有四个ICW1、ICW2、ICW3、ICW4
首先输入ICW1,然后输入ICW2、ICW3、ICW4
由ICW1决定是否输入ICW3、ICW4系统复位后只设置一次,必须顺序填写

操作命令字OCW1、OCW2、OCW3

在这里插入图片描述

ICW1初始化命令字

在这里插入图片描述

例题

在这里插入图片描述

ICW2(设置中断类信号)初始化命令字

在这里插入图片描述

ICW3标识主片从片初始化命令字

在这里插入图片描述

例题

在这里插入图片描述

ICW4方式控制初始化命令字

在这里插入图片描述






操作命令字

由CPU向8259A送三个字节的操作命令字OCW,用以规定8259A的工作方式。
                    中断屏蔽
                    结束中断
                    优先权循环
                    中断状态

操作命令字是在应用程序中设置的,设置时,顺序上没有严格的要求。OCW1必须写入奇地址端口,OCW2、OCW3必须写入偶地址端口。

OCW1-中断屏蔽操作命令字

OCW1是中断屏蔽命令字,命令字中的M7-M0对应IMR的各位。Mi=1表示该中断被屏蔽Mi=0表示该中断开放
在这里插入图片描述

例题

在这里插入图片描述

⭐OCW2优先权循环方式和中断结束方式操作字

在这里插入图片描述

L2-L0

当SL=1时有效,当设置为特殊结束EOI命令时,指出清除中断寄存器中的哪一位,
当设置为特殊优先级循环时,指出循环开始时设置的最低优先级

R=1:
    循环优先权

R=0:
    固定优先权

SL=1:
      由L0-L2指定IRi位;

SL=0:
      由L0-L2无效;EOI=1:中断结束

OCW3特殊屏蔽方式和查询方式的命令

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结
    由于8259A只设计了一个地址信号A0,所以其端口地址不太规范:
A0=0时,可以写入ICW1、OCW2、OCW3
当A0=1时,可以写入ICW2-ICW4、OCW1

状态读取
对于IMR,可以在任意时刻,使用IN指令,从奇地址端口读取。
对于ISR、IRR,需要先送出读状态命令字,由OCW3形成,然后IN指令,从偶地址端口读出。如果要多次读同样的寄存器,只需写一次命令字即可。
查询方式工作
    是否有中断,是通过发P命令后,从偶地址读取状态字。

8259A的应用举例

(一)初始化

MOV AL,13H	;00001 011
OUT 20H,AL	;设置ICW1,上升沿触发,单片不设ICW3,需设置ICW4

MOV AL,08H
OUT 21H,AL	;设置中断类型号基值08 ICW2

MOV AL,0DH	;设置ICW4,缓冲方式主片、非自动EOI
OUT 21H,AL

MOV AL,0H	;写OCW1,允许所有的中断
OUT 21H,AL

(二)送中断向量

中断向量送入中断向量表

例如异步通信中断IR4,中断类型码为12,那么其中断向量在中断类型表中的位置为12*4=48

在这里插入图片描述

MOV AX,	0	;中断入口表
MOV ES,AX	;段地址送ES

MOV BX,n*4	;偏移量送DI

MOV AX,OFFSET INTRAD
MOV ES:[BX],AX

MOV AX,SEG INTRAD
MOV ES:[BX+2],AX

STI	;恢复中断

(三)中断服务子程序

;保护现场
PUSH DS
PUSH AX
PUSH CX
PUSH DX

STI 	;开中断,允许中断嵌套
...		;执行中断处理程序
CLI		;关中断

;恢复现场
POP DX
POP CX
POP AX
POP DS

MOV AL,20H	;中断结束命令OCW2
OUT 20H,AL

IRET	;中断返回
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值