微机原理

常见名词

CPU,中央处理单元,Central Processing Unit

ALU,算术逻辑单元,Arithmetic and Logic Units

CU,控制单元,控制器,Control Unit

CPU通常由中央处理单元,算术逻辑单元,寄存器组三部分组成

EU,执行单元,Execution Unit

BIU,总线接口单元,Bus Interface Unit

PC,程序计数器,Program Counter

IR,指令寄存器,Instruction Register

GR,通用寄存器,General Register

注意$IO$端口和$IO$接口不是同一个东西

操作系统知识:程序计数器(pc)、指令寄存器(IR)、通用寄存器(GR)、状态寄存器(SR)、程序状态字PSW_pc和ir-CSDN博客

特殊运算符和指令

PTR用来指定存储器操作数的字长 Byte PTR[BX]

所有单操作数指令要求操作数不能是立即数,如果是存储器操作数,需要指定字长

微型计算机基础概论

微型计算机系统

微型计算机系统 由 硬件系统 和 软件系统 组成 硬件系统 硬件系统 由 微型计算机(主机) 和 外设组成

  1. 微型计算机(主机)由 微处理器(CPU),存储器 ,IO接口 ,总线 组成
  2. 外设 就包括键盘,鼠标,显示器,硬盘等

软件系统 软件系统 由 系统软件 和 应用软件 构成

微型计算机运行流程 微机运行的基本流程为,程序存储在存储器中,按程序流程自动连续取出指令并执行;自动连续的实现是程序计数器 PC 的自增;步骤可概括为取指令、译码、执行。修改 PC 指针的值,可实现程序的顺序执行、跳转、循环、过程调用和中断服务等功能。

计算机中的数制与编码

十进制D,二进制B,十六进制H,八进制O

有符号二进制数的表示

最高位是符号位,0表示正号,1表示负号

原码 数值部分保持不变,最高位是符号位 反码 正数的反码与正数的原码一样 负数的反码 等于 负数原码 数值部分 按位取反 补码 正数的补码与正数的反码和原码一样 负数的补码 的符号位 与 负数原码一致,数值部分等于 负数原码 数值部分取反后再加1

特殊数-128的补码表示为10000000

微处理器与总线

CPU中央处理单元

CPU是微型计算机的运算和指挥控制中心 一般由ALU(运算器)CU(控制单元)寄存器组组成 CPU内还有两个独立部件:EU(执行单元)和BIU(总线接口单元)

微处理器主要性能指标

CPU的字长/位数,及其一次性能处理的位数 CPU主频,指的是CPU时钟频率

CU控制单元

控制器的作用是控制程序的执行,是整个系统的指挥中心 具备以下功能

  1. 指令控制
  2. 时序控制
  3. 操作控制

EU执行单元

EU负责分析指令(指令译码),执行指令 在工作时不断从BIU的指令队列取指令

BIU总线接口单元

BIU主要功能是负责CPU与存储器,IO接口之间的信息传送 BIU可以负责取指令,取操作数,写结果 BIU内部有一个指令队列和地址加法器 地址加法器能产生20位的物理地址

CPU程序执行步骤

  1. 从存储器取出下一条指令
  2. 指令译码
  3. 如果指令需要,从存储器中读取操作数
  4. 执行指令(算术逻辑运算,IO操作,数据传输等)
  5. 如果需要,写入存储器 核心步骤,取指令,译码指令,执行指令

工作时序

  1. 时钟周期:每个时钟脉冲持续的时间
  2. 总线周期:通过总线进行一次读或写操作的过程称为一个总线周期,一个总线周期包含多个时钟周期
  3. 指令周期:执行一条指令所需的时间,一个指令周期包含多个总线周期 一个基本的总线周期由四个时钟周期构成,若内存或 IO 接口速度较慢,则还会在 T3 后插入 Tw 等待周期。

写操作为例的总线周期 包含4个时钟周期(T1,T2,T3,T4) T1地址输出,T2缓存,T3和T4数据输出

8088/8086 CPU

8088与8086处理器的区别

