微机

微机原理复习整理

第一章 微型计算机系统概述

  1. 微型计算机系统组成
    微处理器:运算器、控制器、寄存器
    微型计算机:输入输出接口、总线、内存
    微型计算机系统:由硬件和软件共同组成的完整的计算机系统
  2. 系统总线
    地址总线AB
    输出将要访问的内存单元或I/O端口的地址
    地址线的多少决定了系统直接寻址存储器的范围
    数据总线DB
    CPU读操作时,外部数据通过数据总线送往CPU
    CPU写操作时,CPU数据通过数据总线送往外部
    数据线的多少决定了一次能够传送数据的位数
    控制总线CB
    协调系统中各部件的操作,有输出控制、输入状态等信号
    控制总线决定了系统总线的特点,例如功能、适应性等
  3. 基于8088CPU的PC微机系统结构
  4. 微处理器(CPU)内部结构
    指令处理单元(控制器):对机器指令译码,产生指令执行所需的控制信号,并按照指令规定的时序将控制信号传送到CPU内部各器件或传送到总线。

算术逻辑单元(运算器):接收到控制器发出的各种运算控制信号后,执行相应运算,并影响相应标志位。

寄存器组:CPU内用于暂时存放数据、地址的存储单元,CPU从内存读取指令、在内存中读写数据,均需要这些寄存器完成寻址、暂存的功能。其中标志寄存器能够间接影响程序执行流程

8088的内部结构从功能分成两个单元

总线接口单元BIU——管理8088与系统总线的接口,负责CPU对存储器和外设进行访问
执行单元EU——负责指令的译码、执行和数据的运算
两个单元相互独立,分别完成各自操作
两个单元可以并行执行,实现指令取指和执行的流水线操作
8088 CPU 外部特性与IBM PC总线结构
image

  1. 8088的两种组态模式
    MN/MX接高电平为最小组态模式
    MN/MX
    接低电平为最大组态模式
  2. 8088最小组态的引脚信号
  3. 数据和地址引脚
    AD7~AD0
    地址/数据分时复用引脚,双向、三态
    在访问存储器或外设的总线操作周期中,这些引脚在第一个时钟周期输出存储器或I/O端口的低8位地址A7~A0
    其他时间用于传送8位数据D7~D0
    A15~A8(Address)
    中间8位地址引脚,输出、三态
    这些引脚在访问存储器或外设时,提供全部20位地址中的中间8位地址A15~A8
    A19/S6~A16/S3(Address/Status)
    地址/状态分时复用引脚,输出、三态
    这些引脚在访问存储器的第一个时钟周期输出高4位地址A19~A16
    在访问外设的第一个时钟周期全部输出低电平无效
    其他时间输出状态信号S6~S3
    S6始终为低;
    S5为标志寄存器的中断允许标志的状态位,它在每一个时钟周期开始时被修改;
    S4和S3用以指示是哪一个段寄存器正在被使用,00为ES,01为SS,10为CS,11为DS
    DMA方式时这4条线处于高阻状态
  4. 读写控制引脚
    ALE(Address Latch Enable)
    地址锁存允许,输出、三态、高电平有效

ALE引脚高有效时,表示复用引脚:AD7~AD0和A19/S6~A16/S3正在传送地址信息

由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来

IO/M*(Input and Output/Memory)
I/O或存储器访问,输出、三态

该引脚输出高电平时,表示CPU将访问I/O端口,这时地址总线A15~A0提供16位I/O口地址

该引脚输出低电平时,表示CPU将访问存储器,这时地址总线A19~A0提供20位存储器地址

