【期末复习】微机原理与接口技术_己知 8254 的端口地址为 3000h、3004h3008h 和 30bh外接时钟频率为 2mh2-程序员宅基地

知识重点整理

第一章 输入/输出系统

1.接口电路的作用和基本功能

接口电路是CPU与外设交换信息的中转站。

接口电路应具备的功能为:数据缓冲功能、联络功能、寻址功能、数据转换功能、中断管理功能

2.端口的概念和分类

端口是接口电路中能与CPU直接进行信息交换的寄存器,即I/O端口寄存器。

在接口电路中,按端口寄存器存放信息的物理意义可划分为数据端口、控制端口和状态端口

数据端口存放数据信息,是必须有的端口。

状态端口存放外设当前工作状态的信息,CPU读取这些信息以完成对外设当前工作情况的查询

控制信息存放CPU通过接口传送给外设的控制信息,以控制外设工作。对于可编程接口电路,控制信息还负责设置可编程接口芯片的工作方式

3. 端口的编址方式

统一编址:把I/O端口作为存储器的一个单元来看待,故每个I/O端口占用存储器的一个地址

独立编址 :I/O端口和存储器分别是用两个地址空间,单独编址和译码。

在PC机中,I/O端口采用独立编址方式。

4. 最常用的IO指令(IN和OUT指令)

IN            CPU,PORT

OUT        PORT,CPU

端口地址为一个字节(8b)时,采用直接寻址方式,CPU一般常用AL、AX、EAX作为接收寄存器,8位即可满足,最多可寻址256个端口。

输入:IN AL,PORT   

输出:OUT PORT,AL

端口地址为两字节时,使用间址寻址方式,此时最多可以寻址2^16个端口,而且端口地址必须放在寄存器     DX       中。

输入:IN AL,DX  

输出:OUT DX,AL 

5. 微机系统与外部设备之间交换信息的方式

无条件传送:假设外设已准备好(即输入数据已准备好,或输出设备空闲),CPU可以直接用IN或OUT指令完成与接口之间的数据传送。

查询方式:接收数据前CPU要查询输入数据是否准备好;输出数据前CPU要查询输出设备是否空闲。只有确认外设已具备了输入或输出条件后,才能使用输入输出指令完成数据传送。CPU效率低

设:     状态口地址=200H     数据口地址=201H ,查询方式输入核心程序。假设接收数据好状态信息在D7位。

RSCAN:  MOV   DX,200H
        IN    AL,DX
        TEST  AL,80H      ;查看D7
        JZ    RSCAN       ;如果无输入,则继续查询
        MOV   DX,201H
        IN    AL,DX

设:     状态口地址 = 200H     数据口地址 = 201H 查询式数据输出核心程序,假设忙闲标识为D0位。

TSCAN:  MOV    DX,200H
        IN     AL,DX
        TEST   AL,1
        JNZ    TSCAN     
        MOV    DX,201H
        MOV    AL,'W'
        OUT    DX,AL

中断方式:如果外设未做好数据传送准备,CPU可执行与传送数据无关的其他指令;当外设做好准备后,可向CPU发送中断请求,请求为之服务。若CPU响应中断请求,将暂停正在运行的程序,转入中断服务程序,完成数据的传送。等中断服务结束后,将自动返回原来运行的程序继续执行。

DMA方式:直接存储器存取方式,用硬件实现存储器和存储器之间或存储器和I/O设备之间进行的高速数据传送,不需要CPU的干预。I/O端口向DMA控制器发出DMA请求,请求传送数据。DMA控制器在接到I/O端口的DMA请求后,向CPU发出总线请求信号,请求CPU脱离系统总线。CPU在执行完当前指令的当前总线周期后,向DMA控制器发出总线响应信号。CPU随机和系统总线脱离关系,处于等待状态,DMA控制器接管三总线的控制权。DMA控制器向I/O端口发出DMA信号。传送完毕后,DMA传输过程结束。DMA控制器将总线请求信号变为无效,并放弃对总线的控制,CPU检测到总线请求信号无效后,也将总线响应信号变为无效,于是CPU重新控制系统总线,继续执行被中断的当前指令的其他总线周期。

6. 8254定时器/计数器

(1)掌握8254定时器/计数器的基本结构(三个16位计数器、控制寄存器)和计数器的外部引脚功能(GATE、CLK和OUT)

8254内部集成了3个16位的计数器, 每个计数器有6种工作方式,计数初值可设定为二进制或BCD码。最高工作频率10兆。

GATE_{i}门控信号输入端,CLK_{i}计数器脉冲输入端,OUT_{i}输出信号端。

(2)8254与系统总线的连接

(3)计数器内部结构

(4)8254有6种工作方式

重点:方式2和方式3(启动方式、计数过程以及输出信号的波形和周期)

【例】设8254计数器1工作于方式3,输入时钟为1000Hz,计数初值为10H,采用二进制计数方式,则一个周期内计数器1输出信号的高电平和低电平分别为______和______秒。