8088 外部数据线为8根(8086为16根),为准16位CPU,16 位数据要分两次传送;( 注意:8088和8086均为16位处理 器,内部数据线均为16位,且地址总线均为20位) 指令预取队列:8088为4字节,8086为6字节

两者均有两种工作模式,最小工作模式和最大工作模式

8088/8086指令流水线

采用EU(执行单元)和BIU(总线接口单元)并行工作,可同时取指令,执行指令,分析指令

补充-流水线技术

在指令执行过程中,有几类指令相关影响流水线中指令的执行,使得指令不能在预先设定的执行周期中执行,造成流水线断流 相关问题 结构相关;数据相关;控制相关

结构相关

当CPU的硬件结构不能够同时支持几条指令的执行时,这几条指令将发生结构相关,比如流水线同时访问同一个存储器

数据相关

一条指令的执行需要上一条或者上几条指令的执行结果时 ,会造成流水线的断流现象。

所以,当发生数据相关时,需要尽可能早的把上一条或上几条指令的执行结果 交给相关指令作为操作数。这就需要“内部前推

控制相关

当指令执行到分支指令或者跳转指令时,将产生控制相关,此时会产生流水线断流。 解决方法:

  1. 阻塞流水线直到确定走向
  2. 预测分支是否发生,并给予该预测执行指令

8088/8086内存分段

8088/8086内部结构为16位,为了增大内存管理能力使其能产生20位的物理地址,采用了分段管理方法

段首地址即段基地址 20位物理地址=段基地址 * 16+段偏移地址

8088/8086内部寄存器

8088/8086内部寄存器分为 通用寄存器(8个),段寄存器(4个),控制寄存器(2个)

通用寄存器

通用寄存器包括 数据寄存器,地址指针寄存器,变址寄存器

数据寄存器
  • AX(Accumulator):累加器,常用于存放算术逻辑运算中的操作数,另外所有的IO指令都是用累加器与外设接口传送信息
  • BX(Base):基址寄存器,常用来存放访问内存时的偏移地址(一般和DS一起用DS:[BX])
  • CX(Count):计数寄存器,在循环和串操作指令中用作计数器
  • DX(Data):数据寄存器,在寄存器间接寻址的IO指令中存放IO端口地址

都可拆分为H,L两个8位寄存器

在做双字节乘除法运算时,DX与AX可以合起来存一个双字长的数(32位),DX存高16位,AX存低16位

地址指针寄存器
  • SP(Stack Pointer):堆栈指针寄存器,常用来存放 栈顶偏移地址
  • BP(Base Pointer):基址指针寄存器,一般也用来存放访问内存时的偏移地址(一般和SS一起用SS:[BP])

BX和BP区别: (1)作为通用寄存器,二者均可用于存放数据;(2)作为基址寄存器,用BX表示 所寻找的数据在 数据段 ;用BP则表示数据在 堆栈段

变址寄存器
  • SI(Source Index):源变址寄存器
  • DI(Destination Index):目的变址寄存器
段寄存器

段寄存器,用于存放段基址,即段起始地址的高16位

  • CS(Code Segment):代码段寄存器
  • SS(Stack Segment):堆栈段寄存器
  • DS(Data Segment):数据段寄存器
  • ES(Extra Segment):附加数据段寄存器
控制寄存器
  • IP(Instruction Pointer):指令指针寄存器,其内容为下一条要执行指令的偏移地址(CS段中)
标志寄存器
  • FLAGS:状态寄存器,16位寄存器 状态标志位
  • CF(Carry Flag):进位标志位,进行加减运算时,若最高位向前有进位错位,则CF=1
  • PF(Parity Flag):奇偶标志位,运算结果低8位中1的个数为偶数,PF=1
  • AF(Auxiliary Carry Flag):辅助进位标志位,加减法运算,D3向D4进位时,AF=1
  • ZF(Zero Flag):零标志位,运算结果为0时,ZF=1
  • SF(Sign Flag):当运算结果最高位为1时,SF=1
  • OF(Overflow Flag):当算术结果超出了 带符号数的范围时,即溢出时,OF=1

