- 1、本文档共127页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中断程序举例 PC机中主8259A的I/O地址为20H和21H,中断向量码为08H; 中断请求从IR6引入,故中断类型号为0EH; 主程序如下: ;保存原来的中断向量 MOV AH,35H MOV AL,0EH ;中断类型码 INT 21H ;取原中断向量(在ES:BX中) MOV SAVE_IP,BX ;保存原来的中断向量 MOV SAVE_CS,ES ;设置自己的中断向量 PUSH DS MOV DX,OFFSET MY_INT MOV AX,SEG MY_INT MOV DS,AX ;DS:DX的内容为MY_INT的首地址 MOV AH,25H MOV AL,0EH INT 21H ;设置自己的中断向量 POP DS ;初始化堆栈指针 MOV SP,MY_STACK_TOP ;设置8259A的中断屏蔽字 IN AL,21H AND AL ;开放IR6中断 OUT 21H,AL STI …… 其他代码放在这里 …… MYINT PROC FAR PUSHA … 中断服务程序主体 … POPA MOV AL,20H ;EOI命令 OUT 20H,AL ;写OCW2 STI IRET MYINT ENDP 中断服务子程序如下: 节 * BUF(ICW4的D3)用来指示8259的数据线D0-D7与系统总线D0-D7连接中间有无缓冲器。如果有缓冲器,则在中断响应过程中应打开缓冲器,保证在这时传送中断向量码。而在对8259编程时,又能保证数据正确地写入8259.这时,可用8259 的#SP/#EN信号输出作为控制信号。 在非缓冲方式下, #SP/#EN用来指定本8259是主控芯片还是从属芯片。当#SP=1为主片;#SP=0为从属片。 中断服务程序 ┇ 向从PIC发EOI命令 读从PIC的ISR 全0? 向主PIC发EOI命令 Y IRET 恢复现场 N 特殊全嵌套方式下的EOI处理 只有当从8259A的中断全部处理完后,才能向主8259A发EOI命令。 六、级联工作方式 单片8259A可支持8个中断源; 采用多片8259A级联,可最多支持64个中断源。 n片8259A可支持8*(n-1)+8-(n-1)=7n+1个中断源; 级联时只能有一片8259A为主片,其余的均为从片; 涉及到的8259A引脚包括: CAS0 --- CAS2 SP/EN IRi INT 主片 8259A IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INT INTR INTA INTA 从片1 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INT INTA 从片8 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INT INTA ··· 级连电路连接方法 主片、从片有不同的地址; 主片、从片分别进行编程。 6.5.4 8259A的编程使用 8259A的控制命令分为 初始化命令字ICW ICW1~ICW4 向8259A写入ICW的过程称为初始化编程 操作命令字OCW OCW1~OCW3 向8259A写入OCW的过程称为操作方式编程 8259A内部寄存器的寻址方法 /CS /RD /WR A0 D4 D3 读写操作 0 1 0 0 0 0 写OCW2 写OCW3 写ICW1 写ICW2,ICW3,ICW4,OCW1(顺序写入) 0 0 1 0 1 x 1 x x 0 0 1 0 1 x x 读出IRR、ISR(由OCW3区分) 读出IMR 需要/CS、A0、/RD、/WR和D4、D3的配合 内部寄存器的访问方法如下表: 8259A的初始化顺序 8259的初始化流程 注意次序不可颠倒! 写ICW1 写ICW2 级连? 写ICW3 需ICW4? 写ICW4 N N Y Y 8259A的控制命令字 初始化8259A必须从ICW1开始 写ICW1意味着重新初始化8259A 写入ICW1后,8259A的状态如下: 清除ISR和IMR(全0); 将中断优先级设成初始状态:IR0最高,IR7最低; 设定为一般屏蔽方式; 采用非自动中断结束方式; 状态读出逻辑预置为读IRR。 ICW1——初始化字 LTIM: 触发方式 =1 高电平触发 =0 上升沿触发 SNGL: 级连控制 =1 单片 =0 级连 IC4: ICW4控制 =1 要写ICW4 =0 不写ICW4(默认ICW4为全0) A0 D7 D6 D5
文档评论(0)