解:输入时钟1000HZ,可得一个时钟周期为1*10^(-3)s。计数初值10H转换成十进制即为16,偶数情况下,则正负脉冲(高低电平)时间一样,都为8*10^(-3)S。

(5)8254初始化编程

第1步:向控制寄存器写入方式选择命令字

第2步:向选择的计数器写入计数初值 (计数初值N=Tout  / Tclk)

如:设8254端口地址为40H~43H,要求2号计数器工作在方式1,按BCD码计数,计数初值为十进制数4000.试写出初始化程序段。

MOV    AL,10100011B
OUT    43H,AL
MOV    AL,40H
OUT    42H,AL

如果使用二进制计数:

MOV    AL.10110010B
MOV    43H,AL
MOV    AX,4000
OUT    42H,AL
MOV    AL,AH
MOV    42H,AL

(6)8254在PC机中的应用

电路:

计算机系统中,8254三个计数器的使用:

0#计数器,用于定时(55ms)中断。计数初值为0,即为65536,周期为T=65536/1.19*10^6=55ms。

MOV    AL,00110110B
OUT    43H,AL
MOV    AL,0
OUT    40H,AL
OUT    40H,AL

1#计数器,用于动态存储器刷新定时(15us)提出一次请求。计数初值为18,周期为T=18/1.19*10^6=15us。

MOV    AL.01010100B
OUT    43H,AL
MOV    AL,12H
OUT    41H,AL

2#计数器,用于产生约900Hz的方波送至扬声器,初值为533H,N=1.19*10^6/900=1363=533H

MOV    AL,10110111B
MOV    43H,AL
MOV    AX,0533H
OUT    42H,AL
MOV    AL,AH
OUT    42H,AL

第2章 中断系统

1.中断、中断源、中断系统的概念

中断:CPU在执行程序的过程中,由于某种外部或内部事件的作用,使CPU停止当前正在执行的程序而转去为该事件服务,待事件服务结束后,又能自动返回到被中止了的程序继续执行的过程。

中断源:能够引发中断的事件,即发出中断请求的来源称为中断源。

中断系统:中断装置和中断处理程序统称为中断系统。 中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。

中断系统应具备的功能:(1)对于硬件中断,接口电路应具备“屏蔽”和“开放”的功能,这种功能由程序员通过软件去控制。(2)能实现“中断判优”(即中断源排队),当有多个中断源提出请求时,能够优先响应高级别的中断。(3)能够实现中断嵌套。(4)一旦响应中断,就能自动转入中断服务程序,处理完毕能自动返回断点。

2. 中断指令 STI、CLI、INT n和IRET 

开中断指令STI:F寄存器中I标志置为1,CPU处于开中断状态

关中断指令CLI:F寄存器中I标志清0,CPU处于关中断状态

软件中断指令 INT n:无条件转向n型中断服务子程序,CPU响应软件中断。

F寄存器->栈,F中的T标志置0以禁止单步操作,I标志置0以使CPU处于关中断的状态;

断点地址->栈:CS->栈,IP->栈

CPU从4n~4n+3单元中取出n型服务程序入口地址,转为IP:CS,从而转入n型中断服务程序。

执行完中断任务后,返回断点。

中断返回指令IRET:依次从栈顶弹出6个元素:IP、CS、F寄存器

3. 中断向量、中断向量表

中断向量是实模式下中断服务子程序的入口地址,由两部分组成: 服务程序所在代码段的段基址(2个字节)和服务程序入口的偏移地址(2个字节)

实模式下中断向量表的概念及其在存储器中的存放位置与结构:

  1. 实模式下中断向量表是一个将中断类型码与中断服务程序的入口地址相联系的地址指针表
  2. 中断向量表存储在系统RAM最低端的1024个单元(最低的1KB空间)
  3. 若中断类型码为N,则对应中断向量存储在4N~4N+3单元 其中,两个字节为偏移地址部分,两个字节为段基址部分

中断向量的引导作用——CPU响应软件中断的过程

问题:用户如何向中断向量表中写入中断向量?

方法一:自己编写程序访问中断向量的表地址,填写中断向量。利用RAM最低的1024字节单元用来存放中断向量。

        CLI
	PUSH	 	DS
	MOV		AX, 0000H
	MOV		DS, AX
	MOV		BX, 4*n
	MOV		AX, OFFSET SERVICE
	MOV		[BX], AX
	MOV		AX, SEG SERVICE
	MOV		[BX+2], AX
	POP 		DS
	STI

方法二:DOS系统功能调用

[ INT 21H35H子功能 ]

功能:出n型中断向量

入口:AL=中断类型码

出口:ES:BX=n型中断向量

[ INT 21H 25H子功能 ]

功能:入n型中断向量

入口:DS=中断服务程序所在代码段的段基址

            DX=中断服务程序入口的偏移地址

            AL=中断类型码

出口:无 

【例】把用户程序中以“TIMER”命名的中断服务子程序的入口地址 →4 ×1CH ~ 4 ×1CH+3单元(中断向量置换)