控制标志位

  • TF(Trap Flag):陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式
  • IF(Interrupt Enable Flag):中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求
  • DF(Direction Flag):方向标志位。在数据串操作时确定操作的方向

IF=1,允许响应可屏蔽中断请求,对应指令:STI IF=0,禁止响应可屏蔽中断请求,对应指令:CLI

DF=0,串操作指令中的地址是增加方向,对应指令:CLD DF=1,串操作指令中的地址是减少方向,对应指令:STD

TF=1,CPU按跟踪方式(单步方式)执行程序

8088外部引脚及其功能

最小模式下的引脚描述

按功能对引脚进行划分:

  1. 基础工作引脚:$Vcc,GND,CLK(4.77Mhz)$
  2. 地址总线:${AD}0-{AD}7,A_8-A{15},A{16}-A_{19}$
  3. 数据总线:${AD}_0-{AD}_7$
  4. 模式控制引脚:$MN/\overline{MX}$
  5. 读写控制引脚:$IO/\overline M,\overline{RD},\overline{WR}$
  6. 中断控制引脚:$INTR,NMI,INTA$
  7. 复位:$RESET$
  8. 总线保持请求/响应:$HOLD,HLDA$
  9. 地址锁存信号:$ALE$
  10. 外部就绪信号:$READY$
  11. 测试信号输入:$\overline {TEST}$
  12. 数据传输方向控制:$DT/\overline R$
  13. 数据允许信号:$\overline {DEN}$
  14. 系统状态输出:$\overline{{SS}_0}$(与$IO/\overline M,DT/\overline R$合作)
各引脚具体功能
  1. $A_{16}-A_{19}/S_3-S_6$:地址,状态复用的引脚,三态输出。(分时复用)状态信号中$S_6$恒等于0,$S_5$指示中断允许标志位$IF$的状态,$S_4,S_5$组合指示CPU正在使用的段寄存器

  2. $A_8-A_{15}$:8位地址信号,三态输出

  3. ${AD}{0}-{AD}{7}$:地址,数据分时复用的双向信号线,三态。当$ALE=1$时,这些引脚上传输的是地址信号,当$\overline {DEN}=0$时,这些引脚上传输的是数据信号

  4. $IO/\overline M$:输入输出/存储器控制信号,三态。该引脚是用来区分当前操作是访问存储器还是访问$IO$端口

  5. $\overline {WR}$:写信号输出,三态。当此引脚输出为低电平时,表示CPU正在对存储器或IO端口进行写操作

  6. $DT/\overline {R}$:数据传送方向控制信号,三态。高电平时,CPU向存储器或IO端口发送数据;低电平时,CPU从存储器或IO接口接收数据

  7. $\overline {DEN}$:数据允许信号,三态。该信号有效时,表示 数据总线 上具有有效信号。它在每次 访问内存或IO接口以及在中断响应期间有效,常用作数据总线驱动信号

  8. $ALE$:地址锁存信号,三态输出,高电平有效。它为高电平时,表示CPU地址线上有有效地址

  9. $\overline {RD}$:读选通信号,三态输出,低电平有效。其有效时,表示CPU正在对存储器或IO接口进行读操作

  10. $READY$:外部同步控制输入信号,高电平有效。它是由被访问的内存或IO设备所发出的响应信号。它为高电平时,表示存储器或IO设备已经准备好,CPU可以进行数据传送 。CPU在T3的周期采样$READY$信号,若其为低,CPU自动插入等待周期$T_w$

  11. $INTR$ :可屏蔽中断请求输入信号,高电平有效。CPU在每条指令的最后一个周期采样该信号,以决定是否进入中断响应周期

  12. $\overline {TEST}$:测试信号输入引脚

  13. $NMI$:非屏蔽中断请求输入信号,上升沿触发。这个引脚上的中断请求信号不能用让软件屏蔽,CPU在当前指令

  14. $RESET$:系统复位输入信号,高电平有效。

  15. $\overline {INTA}$:中断响应信号输出,低电平有效,此信号是CPU对中断请求信号$INTR$ 的响应。 在响应过程中,CPU在$\overline {INTA}$上连续输出两个负脉冲用作外部中断的中断向量码的读选通信号

  16. $HOLD$:总线保持请求信号输入,高电平有效。当某一总线主控设备要占用系统总线时,通过此引脚向CPU提出请求

  17. $HLDA$:总线保持响应信号输出,高电平有效。这是CPU对$HOLD$请求的响应信号。CPU收到$HOLD$信号后,就会对其做出响应,一方面会使CPU的所有三态输出的地址信号,数据信号和对应的控制信号变为高阻态;同时输出一个有效的$HLDA$,表示CPU已放弃对总线的控制。当CPU检测到$HOLD$信号变低后,就立即使$HLDA$变低,同时恢复对总线的控制

  18. ${SS}_0$:系统状态信号输出

  19. $CLK$: 时钟信号输入引脚

  20. $Vcc$:5V电源输入引脚

  21. $GND$:地线