WR*(Write)
写控制,输出、三态、低电平有效
有效时,表示CPU正在写出数据给存储器或I/O端口
RD*(Read)
读控制,输出、三态、低电平有效
有效时,表示CPU正在从存储器或I/O端口读入数据
READY
存储器或I/O口就绪,输入、高电平有效
在总线操作周期中,8088CPU会在第3个时钟周期的前沿(下降沿)测试该引脚
如果测到高有效,CPU直接进入第4个时钟周期
如果测到无效,CPU将插入等待周期Tw
CPU在等待周期中仍然要监测READY信号,有效则进入第4个时钟周期,否则继续插入等待周期Tw
DEN*(Data Enable)
数据允许,输出、三态、低电平有效
有效时,表示当前数据总线上正在传送数据,可利用他来控制对数据总线的驱动
DT/R*(Data Transmit/Receive)
数据发送/接收,输出、三态
该信号表明当前总线上数据的流向
高电平时数据自CPU输出(发送)
低电平时数据输入CPU(接收)
SS0*(System Status 0)
最小组态模式下的状态输出信号
它与IO/M和DT/R一道,通过编码指示CPU在最小组态下的8种工作状态:
3. 中断请求和响应引脚INTR(Interrupt Request)
可屏蔽中断请求,输入、高电平有效
有效时,表示请求设备向CPU申请可屏蔽中断
该请求的优先级别较低,并可通过关中断指令CLI清除标志寄存器中的IF标志、从而对中断请求进行屏蔽
INTA*(Interrupt Acknowledge)
可屏蔽中断响应,输出、低电平有效
有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期
中断响应周期是连续的两个,每个都发出有效响应信号,以便通知外设他们的中断请求已被响应、并令有关设备将中断向量号送到数据总线
NMI(Non-Maskable Interrupt)
不可屏蔽中断请求,输入、上升沿有效
有效时,表示外界向CPU申请不可屏蔽中断
该请求的优先级别高于INTR,并且不能在CPU内被屏蔽
当系统发生紧急情况时,可通过他向CPU申请不可屏蔽中断服务
4. 总线请求和响应引脚
HOLD
总线保持(即总线请求),输入、高电平有效
有效时,表示总线请求设备向CPU申请占有总线
HLDA(HOLD Acknowledge)
总线保持响应(即总线响应),输出、高电平有效
有效时,表示CPU已响应总线请求并已将总线释放
此时CPU的地址总线、数据总线及具有三态输出能力的控制总线将全面呈现高阻,使总线请求设备可以顺利接管总线
待到总线请求信号HOLD无效,总线响应信号HLDA也转为无效,CPU重新获得总线控制权
RESET
复位请求,输入、高电平有效
该信号有效,将使CPU回到其初始状态;当它再度返回无效时,CPU将重新开始工作
8088/86复位后
CS=FFFFH、IP=0000H,
所以程序入口在物理地址FFFF0H
CLK(Clock)
时钟输入
5. 其它引脚
MN/MX*(Minimum/Maximum)
组态选择,输入
TEST*
测试,输入、低电平有效
6. 8088的基本总线时序
总线时序描述CPU引脚如何实现总线操作
描述总线操作的微处理器时序有三级:
指令周期 → 总线周期 → 时钟周期
指令周期是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期
总线周期是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程
8088的基本总线周期需要4个时钟周期
总线操作中
如何实现CPU与内存、接口芯片间的时序同步
是关键
同步时序:
各部件都以系统时钟信号为基准
当相互不能配合时,快速部件(CPU)插入等待状态等待慢速部件(I/O和存储器)
异步时序
CPU与外设接口通过应答联络信号实现同步操作
7. 8088最小组态的总线时序
存储器读总线周期
存储器写总线周期
I/O读总线周期
I/O写总线周期
8. 8088最大组态中的引脚定义
有些控制信号不相同,主要是用于输出操作编码信号,由总线控制器8288译码产生系统控制信号:
LOCK*——总线封锁信号
S2、S1、S0*——3个状态信号
、QS0——指令队列状态信号
RQ/GT0、RQ/GT1——2个总线请求/同意信号
9. 8088最大组态的总线形成
系统地址总线

采用三态透明锁存器74LS373和三态单向缓冲器74LS244
系统数据总线
通过三态双向缓冲器74LS245形成和驱动
系统控制总线
主要由总线控制器8288形成
MEMR、MEMW、IOR、IOW、INTA*
第五章 半导体存储器及接口

  1. 半导体存储器的分类
    读写存储器RAM:SRAM.DRAM,NVRAM
    只读存储器ROM
    掩膜ROM:信息制作在芯片中,不可更改
    PROM:允许一次编程,此后不可更改
    EPROM:用紫外光擦除,擦除后可编程;并允许用户多次擦除和编程
    EEPROM(E2PROM):采用加电方法在线进行擦除和编程,也可多次擦写
    Flash Memory(闪存):能够快速擦写的EEPROM,但只能按块(Block)擦除
  2. 半导体存储器芯片的内部结构
    每个存储单元具有一个唯一的地址,可存储1位(位片结构)或多位(字片结构)二进制数据
    存储容量(bits)与地址、数据线个数有关:
    芯片的存储容量=2^M×N
    =存储单元数×存储单元的位数
    地址译码电路结构
    单译码,双译码
    片选和读写控制逻辑
    片选端CS或CE
    有效时,可以对该芯片进行读写操作
    输出OE*
    控制读操作。有效时,芯片内数据输出
    该控制端对应系统的读控制线
    写WE*
    控制写操作。有效时,数据进入芯片中
    该控制端对应系统的写控制线
  3. 随机存取存储器
    静态RAM(SRAM)
    image