数:OLD1C      DD    ?
代:…
          MOV     AH , 35H
          MOV     AL , 1CH
          INT     21H                        ;执行完毕后,ES:BX已存储了中断向量
          MOV     WORD  PTR  OLD1C , BX      ;偏移地址低16位
          MOV     WORD  PTR   OLD1C+2 , ES   ;偏移地址高16位
          PUSH    DS
          MOV     AX,CS 	
          MOV     DS,AX
          MOV     DX,OFFSET TIMER
          MOV     AH,25H
          MOV     AL,1CH
          INT     21H
          POP     DS   
    …

4.微机系统中断的分类

根据中断源的不同,中断可以分为外部中断内部中断:外部中断可以分为可屏蔽硬件中断非屏蔽硬件中断,内部中断可分为软件中断异常。软件中断可分为BIOS中断DOS中断。DOS中断分为DOS专用中断、DOS保留中断、用户可调用的DOS中断和保留给用户开发的中断。异常可分为故障、陷阱和中止。

CPU响应可屏蔽中断的条件:

  1. INTR引脚有中断请求,NMI引脚没有中断请求,系统没有DMA请求
  2. CPU当前指令执行完毕
  3. CPU处于开中断状态,即标志寄存器的中断允许标志置1

CPU响应非屏蔽中断的条件

  1. NMI引脚有中断请求,系统没有DMA请求
  2. CPU当前指令执行完毕

可屏蔽硬件中断与软件中断的区别

  1. 中断引发的方式不同(软件中断:使用INT n指令;硬件中断:外部设备)
  2. CPU获取中断类型码的方式不同(软件中断从软件指令获得,硬件中断由8259A发送)
  3. CPU响应的条件不同(非屏蔽硬件中断不受I标志影响,可屏蔽硬件中断受其影响)
  4. 中断处理程序的结束方式不同(结束后,软件中断不需发送结束指令,可屏蔽硬件中断发送中断指令)

5. 8259A的内部结构

有关中断屏蔽寄存器中中断屏蔽字的修改:置0则开放,置1则禁止。

IN	AL , 屏蔽寄存器口地址
AND	AL,11110111B
OUT	屏蔽寄存器口地址,AL	;开放IRR3的请求,对其它位的请求不改变屏蔽/开放的状态

中断响应信号:

ISR置1表明CPU正在或准备执行对应的服务程序,IRR为1时表明对应引脚有中断请求信号,因已被响应,则进行了复位置0的操作。

6. 8259A的中断过程—CPU响应硬件中断的过程

  1. 首先由中断请求寄存器寄存加到引脚IR0~IR7上的中断请求
  2. 在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求被送到优先权电路判优
  3. 经过优先权电路的判别,选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号
  4. CPU满足一定条件后,向8259A发出中断响应信号(2个负脉冲)
  5. 8259A从引脚INTA收到第1个中断响应信号之后,立即使中断服务寄存器中与被选中的中断源对应的那一位置1,同时把中断请求寄存器中的相应位清0
  6. 从引脚INTA收到第2个中断响应信号后,8259A把选中的中断源类型码n,通过数据线送往CPU
  7. 在实模式下,CPU从4×n~4×n+3单元取出该中断源的中断向量→IP、CS,从而引导CPU执行该中断源的中断服务程序
  8. CPU完成中断服务程序中的任务,向8259A写中断结束命令字,使ISR相应位清0.执行IRET,返回被中断的程序继续原来的任务。

7. 8259A的中断管理方式

中断优先级管理方式:完全嵌套方式、特殊嵌套方式、自动循环优先权方式

中断结束方式:自动中断结束方式(AEOI)、常规EOI方式、特殊常EOI方式

中断屏蔽方式:普通屏蔽方式、特殊屏蔽方式

中断触发方式:边沿触发、电平触发

总线连接方式:缓冲方式、非缓冲方式

286以上微机的8259A中断管理方式——系统加电后由BIOS对8259A初始化编程,设定中断管理方式:

  1. 系统8259A,中断触发方式为边沿触发
  2. 中断屏蔽方式采用常规屏蔽方式,即应用时,向8259A中断屏蔽寄存器写入适当屏蔽字即可屏蔽/开放某一级中断
  3. 中断源为固定优先级,即IR0中断请求级别最高IR7中断请求级别最低
  4. 采用常规中断结束方式,即在中断服务子程序结束之前向8259送中断结束命令

8. 8259A的编程

对8259A编程分2步进行:

(1)对8259A进行初始化编程        ——系统加电后,由BIOS完成

(2)对8259A进行应用编程           ——编写中断程序时完成,有2项内容:

需要时,向8259A中断屏蔽寄存器写入屏蔽字

每一个硬件中断服务程序结束前必须向8259A送中断结束命令字,通知8259A本次中断结束,否则8259A不能响应同一中断源的下次中断。

8259A收到中断结束命令后,把ISR中的置1位清0

9. PC/AT可屏蔽中断