8088/8086结构功能

外部结构

总线

总线定义

总线是传输信号或信息的公共路径,是遵循同一技术规范的连接与操作方式

总线特点

公共性,可同时挂在多个设备

总线分类

按传送的信息类型分类

  1. 数据总线(Data Bus)
  2. 地址总线(Address Bus)
  3. 控制总线(Control Bus)

按总线的层次结构划分

  1. 前端总线
  2. 系统总线
  3. 外设总线

总线结构

单总线结构,多总线结构

总线基本功能

总线上任意时刻只能允许一对设备进行信息交换

  • 总线传输同步:协调通信双方的传输操作
  • 总线仲裁控制:避免多个设备同时使用总线造成的冲突,确定总线上哪个设备可以占用总线传输数据
  • 出错处理:检错和处理
  • 总线驱动:增加驱动能力
总线的数据传送
1.同步定时的传输方式

用公共的时钟统一各部件数据发送和接收的时机 (严格按节拍进行,不需要握手信号,效率高)

2.异步定时的传输方式

用控制和状态信号协调各部件数据发送和接收的时机(应答式)

3.半同步定时的传输方式

允许不同速度的部件协同工作,主控设备可以根据从设备的状态延长总线 时钟周期,但总线周期一定是时钟周期的整数倍

常用系统总线和外设总线标准

常用的系统总线标准包括:ISA 总线、PCI 总线、PCIE 总线、AGP 总线 常用的外设总线标准包括:SATA 总线、USB 总线、RS485 总线、IDE 总线、RS232 总线

指令系统

指令:控制计算机完成指定操作并能够被计算机所识别的命令。 指令系统:一台计算机能够识别的所有指令的集合称为该机的指令系统

指令格式: 操作码 操作数1,操作数2 操作数数量:零操作数指令,单操作数指令,双操作数指令

指令中操作数类型:立即操作数,寄存器操作数,存储器操作数 寄存器操作数的指令执行速度> 立即数操作数> 存储器操作数

CISC(Complex Instruction Set Computer),复杂指令系统计算机 RISC(Reduced Instruction Set Computer),精简指令系统计算机

指令性指令是CPU中实际存在的可执行的语句。指示性语句是用于说明程序结构,变量等的语句,后者在编译过程中执行,编译完成后不再存在

对于每个指令

  1. 指令码的含义
  2. 指令对操作数的要求
  3. 指令对标志位的影响
  4. 指令的功能

寻址方式

立即寻址(Immediate Addressing)

源操作数是立即数,立即数存放在代码段 MOV AX,3102H

直接寻址(Direct Addressing)

操作数是存储器操作数,存放的地址由指令直接给出 MOV AX,[3102H]

寄存器寻址(Register Addressing)

操作数为CPU内部寄存器 MOV AX,BX

寄存器间接寻址(Register Indirect Addressing)