SRAM的基本存储单元是触发器电路
SRAM一般采用==“字结构==”存储矩阵
SRAM芯片2114外部特性:
10根地址线A9~A0
4根数据线I/O4~I/O1
片选CS*
读写WE*

SRAM芯片6264外部特性
28个引脚:
13根地址线A12~A0
8根数据线D7~D0
片选CS1、CS2
读写WE、OE*
动态RAM

每个存储单元存放一位,芯片内每个位单元具有独立地址
需要8个存储芯片构成一个字节单元,每个
DRAM芯片4116外部特性
7根地址线A6~A0,
1根数据输入线DIN,
1根数据输出线DOUT,
行地址选通RAS*,
列地址选通CAS*,
读写控制WE*.

DRAM 4116的刷新:采用“==仅行地址有效”==方法刷新
DRAM芯片2164外部特性
8根地址线A7~A0
1根数据输入线DIN
1根数据输出线DOUT
行地址选通RAS*
列地址选通CAS*

读写控制WE*
5. 只读存储器
EPROM 2716
11根地址线A10~A0
8根数据线DO7~DO0
片选/编程CE/PGM
读写OE
编程电压VPP

EPROM 2764
13根地址线A12~A0
8根数据线D7~D0
片选CE*
编程PGM*
读写OE*
编程电压VPP
EEPROM

用加电方法,进行在线(无需拔下,直接在电路中)擦写(擦除和编程一次完成)
EEPROM 2717A
11根地址线A10~A0
8根数据线I/O7~I/O0
片选CE*
读写OE、WE
状态输出RDY/BUSY*
EEPROM 2864A
13根地址线A12~A0
8根数据线I/O7~I/O0
片选CE*
读写OE、WE

6. 半导体存储器与CPU的连接
存储芯片的数据线
若芯片的数据线正好8根:
一次可从芯片中访问到8位数据,全部数据线与系统的8位数据总线相连
若芯片的数据线不足8根:一次不能从一个芯片中访问到8位数据,“位扩充”
image
存储芯片的地址线
芯片的地址线通常应全部与系统的低位地址总线相连
寻址时,这部分地址的译码是在存储芯片内完成的,我们称为“片内译码”
存储芯片的片选端
存储系统常需利用多个存储芯片扩充容量,也就是扩充了存储器地址范围
进行“地址扩充”,需要利用存储芯片的片选端对多个存储芯片(组)进行寻址
这个寻址方法,主要通过将存储芯片的片选端与系统的高位地址线相关联来实现
这种扩充简称为“地址扩充”或“字扩充”
译码和译码器

全译码

所有的系统地址线均参与对存储单元的译码寻址
包括低位地址线对芯片内各存储单元的译码寻址(片内译码),高位地址线对存储芯片的译码寻址(片选译码)
采用全译码,每个存储单元的地址都是唯一的,不存在地址重复
译码电路可能比较复杂、连线也较多
部分译码

只有部分(高位)地址线参与对存储芯片的译码
每个存储单元将对应多个地址(地址重复),需要选取一个可用地址
可简化译码电路的设计
但系统的部分地址空间将被浪费
线选译码