PC/AT使用2片8259A级连,管理15级中断

中断源与中断类型:

主8259

中断源

中断类型

从8259

中断源

中断类型

IR0

日时钟

08H

IR0

实时时钟

70H

IR1

键盘

09H

IR1

用户中断

71H改向0AH

IR2

从8259

 

IR2

保留

72H

IR3

辅串口

0BH

IR3

保留

73H

IR4

主串口

0CH

IR4

保留

74H

IR5

并行口2

0DH

IR5

协处理器

75H

IR6

软盘

0EH

IR6

硬盘

76H

IR7

并行口1

0FH

IR7

保留

77H

中断优先级为主IR0、IR1、从IR0~IR7,主IR3~IR7.

中断结束后,要向主(和从)8259A送中断结束命令20H。

系统分配的8259A端口地址

 

中断屏蔽寄存器口地址

接收中断结束命令的寄存器口地址

主8259A

21H

20H

从8259A

A1H

A0H

 要求掌握的可屏蔽中断:

 (1)日时钟中断

中断源:系统8254 0# 计数器    

中断类型:08H、1CH     

用户可置换的中断向量:08H、1CH     

08H中断的服务流程:

       a.开中断,保护现场,40H->DS  

       b.对日时钟计数器进行一次加1计数  

       c.测算软驱点记得关闭时间

       d.执行INT 1CH指令

       e.向主8259A发送EOI命令

       f.恢复现场,执行IRET指令

系统日时钟终端开发应用
  适用场景 子程序 08H型中断向量置换后的入口地址 用户中断服务程序结束
08H中断 定时周期不等于55ms的整数倍 DOS系统25H号子程序 4*08H~4*08H+3单元 结束前需要向8259A发送中断结束命令
1CH中断 定时周期等于55ms的整数倍 DOS系统25H号子程序 4*08H~4*08H+3单元 结束前不需要向8259A发送中断结束命令

                   谨防DOS重入!!!

(2)用户中断     

中断源:系统的ISA总线B4端子(IRQ9)引入的中断请求信号    

中断类型:71H、0AH     

用户可置换的中断向量:71H、0AH

71H型中断服务程序处理流程:

         a.开中断、保护现场

         b.向从8259A发出中断结束命令:MOV  AL,20H    

                                                                   OUT  0A0H,AL

         c.执行INT 0AH,转向0AH服务程序   

需要提前做的工作是:

          a.把外扩中断源的中断请求接入ISA总线B4端子

         b.开放用户中断:只有从8259A的IMR1置0,主8259A的IMR2置0,其中断请求方能送到CPU

IN     AL,0A1H
AND    AL,11111101B
OUT    0A1H,AL
IN     AL,21H
AND    AL,11111011B
OUT    21H,AL

          c.置换中断向量

  子程序 入口地址 中断结束
0AH DOS系统25H 4*0AH~4*0AH+3 只向8259A送结束命令
71H DOS系统25H 4*71H~4*71H+3 主从8259A各送一结束命令

10. 中断程序设计

(1)主程序的编写主要包括

           中断向量的置换(DOS系统功能35H和25H)

           硬件中断通路的开放和屏蔽:对于日时钟 08H(或其中的1CH),  默认下主8259A已经打开,无需再进行开放操作

(2)中断服务程序的编写

          根据置换的中断类型不同,需要解决是否要对中断管理器8259A写中断结束命令字的问题

          对于日时钟 08H(或其中的1CH),不需要写中断结束命令字

第3章 微机系统串行通信

1. 基本概念

通信的基本方式

           通信的基本方式分为并行通信和串行通信

           串行通信分为串行同步通信和串行异步通信

数据的传输方式:

          单工方式:只允许数据按照一个固定的方向传送

          半双工方式:要求收发双方均具备接收和发送数据的能力,但数据不能同时在两个方向上传送

          全双工方式:收发双方可同时进行数据传送

2.串行异步通信——标准数据格式

四部分:

  1. 起始位 :          1位逻辑‘0’
  2. 数据位:           5~8位 0/1代码
  3. 奇偶校验位:    0~1位‘0’或‘1’
  4. 停止位:            1、1.5、2位逻辑‘1’

【例】异步通信一帧数据格式中,按照发送的次序,先传送起始位,紧接着是数据5~8位,数据位后依次为奇偶校验位停止位

3. 串行通信接口标准——RS-232C

功能特性: 标准定义了25针连接器中的20 条连接线(常用的信号线)

信号电平标准(电气特性)

       RS-232C标准规定: 逻辑“1”信号,电平在 –3V ~ -15V之间;逻辑“0”信号,电平在 +3V ~ +15V之间

        因此,使用RS-232C与微机接口时,需要将TTL电平(0 ~ 5V)与RS-232C电平进行转换

4. 可编程串行异步通信接口芯片8250

8250内部寄存器从使用角度来说有10个,分成3类:

 

 

寄存器名称

端口地址

一类

2个数据寄存器

发送保持寄存器

 

3F8H/2F8H写入

