微机原理(学习笔记):第7章 经典接口及定时器

13周上:http://newesxidian.chaoxing.com/live/viewNewCourseLive1?liveId=10492969

0x00 预备知识

输出接口:

*上图是一个简化的图,其实一般情况下输出接口不是直接接CPU的,而是接在8259中断控制器上,然后由8259中断控制器统一处理这些中断信号,向CPU发起INTR

输出接口向CPU发起中断请求,8086CPU收到中断请求后,运行对应的中断例程,将数据通过

低8位数据线写入到输出接口中。

OBF状态信号线:输出接口告诉外设,我有数据你来取

Output Buffer Full 输出缓冲区满信号

外设采样8个数据线将数据取走,然后返回给输出接口一个ACK信号 表示我已经将数据取完了

输出接口收到ACK的负脉冲后,将OBF置为1 ,表示缓冲区空了。并向CPU发送INTR,表示

缓冲区空了,可以继续写入。

输入接口:

输入接口中数据由外设提供,

IBF:输入缓存区满信号input buffer full,低电平表示空了

如果外设检测到IBF为低电平,那么外设就向输入接口发送数据和一个STB 写信号(锁存信号)

外设写完之后,输入接口立即将IBF变为高电平

输入接口有能力向CPU发送中断请求信号,告诉CPU调用中断例程来读数据。

双向的具有中断功能的输入输出接口:

上面的红色寄存器只能写不能读

下面的绿色寄存器只能读不能写

他们可以只占用一个接口地址

0x01 可编程并行接口8255

三种工作方式(考试只考方式0)

方式0的输入 相当于三态门

方式0的输出 相当于锁存器

方式1的输出相当于具有中断功能的输出接口

方式1 的输入相当于具有中断功能的输入接口

方式2

8255结构图:

可编程:内部有控制寄存器,向控制寄存器中写入不同的数据,就可以让其工作在不同的方式

地址线只有2根:

C口只能工作在方式0,

A口可以工作在方式1和方式2

B口可以工作在方式1

控制字的格式:(考试会作为已知条件给你,你要能看懂)

如何写入控制寄存器?

向8255的地址11中写一个最高位为1的数(最高位必须为1,表示功能控制),

6、5 规定A口的工作方式 因为A口可以工作在方式0、1、2 所以必须用2位

4 规定A口到底是输入还是输出

3 C口的高4位 C口只能工作在方式0,C口的高4位到底是输入还是输出

2 规定B口的工作方式,B口只能工作在方式0或者方式1 所以只用1位就搞定了

1 规定B口到底是输入还是输出

0 C口的第四位 到底是输入还是输出(只能工作在方式0)规律: 0 output 1 input

如果最高位为0,那么控制寄存器就不再是作为功能控制之用了

表示C口按位操作

D3D2D1 表示要修改C口寄存器的哪一位

13周下:

8255的寻址以及连接使用:

8255 与8088CPU连接:

分析:

8255的A0和A1 仍然是和系统总线的A0A1连接,所以一定是和8088CPU连接

如果是和8086的CPU连接,那么8255的A0和A1连接的应该是系统总线的A1和A2

16根地址总线并没有全用

只用到了低10位地址,部分地址译码

认为高位地址为0即可。

分析:

0000 0011 1000 0000  0380H A口寄存器

0000 0011 1000 0001 0381H B口寄存器

0382H C口寄存器

0383H 控制寄存器

BUSY信号为高电平时,必须等待

等不忙的时候,就会送出一个ACK负脉冲,告诉接口它不忙了

或者也可以直接判断BUSY变为低电平就说明不忙了

8255的初始化程序:

让A口工作在方式0,并且是输出 ,C口的高4位也是输出,B口没有用,所以无所谓,

C口低方向为输入

1000 0xx1

把C 口寄存器第6位变为1,表示现在不写

控制程序:

读C口寄存器,只保留C1 反应忙信号状态

往A口寄存器写入数据,

往PC6送负脉冲(开始写),因为只有C口高4位是输出,可写,低4位是输入不可写,所以

虽然送过去8位,但是只有4位可写

往PC6送正脉冲(恢复)

14周上

8253怎么考?要么让你设计电路写初始化程序,要么给你电路和初始化程序,让你画波形图

可编程定时器 8253

定时器就是计数器

首先需要有一个时钟信号,当时间到了的时候Out端就会有变化

还需要一个Gate门控信号,该信号为有效电平时开始计数,无效时结束计数

A1 A0

0  0  定时器0的计数值寄存器 (可读可写)

0 1  定时器1 的计数值寄存器(可读可写)

1 0 定时器2 的计数值寄存器(可读可写)

1 1 控制字(只能写不能读)

计数值寄存器内部实际上有三个寄存器:

一个寄存器存初始值,我们写计数值寄存器的时候,实际上就是向该初始值寄存器写

另一个寄存器存当前值,当我们读计数值寄存器的时候,实际上就是读当前值寄存器

最后一个寄存器 称为减一寄存器

 

8253的工作方式

6种工作方式一定要记住

方式0和方式1:

产生一定长度的负脉冲,负脉冲的长度 = 计数初值 个时钟周期

方式0:一旦计数初值被写入后,负脉冲马上开始

方式1:计数初值被写入后还要等到门控信号上升沿来了之后,负脉冲才会开始

注意:

门控信号高电平允许计数,低电平暂停计数

当计数初值写入之后,第一个时钟周期,会将计数值从初值寄存器移动到减一寄存器

,也就说第一个时钟下降沿之后,负脉冲才会开始。

此后,每一来一个时钟下降沿,计数值会减一

当计数值降到0的时候,负脉冲马上变为正脉冲。

注意:如果门控信号变低了,即便是遇到时钟下降沿,也不会进行减一。

方式一:

方式2和方式3 都是产生周期性信号

方式2周期性负脉冲

方式3周期性方波

计数初值个周期

门控信号:低电平禁止计数,即禁止遇到下降沿自减

方式3:

42

14周下

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值