T3和Tw状态——检测数据传送是否能够完成 T4状态——完成数据传送
T1 CLK IO/M*
A19/S6~A16/S3 A15~A8 AD7~AD0 ALE RD*
(高电平) 读:
T1状态——输出20位存储器地址A19~A0 IO/M*输出低电平,表示存储器操作; ALE输出正脉冲,表示复用总线输出地址 T2状态——输出控制信号RD*
T3和Tw状态——检测数据传送是否能够完成 T4状态——前沿读取数据,完成数据传送 第五章:5.5 第六章: I/O及接口:
什么是I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路 功能:
⑴ 对输入输出数据进行缓冲和锁存。输出接口有锁存环节,输入接口有缓冲环节
实际的电路常用:输出锁存缓冲环节,输入锁存缓冲环节
⑵ 对信号的形式和数据的格式进行变换。微机直接处理:数字量、开关量、脉冲量
⑶ 对I/O端口进行寻址
⑷ 与CPU和I/O设备进行联络 数据传送方式:
1.无条件传送方式及其接口
? 在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状
态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送
? 适合于简单设备,如LED数码管、按键或按纽等 ? 无条件传送的接口和操作均十分简单 ? 这种传送有前提:外设必须随时就绪
输出:MOV DX, 160H 输入:MOV DX, 160H MOV DX, 160H IN AL, DX MOV AL, [BX]
6
A7~A0 A19~A16 S6~S3 T2 T3 T4 A15~A8 输入数据 READY
OUT DX, AL
无条件传送:输入输出接口
next: mov dx,8000h ;DX指向数据端口 in al,dx ;从输入端口读开关状态 not al ;反相
out dx,al ;送输出端口显示 call delay ;调子程序延时 jmp next ;重复 查询传送方式及其接口
? CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情
况下(就绪)实现数据输入或输出
? 对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设
将优先进行数据交换
? 查询传送的特点是:工作可靠,适用面宽,但传送效率低 输入接口:mov dx,8000h ;DX指向状态端口
status: in al,dx ;读状态端口
test al,01h ;测试标志位D0
jz status ;D0=0,未就绪,继续查询 inc dx ;D0=1,就绪,DX指向数据端口 in al,dx ;从数据端口输入数据 输出接口:mov dx,8000h ;DX指向状态端口
status: in al,dx ;读取状态端口的状态数据 test al,80h ;测试标志位D7 jnz status ;D7=1,未就绪,继续查询 inc dx ;D7=0,就绪,DX指向数据端口 mov al,buf ;变量buf送AL
out dx,al ;将数据输出给数据端口 查询方式的EEPROM编程 next: mov al,55h ;写入内容=55H mov [bx],al ;写入存储单元 nop ;空操作指令,起延时作用 nop
next1: in al,dx ;查询状态口 test al,01h ;测试D0
jz next1 ;D0=0,芯片还在写入 inc bx ;D0=1,写毕,指针移动 loop next ;循环至全部字节写完
中断:中断传送是一种效率更高的程序传送方式
进行传送的中断服务程序是预先设计好的 中断请求是外设随机向CPU提出的
CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚
中断过程:1.中断请求 2.中断响应 2.关中断 4.断电保护 5.中断源识别 6.现场保护 7.终端服务 8.恢复现场 9.开中断 10中断返回
7
DMA: 希望克服程序控制传送的不足:
外设→CPU→存储器 外设←CPU←存储器
? 直接存储器存取DMA:外设→存储器 外设←存储器 ? CPU释放总线,由DMA控制器管理
工作过程:⑴ CPU对DMA控制器进行初始化设置
⑵ 外设、DMAC和CPU三者通过应答信号建立联系:CPU将总线交给DMAC控制 ⑶ DMA传送 DMA读存储器:存储器 → 外设 DMA写存储器:存储器 ← 外设 ⑷ 自动增减地址和计数,判断传送完成否 比较:
? 无条件传送:慢速外设需与CPU保持同步 ? 查询传送: 简单实用,效率较低
? 中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间
开销
? DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速
数据传送
第七章(总线信号):
总线信号:D0~D7——8位双向数据线 A0~A19——20位输出地址线 ALE——地址锁存允许,每个CPU 总线周期的T1 状态高电平有效
MEMR*——存储器读,输出、低有效 MEMW*——存储器写,输出、低有效 IOR*——I/O读,输出、低有效 IOW*——I/O写,输出、低有效 I/O CH RDY——I/O通道准备好,输入、 高有效 IRQ2~IRQ7——中断请求信号,输入、高有效
AEN——地址允许信号,输出、高有效,用于指示DMA总线周期 DRQ1~DRQ3——DMA请求信号,输入、高有效
DACK0*~DACK3*——DMA响应信号,输出、低有效 T/C——计数结束信号,输出、正脉冲有效 RESET——复位信号,输出、高有效
IOCHCK*——I/O通道校验,输入、低有效
OSC——晶振频率脉冲,输出14.31818MHz的主振频率信号 CLK——系统时钟,输出4.77MHz的系统时钟信号 +5V、-5V、+12V、-12V、GND——电源和地线 第八章: 内部中断:
内部中断是由于8088内部执行程序出现异常引起的程序中断
在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断
在执行中断调用指令INT n时产生的一个向量号为n(0 ~ 255)的内部中断,称为指令中断
在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断
若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断
外部中断:⑴ 非屏蔽中断
⑵ 可屏蔽中断:外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理
8
器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断 ? IF=0:可屏蔽中断不会被响应
关中断、禁止中断、中断屏蔽 系统复位,使IF=0
任何一个中断被响应,使IF=0 执行指令CLI,使IF=0 ? IF=1:可屏蔽中断会被响应
开中断、允许中断、中断开放 执行指令STI,使IF=1 中断向量表:
执行指令IRET恢复原IF状态 中断向量:中断服务程序的入口地址(首地址) 逻辑地址含有段地址CS和偏移地址IP(32位)
每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节
8088微处理器从物理地址000H开始,依次安排各个中断向量,向量号也从0开始 256个中断占用1KB区域,就形成中断向量表
内部中断服务程序:编写内部中断服务程序与编写子程序类似
利用过程定义伪指令PROC/ENDP 第1条指令通常为开中断指令STI 最后用中断返回指令IRET 通常采用寄存器传递参数 ? 主程序需要调用中断服务程序
调用前,需要设置中断向量 利用INT n指令调用中断服务程序
Eg: 编写80H号中断服务程序.功能:显示以“0”结尾字符串的功能,利用显示器功能调用INT 10H.字符串缓冲区首地址为入口参数.DS:DX(段地址:偏移地址)传递参数见P195 8259A的基本功能
一片8259A可以管理8级中断,可扩展至64级,每一级中断都可单独被屏蔽或允许。在中断响应周期,可提供相应的中断向量号。8259A设计有多种工作方式,可通过编程选择
? 中断请求寄存器IRR
? 保存8条外界中断请求信号IR0~IR7的请求状态 ? Di位为1表示IRi引脚有中断请求;为0表示无请求
? 中断服务寄存器ISR
? 保存正在被8259A服务着的中断状态
? Di位为1表示IRi中断正在服务中;为0表示没有被服务
? 中断屏蔽寄存器IMR
? 保存对中断请求信号IR的屏蔽状态 ? Di位为1表示IRi中断被屏蔽(禁止);为0表示允许
初始化命令字ICW见P201
9
mov al,11h ;写入ICW1 out 20h,al jmp intr1
intr1: mov al,08h ;写入ICW2 out 21h,al jmp intr2
intr2: mov al,04h ;写入ICW3 out 21h,al jmp intr3
intr3: mov al,1h ;写入ICW4 out 21h,al mov al,11h ;写入ICW1 out 0a0h,al jmp intr5 intr5: mov al,70h ;写入ICW2 out 0a1h,al jmp intr6 intr6: mov al,02h ;写入ICW3 out 0a1h,al jmp intr7
intr7: mov al, 01h ;写入ICW4 out 0a1h,al
第九章.8253:
预置寄存器 CLK 减1计数器 GATE 输出锁存器 OUT
计数初值存于预置寄存器;在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值。
? CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下
降沿),计数器的计数值减1
? GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制
两种类型
? OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚
上将产生一个输出信号
每种工作方式的过程类似:
⑴ 设定工作方式 ⑵ 设定计数初值 〔 ⑶ 硬件启动 〕
⑷ 计数初值进入减1计数器 ⑸ 每输入一个时钟计数器减1的计数过程
10