只用少数几根高位地址线进行芯片的译码,且每根负责选中一个芯片(组)
虽构成简单,但地址空间严重浪费,必然会出现地址重复
一个存储地址会对应多个存储单元
多个存储单元共用的存储地址不应使用
存储芯片的读写控制线
芯片OE与系统的读命令线相连
当芯片被选中、且读命令有效时,存储芯片将开放并驱动数据到总线
芯片WE
与系统的写命令线相连
当芯片被选中、且写命令有效时,允许总线数据写入存储芯片
7. 存储芯片与CPU的配合
总线驱动
CPU的总线驱动能力有限
单向传送的地址和控制总线,可采用三态锁存器和三态单向驱动器等来加以锁存和驱动
双向传送的数据总线,可以采用三态双向驱动器来加以驱动
时序配合
分析存储器的存取速度是否满足CPU总线时序的要求
如果不能满足:考虑更换芯片,总线周期中插入等待状态TW
8. 8086存储器组织
寻址空间(20位地址线)
220=1M bytes的存储器寻址空间
分段的概念
分段组织
段寄存器的16位值左移4位,得到的20位值加上16位的偏移量。
字与字节访问
AD0 信号和BHE信号组合,选择奇偶字节或字。
第6章 基本输入输出接口
I/O接口概述
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路
PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路
信号转换
对信号的形式和数据的格式进行变换
微机直接处理:数字量、开关量、脉冲量
数据缓冲
对输入输出数据进行缓冲和锁存
输出锁存缓冲环节,输入锁存缓冲环节
对I/O端口进行寻址
与CPU和I/O设备进行联络
I/O接口的典型结构

  1. 接口电路的内部结构
    数据寄存器
    保存外设给CPU和CPU发往外设的数据
    状态寄存器
    保存外设或接口电路的状态
    控制寄存器
    保存CPU给外设或接口电路的命令
  2. 接口电路的外部特性
    面向CPU一侧的信号:用于与CPU连接、主要是数据、地址和控制信号
    面向外设一侧的信号:用于与外设连接、提供的信号种类繁多、功能定义、时序及有效电平等差异较大
  3. 接口电路芯片的分类
    通用接口芯片
    支持通用的数据输入输出和控制的接口芯片
    面向外设的专用接口芯片
    针对某种外设设计、与该种外设接口
    面向微机系统的专用接口芯片
    与CPU和系统配套使用,以增强其总体功能
  4. 接口电路的可编程性
  5. I/O端口的编址
    数据寄存器、状态寄存器和控制寄存器占有的I/O地址常依次被称为数据端口、状态端口和控制端口,用于保存数据、状态和控制信息
    两类编排形式
    I/O端口独立编址
    优点:

I/O端口的地址空间独立
控制和地址译码电路相对简单
专门的I/O指令使程序清晰易读
缺点:

I/O指令没有存储器指令丰富
I/O端口与存储器统一编址

优点:

不需要专门的I/O指令
I/O数据存取与存储器数据存取一样灵活
缺点:

I/O端口要占去部分存储器地址空间
程序不易阅读(不易分清访存和访问外设)

4. 8088/8086的输入输出指令

输入指令

IN AL,i8 ;字节输入,直接寻址
IN AL,DX ;字节输入,间接寻址
IN AX,i8 ;字输入,直接寻址 IN
AX,DX ;字输入,间接寻址

输出指令

OUT i8,AL ;字节输出,直接寻址 OUT DX,AL ;字节输出,间接寻址 OUT i8,AX ;字输出,直接寻址 OUT
DX,AX ;字输出,间接寻址

  1. 8088/8086的I/O端口
    8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个,端口号(端口地址)为0000H ~ FFFFH
    每个端口地址对应一个字节空间
    寻址方式
    直接寻址:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号
    间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号,对端口号大于FFH的端口只能采用间接寻址方式
    数据交换
    如果输入输出一个==字节,使用AL寄存器
    如果输入输出一个字,使用AX寄存器
  2. I/O地址的译码
  3. 数据传送方式
    程序控制下的数据传送:通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送、查询传送、中断传送
    直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送
    I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理
  4. 无条件传送方式及其接口
    在CPU与慢速变化的设备(或简单设备)交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送
    适合于简单设备,如LED数码管、开关等
    ==next: mov dx,8000h ;DX指向数据端口
    in al,dx ;从输入端口读开关状态
    not al ;反相
    out dx,al ;送输出端口显示
    call delay ;调子程序延时
    jmp next ;重复
    ==
  5. 查询传送方式及其接口
    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 ;循环至全部字节写完

  1. 中断传送方式
    中断请求 =>中断响应=>关中断=>断点保护=>中断识别=>现场保护=>中断服务=>恢复现场=>开中断=>中断返回
    中断传送是一种效率更高的程序传送方式
    进行传送的中断服务程序是预先设计好的
    中断请求是外设随机向CPU提出的
  2. DMA传送方式
    CPU对DMA控制器进行初始化设置
    外设、DMAC和CPU三者通过应答信号建立联系:CPU将总线交给DMAC控制
    DMA传送
    DMA读存储器:存储器 → 外设
    DMA写存储器:存储器 ← 外设
    自动增减地址和计数,判断传送完成否
    传送方式的比较