寄存器存放的不是数据本身,而是存放数据的偏移地址 寄存器间接寻址方式中 存放操作数偏移地址 的寄存器只允许是 $SI,DI,BX,BP$,它们也被称为间址寄存器

  • 选择$SI,DI,BX$作为间址寄存器时,操作数在数据段,段基址由$DS$决定
  • 选择$BP$作为间址寄存器,则操作数在堆栈段,段基地址由$SS$决定 允许段重设 MOV AX,[BX] MOV AX,ES:[SI]

寄存器相对寻址

操作数在内存中的偏址地址由间址寄存器的值加上一个8位或16位的偏移量 MOV AX,DATA[BX] MOV AX,[BX+DATA]

基址-变址寻址

基址-变址寻址方式由一个基址寄存器存的值和一个变址寄存器存的值 相加得到偏移地址

  • 不允许出现两个基址寄存器
  • 不允许出现两个变址寄存器 MOV AX,[BX][SI] MOV AX,[SI][BX] MOV AX,[BX+SI]

基址-变址-相对寻址

所寻地址在内存中,偏移地址由一个基址寄存器、一个变址寄存器和数值偏移 量相加给出。其它规定同“基址-变址寻址” MOV AX,DATA[SI][BX] MOV AX,[BX+DATA][SI] MOV AX,[BX+SI+DATA] MOV AX,[BX+SI]DATA MOV AX,[BX]DATA[SI]

隐含寻址

指令中隐含了部分固定的操作数的地址 MUL BL 把AL与BL相乘的乘积放入AX

堆栈段

规定由SS指示堆栈段的段基址,堆栈的最低地址 堆栈指针SP始终指向堆栈的顶部(栈顶)。堆栈的最高地址叫栈底 栈的压入指令 PUSH src 栈的弹出指令 POP dest

操作原则

  1. 操作数为1个字,且只能是寄存器或存储器操作
  2. 存放数据从高地址向低地址方向增长
  3. 堆栈段位置由SS决定,SP指向栈顶
  4. PUSH压入过程为先减SP再压数据
1
2
3
SP-2 -> SP
src高8位->[SP+1]
src低8位->[SP]
  1. POP弹出过程为先弹数据再加SP
1
2
3
[SP]->dest低8位
[SP+1]->dest高8位
SP+2->SP

堆栈主要用途:保护现场

数据传送指令

数据传送指令的执行均不影响标志位

一般传送指令MOV

MOV dest,src 对操作数要求:

  1. 两个操作数字长相同
  2. 两个操作数不能同时为存储器操作数
  3. 不能用立即数直接给段寄存器赋值
  4. 两个操作数不能同时为段寄存器
  5. IP和CS只作为MOV的源操作数,不做目标操作数
  6. FLAGS整体不能作为操作数

两个操作数不能同时为存储器操作数,原因是存储器不能确定字长,是在存储器中取1个字节还是多个字节,没有限定

堆栈操作指令PUSH和POP

PUSH src POP dest 操作数为1个字,且只能是寄存器或存储器操作,不能是立即数

交换指令XCHG

功能:交换源地址与目标地址中的内容 XCHG OPRD1,OPRD2

输入/输出指令IN和OUT

功能:对输入/输出端口进行读写 输入指令IN用于从IO端口读数据到累加器AL(AX)中 输出指令OUT用于把累加器AL(AX)的内容写到IO端口 IO端口寻址

  1. 直接寻址:指令中的IO端口地址为8位
1
2
IN AL/AX,port
OUT port,AL/AX
  1. 寄存器间接寻址:端口地址为16位,由DX寄存器指定
1
2
IN AL/AX,DX 
OUT DX,AL/AX

操作原则

  1. 只有AL或AX可以与I/O端口进行数据交换
  2. IO端口地址可以是8位立即数指向的地址(即直接寻址)或由DX保存的16 位地址(即间接寻址) 当端口地址是16位时,只能用DX取给定端口地址

取偏移地址指令LEA (Load Effect Address)

功能:将存储器操作数的16位偏移地址送到指定寄存器 LEA reg16, mem 操作原则

  1. 源操作数必须是存储器操作数,如: LEA BX, BUFFER LEA BX, [SI]
  2. 目标操作数必须是16位通用寄存器,最好使用间址寄存器(BX, SI, DI, BP) 源操作数必须是存储器操作数