接收缓冲寄存器

3F8H/2F8H读出

二类

5个命令字寄存器

通信线控制寄存器

3FBH/2FBH

2个除数寄存器

3F8H/2F8H(低位)

3F9H/2F9H(高位)

中断允许寄存器

3F9H/2F9H

MODEM控制寄存器

3FCH/2FCH

三类

3个状态寄存器

通信线状态寄存器

3FDH/2FDH

中断识别寄存器

3FAH/2FAH

MODEM状态寄存器

3FEH/2FEH

【例】利用主串口查询方式发送一个“A”。思路就是先查询通信线状态寄存器,由D5位看是否空闲,不空闲则继续查询进行等待,如果空闲就由主串口将A发到发送保持寄存器去。

SCANT:	        MOV    DX ,	3FDH
		IN     AL ,	DX
		TEST   AL ,	20H	; 00100000
		JZ	   SCANT	; D5=1
		MOV	   DX ,	3F8H
		MOV    AL ,	‘A’
		OUT    DX ,	AL

【例】利用辅串口查询方式接收一个字符。首先查看发送移位寄存器是否空闲,如果为0则表示不空闲,为1则继续下面的接收。

SCANR:	MOV	DX ,	2FDH
		IN	AL ,	DX
		TEST	AL ,	01H	; 00000001
		JZ	SCANR	; D0=1
		MOV	DX ,	2F8H
		IN	AL ,	DX

8250的自发自收

             内环:自动将发送移位寄存器和接收移位寄存器短接
             外环:人为将RS-232接口芯片端子2和端子3用线连接起来,属正常通信

直接对8250端口进行初始化编程的步骤

  1. 设置寻址位:80H→通信线控制寄存器,使寻址位为1
  2. 将除数高8位/低8位→除数寄存器高8位/低8位,确定通信速率
  3. 将D7=0的控制字写入通信线控制寄存器,规定一帧数据的格式
  4. 设置中断允许控制字: 若采用查询方式,置中断允许控制字为0 ,若采用中断方式,置中断允许控制器的相应位为1
  5. 设置MODEM控制寄存器: 中断方式:D3=1允许8250送出中断请求信号 ,查询方式D3=0 ,内环自检D4=1 ,正常通信D4=0 。使用联络线:D1、D0位置1

5.串行通信的外部环境

外部环境:就是串口连接器RS-232C引脚的连线方式

连线方式与串口的通信方式有关

连线方式与编程时使用的编程手段(对端口直接操作,或调用BIOS通信软件)有关

6. 8250的应用编程

设计考虑:

  1. 题型:单端自发自收,点—点通信(全双工、单工)
  2. CPU与串口交换信息的方式:查询或者中断
  3. 编程手段:对端口直接编程、调用BIOS通信软件
  4. 根据题目要求组织相应的外部环境

8250查询方式下接收和发送程序的编程

  • 在发送数据前,读通信线状态寄存器(状态口)获取发送保持或移位寄存器(数据口)是否空闲   3FDH->20H->JNZ->3F8H->间址放到AL,OUT到端口
  • 在接收数据前,读通信线状态寄存器(状态口)获取接收缓冲寄存器(数据口)是否已经收到1帧数据 3FDH->01H->JNZ->3F8H ->IN到AL,AND 7FH,显示即可

如果希望8250采用中断控制方式发送和接收数据,编程时应该采取哪些措施?

如果是中断控制方式发送,则DX为3F9H时,开放D1发送中断请求,即AL为02H;如果是中断控制方式接收,则DX为3F9H时,开放D0接收中断请求,即AL为01H。

【例】A、B两台PC机利用主串口进行点-点单工通信(不用联络线),发送采用查询方式,接收采用中断方式。一帧字符包含7个数据位,1个停止位,1个校验位,通信速率为4800波特(分频系数为0018H)。

2---->3             7----7


注:规定在RS-232C接口观察到的引脚中,正电位为0,负电位为1.这与8250观察到的波形中0、1颠倒。

(3)用对端口直接编程的方法为接收方编写8250初始化程序段。

;寻址位置1
	MOV     DX, 3FBH
	MOV     AL, 80H
	OUT     DX, AL 
;写除数高8位
	MOV     DX, 3F9H
	MOV     AL, 00H
	OUT     DX, AL 
;写除数低8位
	MOV     DX, 3F8H 
	MOV     AL, 18H
	OUT     DX, AL   
;无校验传送,8位数据
	MOV     DX,3FBH
	MOV     AL,0AH
	OUT     DX,AL 
;写中断允许控制字
	MOV     DX,3F9H
	MOV     AL,01H
	OUT     DX,AL 
;MODEM控制寄存器
	MOV     DX,3FCH 
	MOV     AL,08H
	OUT     DX, AL

(4)编程实现发送方查询方式发送数据‘A’的程序段。

SCAN:MOV   DX,3FDH
    IN     AL,DX
    TEST   AL,20H
    JZ     SCAN
    MOV    DX,3F8H
    MOV    AL,41H
    OUT    DX,AL