无条件传送:慢速外设需与CPU保持同步
查询传送: 简单实用,效率较低
中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销
DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送
第7章 中断控制接口

  1. 8088中断系统
    8088的中断系统采用向量中断机制
    能够处理256个中断
    用中断向量号0~255区别
    可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理
  2. 8088的中断类型
    内部中断:除法错中断、指令中断、溢出中断、单步中断
    外部中断:非屏蔽中断、可屏蔽中断
  3. 8088的中断响应过程
    image

8088各种中断源的优先权,实际上是指被识别出来的先后
多种中断同时请求时,最先响应的则可能是单步中断或NMI中断
image
3. 8088的中断向量表
中断向量:中断服务程序的入口地址(首地址)
逻辑地址含有段地址CS和偏移地址IP(32位)
每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节
8088微处理器从物理地址00000H开始,依次安排各个中断向量,向量号也从0开始
256个中断占用1KB区域,就形成中断向量表
向量号为N的中断向量的物理地址=N×4
2. 内部中断服务程序

  1. 内部中断服务程序
    编写80H号中断服务程序
    功能:显示以“0”结尾字符串的功能
    ,利用显示器功能调用INT 10H,
    字符串缓冲区首地址为入口参数,
    DS:DX(段地址:偏移地址)传递参数

    intoff dw ?//偏移
    intseg dw ?//段基址
    intmsg db ‘A Instruction Interrupt !’//字符串
    db 0dh,0ah,0
    //保存中断向量
    mov ax,3580h//AH=35H,AL=中断向量号
    int 21h //DOS功能调用INT 21H
    mov intoff,bx ;保存偏移地址
    mov intseg,es ;保存段基地址
    //设置中断向量
    //设置中断向量(DOS功能调用INT 21H)
    push ds
    mov dx,offset new80h
    mov ax,seg new80h
    mov ds,ax
    mov ax,2580h//AH=25,AL=中断向量号
    int 21h
    pop ds
    //调用中断服务程序,设置入口参数: //DS=段地址(已设置)
    //; DX=偏移地址
    mov dx,offset intmsg
    int 80h ;调用80H中断服务程序
    //主程序结束
    mov dx,intoff
    mov ax,intseg
    mov ds,ax
    mov ax,2580h
    int 21h
    mov ax,4c00h
    int 21h
    //进入中断服务程序
    new80h proc
    sti ;开中断
    push ax ;保护寄存器
    push bx
    push si
    mov si,dx
    //显示字符串
    new1:mov al,[si]
    cmp al,0
    jz new2
    mov bx,0
    mov ah,0eh
    int 10h
    inc si
    jmp new1
    //退出中断服务程序
    new2: pop si ;恢复寄存器
    pop bx
    pop ax
    iret ;中断返回
    new80h endp

  2. 8259A中断控制器

  3. 8259A的内部结构和引脚
    中断控制
    中断请求寄存器IRR
    保存8条外界中断请求信号IR0~IR7的请求状态
    Di位为1表示IRi引脚有中断请求;为0表示无请求
    中断服务寄存器ISR
    保存正在被8259A服务着的中断状态
    Di位为1表示IRi中断正在服务中;为0表示没有被服务
    中断屏蔽寄存器IMR
    保存对中断请求信号IR的屏蔽状态
    Di位为1表示IRi中断被屏蔽(禁止);为0表示允许
    与处理器接口
    image
    中断级连
    一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A
    级连时,主8259A的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2
    SP/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP=0)

  4. 8259A的工作方式
    设置优先权方式
    普通全嵌套方式
    特殊全嵌套方式
    优先权自动循环方式
    结束中断处理方式
    8259A利用中断服务寄存器ISR判断:
    某位为1,表示正在进行中断服务;
    该位为0,就是该中断结束服务。
    自动中断结束方式
    普通中断结束方式,配合全嵌套优先权方式使用
    特殊中断结束方式,配合循环优先权方式使用
    屏蔽中断源方式
    普通屏蔽方式
    将IMR的Di位置1,则对应的中断IRi被屏蔽
    特殊屏蔽方式
    将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0
    中断触发方式
    边沿触发方式
    电平触发方式
    数据线连接方式
    缓冲方式
    8259A的数据线需加缓冲器予以驱动
    8259A把SP/EN引脚作为输出端,输出允许信号,用以锁存或开启缓冲器
    非缓冲方式
    SP/EN引脚为输入端
    若8259A级连,由其确定是主片或从片

  5. 8259A的编程
    初始化命令字ICW
    初始化命令字ICW最多有4个
    8259A在开始工作前必须写入
    必须按照ICW1~ICW4顺序写入
    ICW1和ICW2是必须送的
    ICW3和ICW4由工作方式决定
    中断控制器的初始化程序段
    //初始化主片8259A
    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
    //初始化从片8259A
    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

