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周下