第4章 并行IO接口

1. 8255A的内部结构和工作方式

(1)内部结构、端口地址以及与系统总线的连接

(2)8255A三种工作方式(方式0 ~方式2 )的工作特点和I/O过程

工作方式

适用的端口

方式0:基本型输入/输出

A口、B口、C口

方式1:选通型输入/输出

A口、B口

方式2:双向数据传送型

A口

(3)在方式1中C口哪几个引脚作为信号联络线,各信号联络线的含义

当A口工作在方式1输入时,PA7~PA0为端口的输入数据线,PC5和PC4为联络线。PC4为\overline{STB_{A}},定义为输入,PC5被定义为IBF_{A},定义为输出,PC3被定为INTR_{A},中断请求输出线。当B口工作在方式1输入时,PB7~PB0为端口的输入数据线,PC2和PC1为联络线。PC2为\overline{STB_{B}}\overline{STB_{b}},定义为输入,PC1被定义为IBF_{B},定义为输出,PC0被定为INTR_{B},中断请求输出线。

\overline{STB}:输入选通信号,低电平有效,由外设发往8255A。有效时,外设数据写入相应端口的输入寄存器中去。

IBF:输入缓冲器满,高电平有效,由8255A发往外设。CPU采用查询方式从8255A读取数据之前,应查询IBF,只有当IBF=1时,CPU才从A口或者B口读取输入数据。读取完毕后,IBF=0,表示输入缓冲器空。

INTEA:A口中断允许寄存器,受PC4的置0/置1命令字控制,只有为1时,A口允许中断。

INTEB:B口中断允许寄存器,受PC2的置0/置1命令字控制,只有为1时,B口允许中断。

INTR:中断请求信号,高电平有效。在中断允许(INTEA=1或INTEB=1)的情况下,8255A接收到一个端口数据后(IBF=1),乡CPU发出中断请求。

 

当A口工作于方式1的输出时,PC7自动定义为输出线,改称\overline{OBF_{A}},PC6自动定义为输入线,称为\overline{ACK_{A}}。这是一对联络线信号。当B口工作于方式1的输出时,PC1自动定义为输出线,改称\overline{OBF_{B}},PC2自动定义为输入线,称为\overline{ACK_{B}}。这是一对联络线信号。

OBF:输出缓冲器满,低电平有效。低电平时表示CPU已经把输出数据写入指定的端口数据寄存器中。CPU用查询方式向8255A输出数据时,应先查询OBF,只有当其为OBF=1时,CPU才能输入下一个数据。

\overline{ACK}:外设的应答信号,,低电平有效。该信号是由已接受数据的外设对OBF的应答信号。这个信号可以使OBF变成1.

INTEA:受PC6控制,只有=1时,A口允许中断

INTEB:受PC2控制,只有=1时,B口允许中断

INTR:中断请求信号,高电平有效。在中断允许(INTEA=1或INTEB=1)的情况下,8255A接收到一个端口数据后(\overline{OBF}=1),乡CPU发出中断请求。

2. 8255A初始化编程

工作在方式0时:方式选择控制字→控制口

工作在方式1、2时: a)   方式选择控制字→控制口 ;b)   C口按位置0/1控制字→控制口

【例】设8255A的控制口地址为21BH,编写8255A的初始化程序。要求8255A的A口工作在方式0,数据输出。B口工作在方式1,数据输入。C口的上半部分数据输出,下半部分数据输入,并允许B口使用中断方式与CPU交换信息。

MOV    DX,21BH
MOV    AL,10000111B
OUT    DX,AL
MOV    AL,00000101B
OUT    DX,AL

【例】设8255A端口地址为80H~83H。8255A的3个端口都工作在方式0,端口A为输入,端口B为输出,端口C为输出。试对其进行初始化。

MOV    AL,10010000B
OUT    83H,AL

写完控制字后,CPU可以使用IN/OUT指令与8255A传数据
IN    AL,80H
OUT   81H,AL
OUT   82H,AL 

3. 8255A应用编程

1)当数据口(A、B或C)工作在方式0时: 直接采用IN/OUT指令对其进行读写。

2)当数据口(A或B)工作在方式1时:

         如果采用查询方式,且 A或B口定义为输入口,先用IN指令读入C口的内容,查询其中的IBF=1时,表示CPU可以继续用IN指令从A或B口读入外设送来的数据。

         如果采用查询方式,且 A或B口定义为输出口,先用IN指令读入C口的内容,查询OBF=1 时,表示CPU可以用OUT指令向A或B口写数据以送给外设

        如果采用中断方式,需要使相应的中断允许标志(INTE)置0或者置1,以开放中断。

 

5.总线

1.总线的类型

按照传输信号的性质:地址总线、数据总线和控制总线

按照总线连接的对象和所处系统的层次:芯片级总线、系统总线、局部总线和外部总线

2.地址线及控制信号

A31~A3:地址线,A2~A0不对外

3.地址线及控制信号

