IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 汇编与接口技术期末复习笔记——接口部分 中断技术(3) -> 正文阅读

[嵌入式]汇编与接口技术期末复习笔记——接口部分 中断技术(3)

3. 中断技术

在这里插入图片描述

3.1 中断的概念和类型

在这里插入图片描述

3.2 中断号

在这里插入图片描述
在这里插入图片描述

3.3 中断触发方式和排队方式

在这里插入图片描述

3.4 中断向量和中断向量表

在这里插入图片描述

3.5 中断的处理过程

在这里插入图片描述

3.6 中断控制器

在这里插入图片描述

3.6.1 82C59的外部特性和内部寄存器及端口地址

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.6.2 82C59的工作方式

在这里插入图片描述

3.6.3 82C59的编程命令

在这里插入图片描述
初始化命令顺序
在这里插入图片描述

  • ICW1 : A0=0
    在这里插入图片描述
    【例】若259A采用电平触发,单片使用,需要 ICW4(对16位机以上,D0=1),则:
   MOV  AL,00011011B  ;ICW1的内容
   OUT  20H,AL        ;写入ICW1端口 (A0=0)
  • ICW2 : A0=1
    在这里插入图片描述
    【例】硬盘中断号0DH,即00001101B
    在这里插入图片描述
  • ICW3 : A0=1
    • 主片ICW3设置:
      1:主片的某个IR上连有从片
      0:主片的某个IR上未连从片
      在这里插入图片描述
    • 从片ICW3设置
      从片ICW3:从片的INT引脚连到主片的IR引脚编号:000-111
      在这里插入图片描述
      【例】从片A和从片B的请求线INT连到主片的IR3和IR6
	  主片的ICW3=01001000B=48H
	     MOV AL,48H	;主片的ICW3
		 OUT 21H,AL
    从片A的ICW3=00000011B=03H
  	     MOV  AL,02H 	;从片A的ICW3
       OUT  0A1H,AL	
    从片B的ICW3=00000110B=06H
  	     MOV  AL,06H 	;从片A的ICW3
       OUT  0B1H,AL 
  • ICW4 : A0=1
    在这里插入图片描述
    【例】某计算机的CPU为8086,8259A与系统总线之间采用缓冲器连接,非自动结束方式,只用1片259A,正常完全嵌套。
ICW4=00001101B=0DH,相应的初始化程序段:
MOV  AL,0DH
OUT  21H,AL
  • OCW1:  A0=1
    用于设定中断屏蔽,每一位对应一个中断输入。0=开放,1=屏蔽.
    在这里插入图片描述
    【例】要使中断源IR3开放,其余被屏蔽则: OCW1=11110111B=F7H。在主程序中,在开中断之前,写相应的程序段:
		MOV  AL,0F7H
    	OUT  21H,AL   ;OCW1内容送端口
    	IN   AL,21H   ;回读21H端口的内容
  • OCW2 A0=0
    在这里插入图片描述
    • 中断结束控制(OCW2格式中的D6)
      当初始化命令ICW4选用非自动结束方式
      时(D5=1) ,就利用OCW2来控制中断结束:
      SL(D6)=0 结束当前中断
      OCW2=00100XXXB(L2-L0=任意值,常用000)
      SL(D6)=1,结束指定中断
      OCW2=01100L2L1L0
      例:指定IR5的中断结束,则:
      OCW2=01100101B=65H
    • 作中断优先级排队控制
      在这里插入图片描述
      在这里插入图片描述

【例】要对IR3中断指定中断结束方式, OCW2=01100011B=63H。在中断服务程序中,中断返回指令IRET前,写相应的程序段:

		MOV  AL,63H
    	OUT  20H,AL   ;写入OCW2端口(A0=0)

【例】对IR3中断采用不指定中断结束方式,, OCW2=00100000B=20H。在中断服务程序中, 中断返回指令IRET前,写相应的程序段

		MOV  AL,20H
    	OUT  20H,AL   ;写入OCW2端口(A0=0)
  • OCW3 A0=0
    读取8259A的IRR,ISR寄存器的内容
    设置特定屏蔽方式
    查询中断方式
    在这里插入图片描述
    读状态操作
    8259A内部有3个寄存器IRR,ISR,IMR可供CPU读出当前的内容。
  1. 读IRR和ISR的方法
    CPU先指定读哪个寄存器,然后再发IN指令,才能读取ISR和IRR中的内容。当8259A初始化后,自动指向读IRR寄存器。

  2. 读IMR的方法
    不需要先发指定命令,只要读奇地址端口。

    【例】读ISR寄存器的内容
    通过OCW3指定被读的寄存器,OCW3为00001011B,表示下个RD要读ISR,用IN指令读出ISR寄存器的内容

      MOV  AL,0BH    ;OCW3表示读ISR
      OUT  20H,AL    ;20H为OCW3的口地址
      IN   AL,20H    ;读ISR寄存器 
    

    【例】读IRR寄存器的内容
    通过OCW3指定被读的寄存器,OCW3为00001010B,表示下个RD要读IRR;用IN指令读出IRR寄存器的内容

      MOV  AL,0AH    ;OCW3表示读IRR
      OUT  20H,AL    ;20H为OCW3的口地址
      IN   AL,20H    ;读IRR寄存器
    

    【例】读查询字(查询有无中断-写ISR)
    分两步:通过OCW3发送出查询命令, OCW3为00001100B,表示下个RD要读查询字,用IN指令读出查询字的内容。

      MOV  AL,0CH    ;用OCW3发送查询命令
      OUT  20H,AL    ;20H为OCW3的口地址
      IN   AL,20H    ;读查询字
    