操作命令字OCW
OCW共有3个:OCW1~OCW3
写入时没有顺序要求,需要哪个OCW就写入那个OCW
应用注意事项

利用上升沿做为中断请求IRQ的有效信号
IRQ0~IRQ7的中断向量号依次为08H~0FH,IRQ8~IRQ15依次为70H~77H
采用普通全嵌套优先权方式,中断优先权从高到低顺序为IRQ0~IRQ2、IRQ8~IRQ15、IRQ3~IRQ7,且不能改变
5. 外部中断服务程序
/*8259A的IRQ0(向量号为08H)中断请求来自定时器8253,每隔55ms产生一次

本程序的08H号中断服务程序,每次中断显示一串信息,显示10次
*/
intmsg db ‘A 8259A Interrupt !’
db 0dh,0ah,0
counter db 0
mov ax,3508h
int 21h
push bx ;保存偏移地址
push es ;保存段基地址
//设置中断向量
cli
push ds
mov dx,offset new08h
mov ax,seg new08h
mov ds,ax
mov ax,2508h
int 21h
pop ds
//设置中断寄存器
in al,21h
push ax
and al,0feh ;允许IRQ0
out 21h,al
mov counter,0 ;设置中断次数初值
sti ;开中断
//循环等待中断
start1: cmp counter,10
jb start1 ;中断10次退出
//子程序结束
cli
pop ax
out 21h,al
pop dx
pop ds
mov ax,2508h
int 21h
sti
mov ax,4c00h
int 21h
//进入中断服务程序
new08h proc
sti ;开中断
push ax ;保护寄存器
push bx
push ds
mov ax,data
mov ds,ax ;设置数据段DS
//中断处理
inc counter
mov si,offset intmsg ;显示信息
call dpstri
//
mov al,20h
out 20h,al
pop ds ;恢复寄存器
pop bx
pop ax
iret ;中断返回
new08h endp
//显示字符串
dpstri proc ;显示字符串子程序
push ax
push bx
dps1: lodsb
cmp al,0
jz dps2
//显示字符串
mov bx,0
mov ah,0eh
int 10h
jmp dps1
dps2: pop bx
pop ax
ret
dpstri endp

第8章 定时计数控制接口
8253/8254定时计数器
3个独立的16位计数器通道
每个计数器有6种工作方式
按二进制或十进制(BCD码)计数
计数器结构分析
计数初值存于预置寄存器;
在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。
输出锁存器用于写入锁存命令时,锁定当前计数值
计数器的3个引脚
CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型
OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
8253/8254的工作方式
方式0 计数结束中断
方式1 可编程单稳脉冲
方式2 频率发生器(分频器)
方式3 方波发生器
方式4 软件触发选通信号
方式5 硬件触发选通信号
注意
处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。
从第二个CLK信号的下降沿,计数器才真正开始减1计数。
8253/8254的编程
第9章 DMA控制接口
DMA控制器8237A
每个8237A芯片有4个DMA通道,就是有4个DMA控制器
每个DMA通道具有不同的优先权
每个DMA通道可以分别允许和禁止
每个DMA通道有4种工作方式
一次传送的最大长度可达64KB
多个8237A芯片可以级连,扩展通道数

  1. 8237A的内部结构和引脚
    请求与响应信号
    DREQ0~DREQ3:DMA通道请求
    HRQ:总线请求
    HLDA:总线响应
    DACK0~DACK3:DMA通道响应
    DMA传送控制信号
    A0~A7:地址线。输出低8位存储器地址。
    DB0~DB7:数据线。输出高8位存储器地址
    ADSTB:地址选通
    AEN:地址允许。
    MEMR*:存储器读
    MEMW*:存储器写
    IOR*:I/O读
    IOW*:I/O写
    READY:准备好
    EOP*:过程结束。DMA传送过程结束,输出一个低有效脉冲。
    处理器接口信号
    DB0~DB7:数据线。
    A0~A3:地址线。
    CS*:片选
    IOR*:I/O读。读取8237A内部寄存器。
    IOW*:I/O写。写入8237A内部寄存器。
    CLK:时钟。控制芯片内部操作和数据传输。
    RESET:复位。使8237A处于初始状态。
    8237A的两种工作状态