\overline{BE7}~\overline{BE0}\overline{BE0}:字节允许信号

4.总线周期控制信号

M / \overline{IO} D / \overline{C} W / \overline{R} 模式

0

1 0 I/O读数据
0 1 1 I/O写数据
1 1 0 存储器读数据
1 1 1 存储器写数据

5.系统控制信号

INTR:可屏蔽中断请求信号

NMI:非屏蔽中断请求信号

6.总线仲裁信号

HOLD:总线请求信号

HLDA:总线请求响应信号

6.存储器系统

存储器的分类

  • 按照存储介质分可分为半导体存储器和磁表面存储器。
  • 按照存取方式分类分为随机存储器和顺序存储器。
  • 按照存储器的读写功能分类分为只读存储器(ROM)和随机存储器(RAM)。
  • 按照信息的可保存性分类可分为永久性存储器和非永久性存储器。
  • 按照存储器在计算机系统中的作用分类可分为主存储器、辅助存储器、缓冲存储器和控制存储器等。

存储器的主要性能指标

  • 1.存储器容量
  • 2.存取时间
  • 3.存取周期
  • 4.可靠性
  • 5.功耗与集成度
  • 6.性能价格比
  • 7.存取宽度

随机存储器和只读存储器,分类情况为:

半导体存储器可分为只读存储器(ROM)和随机存储器(RAM)。

只读存储器(ROM)分为掩膜ROM、可写入只读存储器PROM、可擦除的可编程只读存储器EPROM和电擦除只读存储器E2PROM。

随机存储器(RAM)分为静态RAM(SRAM)和动态RAM(DRAM)。

存储器的扩展技术

1.存储器容量的扩展

由于存储芯片的容量有限,一个存储体往往是要由一定数量的芯片构成的。根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出总的芯片数。

总片数=总容量/容量/片

例:存储器容量为8K*8b,选用1K*4b的2114芯片,需要的芯片数为(8K*8b)/(1K*4b)=16片

(1)位扩展

即只在位数进行扩展,如使用64K*1b的SRAM芯片组成64K*8b的存储器,所用芯片数为(64K*8b)/(64K*1b)=8片。

(2)字扩展

即只在字数方向扩展,而位数不变,如使用16K*8b的SRAM芯片组成64K*8b的存储器,所用芯片数为(64K*8b)/(16K*8b)=4片。

2.存储芯片的地址分配和片选

存储器与CPU相连时,特别是在扩展存储容量的场合下,主存的地址分配就是一个重要的问题;确定地址分配后,又有一个选择存储芯片的片选信号的产生问题。

CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后再从选中的芯片中依地址码选择出相应的存储单元,以进行数据的存取,这称为字选。片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端,N由片内存储容量作2的对数运算决定,而片选信号则是通过高位地址得到的。实现片选的方法分为线选法、全译码法和部分译码法。

习题:现有1024*1b的存储芯片,若用它组成容量为16K*8b的存储器。试求:

(1)实现该存储器所需的芯片数量。

(2)该存储器所需的地址码总位数是多少?其中几位选片?几位用作片内地址?

答:(1)N=(16K*8b)/(1K*1b)=128片,在计算所需芯片总量时只需要明确组成芯片大小和最终目标容量即可。

(2)16K×8=2^14×8,地址线为14根,芯片为1024位=2^10位,则需要10位用于片内地址,剩下4位用作选片。

地址线等条数由生成的最终存储器中地址数目来确定,片内地址是组成单元的所需位数,剩下的便是用来选片的。

习题记录

 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37865996/article/details/85569745

智能推荐

【部署网站】使用nginx+tomcat部署博客网站_用nignx发布网站和用tomcat部署-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏16次。一、什么是静态网站、动态网站?静态网站没有采用任何程序开发,是纯粹使用html语言写出的网站,网页文件名以html或htm结尾。原则上不会受到攻击入侵,但是也无法在网络上实时更新内容,就纯粹的是制作好的页面。动态网站目前的主要开发语言有ASP,JSP,PHP,ASP.NET在制作好之后,都有一个网站管理后台,当以管理员身份登陆时,可以对网站的内容进行增删操作,直接在网上进行这些操作,虽然它可以随时更新,但是速度较慢。并且需要区分的是,动态网站的动态指的是动态实时更新而非网站有动态画面。区分静态网站和动_用nignx发布网站和用tomcat部署

android 实现定时任务,Android 实现定时任务的五种方式的讲解-程序员宅基地