算数运算指令

不带进位和带进位的加减指令 无符号和有符号的乘除指令

算术运算指令的执行会影响状态标志位 乘法指令执行结果为相乘数的双倍字长 除法指令被除数是除数的双倍字长

乘法指令

乘法指令采用隐含寻址,隐含了存放被乘数的累加器AL或AX,以及存放结果的AX或AX,DX

无符号乘法指令 MUL BYTE PTR[BX] 有符号乘法指令 IMUL OPRD

除法指令

DIV OPRD 如果$OPRD$是单字节数 意思是$AX/OPRD$ 结果:AL=商,AH=余数 如果$OPRD$是双字节数 意思是$DX,AX/OPRD$ 结果:AX=商,DX=余数

算数移位指令

非循环移位

算数移位,逻辑移位 左移,右移

循环移位

分为带进位移位和不带进位移位

存储器

RAM(Random-Acess Memory)一般可分为SRAM(静态RAM),DRAM(动态RAM) ROM(Read Only Memory)一般可分为 掩膜ROM,一次性可写ROM,EPROM,EEPROM,闪速存储器Flash

高位地址,选通芯片 低位地址,选芯片的读写单元

译码,将输入的一组高位地址信号通过变换,产生一个有效的输出信号,用于选中某一个存储器芯片,从而确定了该存储器芯片在内存的地址范围

全地址译码 用全部高位地址信号作为译码信号,使得存储器芯片的每一个单元都占据一个唯一的内存地址 部分地址译码 用部分高位地址信号作为译码信号,使得被选中存储器芯片占有几组不同的地址范围

Cache高速缓冲器 Cache高速缓冲存储器,Cache是构成内存储器的部件之一,设置Cahce的原因是内存的速度与处理器的工作速度不匹配

微机中的存储器系统

  1. Cache存储器系统
  2. 虚拟存储器系统 Cache存储系统 Cache存储系统主要有Cache高速缓冲器和主内存构成,有硬件系统负责管理

IO系统

输入输出系统 在计算机系统中,通常把处理器和主存储器之外的部分统称为输入/输出系统, 包括输入/输出设备、输入/输出接口和输入/输出软件

IO接口 IO接口就是外设连接到系统总线上的一组逻辑电路的总称

IO端口 端口是接口电路中用于缓存数据及控制信息的部件 CPU与I/O接口进行通信实际上是通过I/O接口内部的一组寄存器实现的,这些寄存器通常称为I/O端口(I/O Port)。它包括3种类型:数据端口、状态端口和命令(控制)端口

IO端口编址方式 分为统一编址和独立编址

  1. I/O端口与内存单元统一编址,指令及控制信号统一,内存地址资源减少
  2. I/O端口独立编址,内存地址资源充分利用,使用不同的控制信号,能够应用于端口的指令较少

输入接口需要具备数据控制能力,一般采用三态门接口,防止外设的输入影响数据总线,如74LS244

输出接口需要具备数据锁存能力,一般采用锁存器接口,如74LS273

基本输入输出方式

1.无条件传送方式 2.查询方式 3.中断方式 4.直接存储器存取方式(DMA)

中断

CPU执行程序中,由于发生了某种随机的事件(外部或内部),引起CPU暂时 中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或 中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续 执行,这一过程称为中断

中断响应过程

可屏蔽外部中断响应过程

通过两个连续的中断响应总线周期获取中断类型码 获取中断向量后并调用中断,服务程序

内部中断响应过程

无中断响应总线周期 中断类型码固定或由指令(INT n)给出

主要芯片

1.计数器8253

特殊引脚

  1. CLK——时钟脉冲输入
  2. GATE——门控信号输入
  3. OUT——定时输出

编程方式

  1. 控制字直接写入控制寄存器
  2. 计数值写入对应计数器

工作方式

总览

  1. 16位减法计数,计数值减为0时输出相应控制信号
  2. 输出控制信号的形式可通过软件设置