空闲周期:
作为接口电路,受CPU控制的工作状态
有效周期:
作为DMAC控制DMA传送的工作状态
image
2. 8237A的工作时序·空闲周期
DMA传送时序

S1状态——输出16位存储器地址
AEN输出高电平,表示DMA传送
S2状态——输出DMA响应信号和控制信号
DMA读:MEMR和IOW有效
DMA写:IOR和MEMW有效
S3和Sw状态——检测数据传送是否能够完成,决定是否插入等待状态Sw
S4状态——完成数据传送
3. 8237A的工作方式
DMA传送方式
单字节传送方式:一次传送一个字节,效率略低,
DMA传送之间CPU有机会重新获取总线控制权
数据块传送方式:一次请求传送一个数据块,效率高,
整个DMA传送期间CPU长时间无法控制总线
请求传送方式
DREQ信号有效就连续传送数据
DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作
级连方式
DMA传送类型
· DMA读 · DMA写 · DMA检验
DMA通道的优先权方式
固定优先权方式——优先权固定:0,1,2.。。
循环优先权方式——优先权循环变化
自动初始化方式
4. 8237A的寄存器
通道寄存器(4个通道分别具有):基地址寄存器、基字节数寄存器、现行地址寄存器、现行字节数寄存器。

状态、命令寄存器:命令寄存器、状态寄存器、请求寄存器、方式寄存器、屏蔽寄存器、临时寄存器

好文要顶 关注我 收藏该文
hui灰灰
关注 - 2
粉丝 - 1
+加关注
00
« 上一篇: 软件工程复习整理
» 下一篇: 数据库面试题整理
posted @ 2019-01-10 21:41 hui灰灰 阅读(2706) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
登录后才能发表评论,立即 登录 或 注册, 访问 网站首页
博客园派送云上免费午餐,AWS注册立享12个月免费套餐
【推荐】News: 大型组态、工控、仿真、CADGIS 50万行VC++源码免费下载
【推荐】了不起的开发者,挡不住的华为,园子里的品牌专区
【推荐】未知数的距离,毫秒间的传递,声网与你实时互动
【福利】AWS携手博客园为开发者送免费套餐与抵扣券
【推荐】阿里云返场期奖励继续,赢5万现金

相关博文:
· ARM下常见的通讯接口
· 存储器
· 5分钟了解单片机数据、地址、控制总线结构
· css网格布局
· 转载:关于STM32硬件I2C读写EEPROM代码实现原理的理解与总结
» 更多推荐…
声网专区
最新 IT 新闻:
· 西班牙人修了个文物!把全世界人民都整乐了
· 惊呆了!这些“网红”可能都是假人…
· OPPO申请注册“绿厂”商标 vivo已注册“蓝厂”商标
· 印象笔记国产版给VIP会员强塞广告 网友不满:弃坑了
· 特斯拉展示革命性4680电池组装图!无极耳少发热 密度提升5倍
» 更多新闻…
公告
昵称: hui灰灰
园龄: 1年11个月
粉丝: 1
关注: 2
+加关注
< 2020年11月 >
日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12
搜索

常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔档案
2019年1月(3)
2018年12月(10)
阅读排行榜

  1. 微机原理复习整理(2706)
  2. vue+SSM验证码实现(1801)
  3. SSM+solr 通过商品搜索学习solr的简单使用(1218)
  4. 面向连接的传输TCP(一)(672)
  5. 软件工程复习整理(668)
    推荐排行榜
  6. 软件工程复习整理(1)
    Copyright © 2020 hui灰灰
    Powered by .NET 5.0.0 on Kubernetes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值