文章浏览阅读3.9k次。1、普通线程sleep的方式,可用于一般的轮询Pollingnew Thread(new Runnable() { @Override public void run() { while (true) { //todo ..._android 定时20个小时

Dr_can模型预测控制笔记与代码实现-程序员宅基地

文章浏览阅读2.7w次,点赞206次,收藏552次。因而我们引入模型预测控制(Model PredictiveControl)的概念,对于一般的离散化系统(因为实际计算机实现的控制系统都是离散的系统,连续系统离散化的方法在此不述)。在k时刻,我们可以测量或估计出系统的当前状态y(k),再通过计算得到的u(k),u(k+1),u(k+2)...u(k+j)得到系统未来状态的估计值y(k+1),y(k+2)...y(k+j);我们将预测估计的部分称为预测区间(Predictive Horizon),将控制估计的部分称为控制区间(Control Horizon)_dr_can

由浅入深!小程序FMP优化实录,已拿offer入职_小程序fmp是指的什么(1)-程序员宅基地

文章浏览阅读569次,点赞25次,收藏12次。其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:架构师筑基必备技能Android框架体系架构(高级UI+FrameWork源码)360°Androidapp全方位性能调优设计思想解读开源框架NDK模块开发移动架构师专题项目实战环节移动架构师不可不学习微信小程序混合开发的flutterAndroid学习的资料我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

计算带余除法(四种方法)_带余除法怎么写编程-程序员宅基地

文章浏览阅读387次,点赞12次,收藏4次。给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数。一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。示例:输入:15 2,输出:7 1_带余除法怎么写编程

【Maven教程】(九):使用 Maven 进行测试——动态指定要运行的测试用例、包含与排除测试用例、测试报告、运行TestNG测试、重用测试代码 ~_maven和testng怎么用-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。本文的主题是Maven与测试的集成,不过在讲述具体的测试技巧之前先实现了背景案例的account-captcha模块,这一模块的测试代码也成了本章其他内容良好的素材。maven-surefire-plugin是Maven背后真正执行测试的插件,它有一组默认的文件名模式来匹配并自动运行测试类。用户还可以使用该插件来跳过测试、动态执行测试类、包含或排除测试等。maven-surefire-plugin能生成基本的测试报告,除此之外还能使用cobertura-maven-plugin生成测试覆盖率报告。_maven和testng怎么用

随便推点

表达式计算。问题描述:编写程序,计算并输出如下表达式的值:y=其中a,x,y均为float类型,取值为3.1415926。输出结果要求保留小数点后3位。_serialprintln(a)的结果为-程序员宅基地

文章浏览阅读153次。【代码】表达式计算。问题描述:编写程序,计算并输出如下表达式的值:y=其中a,x,y均为float类型,取值为3.1415926。输出结果要求保留小数点后3位。_serialprintln(a)的结果为

android 自定义Toast 吐司-程序员宅基地

文章浏览阅读274次,点赞3次,收藏8次。【Android 详细知识点思维脑图(技能树)】其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

FP-Growth算法之FP-tree的构造(python)_利用fpgrowth算法对其构造一个fptree,树的最大高度-程序员宅基地

文章浏览阅读7.4k次。前言:关于 FP-Growth 算法介绍请见:FP-Growth算法的介绍。 本文主要介绍 FP-tree 的构造算法,关于伪代码请查看上面的文章。上接:FP-Growth算法python实现;下接:FP-Growth算法之频繁项集的挖掘(python)。 正文:tree_builder.py\color{aqua}{tree\_builder.py}文件:#coding=utf-8import_利用fpgrowth算法对其构造一个fptree,树的最大高度

统信UOS linux下opencv应用编译时的头文件和库文件路径查找设置方法_编译时找不到opencv头文件-程序员宅基地

文章浏览阅读1.3k次,点赞25次,收藏15次。本文介绍了在统信UOS 的linux Debian系环境下,通过设置环境变量、编译指令参数指定路径、pkg-config配置等方法设置opencv库的头文件和库文件路径的方法,通过这些方法可以是的gcc或g++编译器能顺利找到opencv的头文件和库文件。_编译时找不到opencv头文件

【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型_hgcn-程序员宅基地

文章浏览阅读1.8k次。HCGN:面向集体分类的异构图卷积网络深度学习模型摘要集合分类是研究网络数据的一项重要技术,旨在利用一组具有复杂依赖关系的互联实体的标签自相关性。随着各种异构信息网络的出现,集合分类目前正面临着来自异构信息网络的严峻挑战,如复杂的关系层次、潜在的不相容语义和节点上下文关系语义。为了应对这些挑战,本文提出了一种新的基于异构图卷积网络的深度学习模型,称之为HGCN,用于对HINs中的实体进行集体分类。我们的工作包括三个主要贡献:1)HGCN不仅通过多层异构卷积从关系复杂的HINs中学习潜在的关系,而且用适当_hgcn

java的重写_java 类的重写-程序员宅基地

文章浏览阅读211次。java的重写重写的一般用法方法重写的具体要求文章内容选自尚硅谷重写的一般用法java的重写是为了子类在继承父类方法的时候,需要用到父类的方法,但是方法体又和父类不完全一样,因此得在子类中创建一个和父类同名同参数的方法,实现方法的重写。方法的重写(override或overwrite)必须和父类同名,参数列表也相同重写后当子类调用父类的方法的时候,调用的是子类中重写的方法,而不是父类的方法。代码如下,创建一个Person类package com.atguigui.java;public_java 类的重写