方式0——计数结束中断

软件启动,不自动重复计数 计时结束输出高电平,输出可以用作中断请求信号

不自动重复计数是指 每写入一次计数初值只计数一个周期

方式1——可重复触发的单稳态触发器

硬件启动,不自动重复计数 但是可以通过GATE重复触发计数,当GATE出现上升沿时,下一个CLK的下降沿开始计数 计数结束后,OUT端输出高电平

方式2——频率发生器

既可以软件启动,也可以硬件启动 自动重复计数,OUT端输出N-1个时钟周期的高电平,1个时钟周期的低电平

方式3——方波发生器

软硬件启动,自动重复计数 输出对称方波(连续方波) N为偶数,完全对称,N为奇数,正脉冲会长一点

方式4——软件触发选通

软件启动,不自动重复计数 计数结束输出一个CLK宽度的低电平

方式5——硬件触发选通

硬件启动,不自动重复计数 波形与方式4一致,计数结束输出一个CLK宽度的低电平

小结

需要两个写脉冲——两次写操作

  1. 第一次写脉冲写入控制字
  2. 第二次写脉冲写入计数初值

能输出连续波形的只有方式2和方式3

2.可编程并行接口8255

三个端口

A口:支持0,1,2工作方式 B口:支持0,1工作方式 C口,支持0工作方式

工作方式

方式0——基本输入输出方式
方式1——选通工作方式

方式1输出接口A

$\overline {OBF}$:接口输出缓冲器满信号,告诉外设可以从该端口读走信号 $\overline {ACK}$:外设从端口取走数据,发出响应信号 外设取走信号后,发出$\overline {ACK}$响应信号,同时使$\overline {OBF}=1$,同时还会产生一个有效的$INTR$信号

方式1输入接口A

$\overline {{STB}_A}$:外设写入 ${{IBF}_A}$:当输入缓冲器满后,接口发出的高电平有效信号

方式2——双向传送方式

可以既作为输入口,又作为输出口 只有A口可以工作在此模式下,当A口工作在方式2时,B口可以工作在方式0或1

控制字

方式控制字:用于确定3个端口的工作方式及数据传送方向 位控制字:仅用于C端口,可设置C口某位的初始状态(高低电平)

D7=1,方式控制字 D7=0,位控制字

3.DA转换芯片DAC0832

差动输出,双缓冲

工作方式

单缓冲工作方式

双缓冲工作方式

4.AD转换芯片ADC0809

5.可编程中断控制器8259A

特殊引脚

$INT$:接CPU的中断请求引脚 $\overline {INTA}$:接CPU的中断响应引脚 $A0$:8259A内部寄存器选择信号 $CAS0-CAS2$:多个8259级联引脚时使用,级联控制线 $\overline {SP}$:在非缓冲模式下,用来指定8259A是从片还是主片,$\overline {SP}$=1的8259是主片

内部结构

工作过程

工作方式
中断优先方式与中断嵌套

(1)固定优先级方式 (2)循环优先级方式

屏蔽中断源的方式

普通屏蔽方式:对IMR某位置1,则屏蔽该位对应的中断请求

级联工作方式

(1)主片、从片有不同的地址 (2)主片、从片分别进行编程

8259A的编程
初始化编程

初始化命令字ICW1(初始化字):单片/多片级联、电平/边沿触发 初始化命令字ICW2(中断向量码):给CPU提供中断向量 注意:例如,写入ICW1,端口地址为20H,写入ICW2时,端口地址为21H

初始化命令字ICW3(级联控制字):指出哪个引脚进行了级联 初始化命令字ICW4(中断结束方式字):给出8259A结束中断处理的方式

操作方式编程

操作命令字OCW1(中断屏蔽字):某位为1则该引脚中断被屏蔽 操作命令字OCW2(中断结束和优先级循环):指定优先级顺序和中断结束方式 操作命令字OCW3(屏蔽方式和状态读出控制字):设置特殊屏蔽、查询方式

experience
使用 Hugo 构建
主题 StackJimmy 设计