查询字的格式
在这里插入图片描述
8259A的编程命令使用总结
8259A有两类编程命令,初始化命令字ICW和操作命令字OCW,都是通过D0-D7传输的。
ICW:在初始化里完成,必须按一定的顺序;在PC机中已有系统软件完成,不需要也不允许由用户自己去设置;一般只对于没有配置完善操作系统的单板微机上进行
OCW:没有一定的顺序,一般也不安排在程序的开头;在初始化后的任何时候进行动态控制

3.7 可屏蔽中断系统

在这里插入图片描述
系统初始化

主片:
    ICW1=11H;边沿触发,多片,要ICW4
    ICW2=08H;中断号高5位
    ICW3=04H;主片的IR2接到从片上,D2=1
    ICW4=01H;非缓冲,全嵌套,16位CPU
从片:
   ICW1=11H,ICW2=70H,ICW3=02H, ICW4=01H
初始化主片:
   INTA00 EQU 20H
   INTA01 EQU 21H   
   MOV  AL,11H     ;ICW1
   OUT  INTA00H,AL  
   JMP SHORT $+2    ;I/O端口延时要求
   MOV  AL,08H     ;ICW2
   OUT  INTA01H,AL  
   JMP SHORT $+2
   MOV  AL,04H     ;ICW3
   OUT  INTA01H,AL  
   JMP SHORT $+2
   MOV  AL,01H     ;ICW4
   OUT  INTA01H,AL 
初始化从片:
   INTB00 EQU 0A0H
   INTB01 EQU 0A1H   
   MOV  AL,11H     ;ICW1
   OUT  INTB00H,AL  
   JMP SHORT $+2    ;I/O端口延时要求
   MOV  AL,70H     ;ICW2
   OUT  INTB01H,AL  
   JMP SHORT $+2
   MOV  AL,02H     ;ICW3
   OUT  INTB01H,AL  
   JMP SHORT $+2
   MOV  AL,01H     ;ICW4
   OUT  INTB01H,AL 

3.8 用户对系统中断资源的使用

在这里插入图片描述

3.8.1 修改中断向量

在这里插入图片描述

; 取N号中断的原中断向量并保存
CLI   ;修改中断向量时要关中断!
MOV	AH,	35H
MOV	AL,	N			 
INT	21H
MOV	OLD_SEG,ES
MOV	OLD_OFF,BX

;设置N的新中断向量
PUSH	DS				
MOV	DX,	SEG INTRnew   ;取新中断向量段基地址
MOV	DS,	DX
MOV	DX,	OFFSET INTnew ;取新中断向量偏移地址
MOV	AL,	N			       ;中断类型号为N
MOV	AH,	25H
INT	21H
POP		DS
IN	   AL,21H				;8259开中断
AND   AL,0FBH    ;1111 1011B  开发IR2
OUT   21H,AL
STI	

;发完数据后恢复原中断向量
MOV	DS, OLD_SEG			
MOV	DX, OLD_OFF					
MOV	AL,	N
MOV	AH,	25H
INT	21H 

3.8.2 发中断屏蔽/开放和中断结束指令

主程序中写OCW1执行中断屏蔽与开放
中断服务程序中写OCW2,发中断结束指令EOI

NEW_INT PROC FAR
STI ;开中断
;寄存器进栈
;服务程序主体		
;向主/从82C59A发中断结束命令	
  MOV	AL, 20H
  OUT 0A1H, AL
  OUT 20H,AL
;寄存器进栈
;中断返回
  IRET
NEW_INT ENDP
开放IRQ2中断的方法:
    IN AL,21H     ;读IMR寄存器
    AND AL,0FBH   ;对应IRQ2的位置0
    OUT 21H,AL
关闭IRQ2中断的方法:
    IN AL,21H     ;读IMR寄存器
    OR AL,04H     ;对应IRQ2的位置1
    OUT 21H,AL
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:16:35  更:2022-01-03 16:17:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 3:20:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码