IO与中断
I/O系统概述
- I/O系统作用,一言以蔽之,就是协调高速cpu与低俗外设之间的信息交换
- 两种编址方式,与内存统一编址和独立编制,8086/8088采用独立编址,与内存共用地址总线,用IO/#M,信号状态区分,访问端口时仅使用地址总线的:A15~A0,可寻址的I/O端口数为64K(65536)个,I/O地址范围:
0~FFFFH - IBM PC只使用了1024个I/O地址(0~3FFH)
简单接口芯片
接口分类与特点
- CPU把数据存进IO,对应的是输出接口要有良好的数据锁存能力
- 外设把数据写进IO,对应的是输入接口要有对数据有控制能力,即:CPU指令一到,外设就要把数据立刻写入IO
输出输入都是看的出cpu还是入cpu
三态门接口:写入CPU:74LS244
在外设具有数据保持能力时用来输入接口,例如74LS244,它是含8个三态门的集成电路芯片
1都去与非,0都去或。A1,A0(BHE)未参与译码,因此可以推断出端口地址为83FCH-83FFH。
MOV DX,83FCH
IN AL,DX # DX对应的内容写入AL
AND AL,0FFH # 判断是否全闭合
JZ NEXT1 # 是,跳转NEXT1
JMP NEXT2 # 不是,跳转NEXT2
NEXT1:
NEXT2:
锁存器接口
- 74LS273只能锁存(cpu向外写)
- 74LS373既可以做输入接口,也可以做输出接口。
PPT给的例题较为简单:
74LS273地址显然为FFFFH
MOV DX 0FFFFH #当十六进制数以字母(A-F)开头时,必须在前面加前导零
MOV AL 10000001B
OUT DX, AL
基本输入输出方法(简答)
- 无条件传送,例如LED灯
- 查询:仅当条件满足时才能进行数据传送,每满足一次条件只能进行一次数据传送
- 中断:外设在需要时向CPU提出请求,CPU再去为它服务。服务结束后或在外设不需要时,CPU可 执行自己的程序
上述三种信息的传送均需通过CPU
- DMA:外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介,总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供
简单I/O接口电路设计示例(简答-画图)(不考)
例题1
- 列出状态端口地址和数据端口地址,发现只有后两位不一样
- A系列以及#IOR译码给三态门控制用,准备将BUSY信号写入cpu
- A系列和#IOW译码给74LS273的CP用,控制数据锁存
- 74LS273的Q直连外设的D,74LS273的D直连cpu的D
- BUSY直连CPU的D
例题2
- 记住CP和#E1分别用于使能即可,译码得出的信号输出给使能端
中断技术(简答)(不考)
有关基本概念
- 为了提高cpu利用率引入中断
- CPU执行程序时,由于发生了某种随机的事件(外部或内部), 引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序,以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。
中断类型的分类
外部可屏蔽中断响应的一般过程(流程大致能答出来)
- 1.中断请求,外部可屏蔽中断请求信号是INTR,中断请求信号应保持到中断被处理为止
- 2.中断源识别(多个中断请求)+中断判优,根据中断向量码(中断类型码)确定中断源,根据程序优先级或者排队原则来确定先处理哪一个中断
- 3.中断响应,向中断源发出中断信号#INTA(告诉他我开始处理中断了!)然后保护现场
- 4.中断处理,根据中断向量执行中断程序
- 5.中断返回,执行IRET指令,使IP、CS和FLAGS从堆栈弹出
IO与中断的更多相关文章
- IO调度器(二) IO的中断返回
IO的中断返回也是相当让人激动的一件事情: 28470 1) | handle_irq() { 28471 1) 0.237 us | ...
- 掌握所有IO口的外部中断
外部中断配置流程 1.初始化IO口工作在普通IO.上拉输入状态. 2.首先开IO口组中断(P0IE=1.P1IE=1.P2IE=1): 3.开组内对应的具体某IO口中断(P0IEN.P1IEN.P2I ...
- IO中断
>>>io的中断编程 以上例程会有什么问题呢? 注意:CPU内部寄存器
- 套接字IO超时设置和使用select实现超时管理
在涉及套接字IO超时的设置上有一下3种方法: 1.调用alarm,它在指定的时期满时产生SIGALRM信号.这个方法涉及信号的处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm ...
- LPC1788的外部中断和GPIO中断
首先是gpio中断,这一点和1768不同,1768使用的中断时和eint3共用中断通道,到了1788,专门为gpio开辟了中断 #ifndef __JOYPAD_H_ #define __JOYPAD ...
- LPC1768外部中断与GPIO中断
LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明 控制这四个外部中断靠以下寄存器 这三个寄存器的0 1 2 3位分别代表中断的0 1 ...
- LPC2478的外部中断使用
LPC2478外部中断 2478的外部中断模型如下 也就是说,port0和2支持外部中断,EINT0-2是三个独立管脚的中断,而EINT3则是port0和2的所有中断共同拥有的向量 对于port0和2 ...
- 迅为iTOP-4418/6818开发板-驱动-IO初始化配置介绍和例程
对于所有的处理器,pad 一般可以分为两大类:IO(输入输出).Power(VDD 和GDD).类似摄像头 IO.以太网 IO.PWM 的 IO 等等,都可以统称为 IO.一个 IO,有可能能够被配置 ...
- STM32之中断
在STM32(Cortex-M3)中没有显示的代码拷贝,只有启动代码进行了向量的初始化,一直以为是编译器在程序影像中自己完成了相关向量的拷贝,即,拷贝到固定的NVIC区,事实上并不是这样,cortex ...
- ESP8266-12F 中断
外部中断: 基于ESP8266的NodeMcu的数字IO的中断功能是通过attachInterrupt,detachInterrupt函数所支持的.除了D0/GPIO16,中断可以绑定到任意GPIO的 ...
随机推荐
- SenseVoice部署,并调用api接口
目录 安装Python 代码下载 虚拟环境 安装依赖 下载模型 修改启用webui.py 启用api.py 安装Python 这个网上找下教程安装下就可以,版本应该没有什么要求,我装的是3.10.7 ...
- UFT textUtil object 解决奇怪问题
当页面元素定位出问题,可以用textUtil来解决
- windows vs使用grpc-cpp的坑
1.通过vcpkg安装protoc和grpc-cpp 2.生成proto协议代码: protoc -I .. -I . --cpp_out=. test.proto 3.生成grpc服务代码: pr ...
- SQL Server 游标写入数据
https://www.cnblogs.com/wanghonghu/p/4093411.html set identity_insert 表名 ON --允许对自增列Id插入指定数据 insert ...
- 巅峰对决,超三十万奖金等你挑战!第十届信也科技杯全球AI算法大赛火热开赛!
https://www.bilibili.com/video/BV19Pg2zaErv/ 信也科技今年跟IJCAI和CIKM这两大全球顶级AI会议合作,这场比赛被全球人工智能顶会CIKM收录为官 ...
- Java MCP 鉴权设计与实现指南
一.MCP 鉴权概述 MCP (Model Context Protocol) 旨在为大语言模型(LLM)与外部数据源.工具和服务提供标准化.安全的集成方式(相当于一种专用的 RPC 协议).广泛应用 ...
- 第三代长安75p安装三方软件
前言 长安的车机系统是 长安与腾讯联合且基于安卓自研的 梧桐车联系统. 通过一些特殊方式,打开了车机的系统信息真身 此系统极为封闭,默认情况下,不允许安装除了车机本身应用商店之外的三方软件,本身内置的 ...
- 华为机试题 求最大连续bit数
简介 c = c++ ? c = ++c ? code #include <iostream> #include <string> using namespace std; i ...
- 神奇的LLVM与llvmlite之JIT编译。
https://releases.llvm.org/11.0.0/docs/LangRef.html llvmlite Documentation, Release 0.41.0dev0-64-gbb ...
- Linguistics-English-So, Thus(Consequently), Hence, Therefore
First Answer: A native speaker Usage of "So", "Thus", and "Hence", &qu ...