8.1 可编程定时器/计时器8253
在控制系统中,常常要求有实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等,也往往要求有计时器能对外部事件计数
定时或计数的工作实质均体现为对脉冲信号的计数。如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程就是定时;如果计数的对象是外部过程相对应的脉冲信号,则此时就是计数
8.1.1 主要功能
8253主要有以下功能
(1)有3个独立的16位计数器
(2)每个计数器都可以按照二进制或BCD码进行计数
(3)每个计数器的计数速率可达到2MHz(8254-2计数频率可达到10MHz)
(4)每个计数器有6种工作方式,可由程序设置和改变
(5)所有的输入输出引脚都与TTL电平兼容
8.1.2 8253的内部结构
(1)数据总线缓冲器。CPU用输入输出指令对8253进行读写所有信息,都是通过这8条总线传送的
(2)读/写逻辑。8253内部操作的控制部分
(3)控制字寄存器。在8253初始化编程时,由CPU写入控制字以决定计数器的工作方式。此寄存器只能写入而不能读出
(4)计数器#0、计数器#1、计数器#2。这是三个计数器/定时器,每一个都由一个16位的可预置值的减法计数器构成。这三个计数器的操作是完全独立的
-
8253的内部机构
8.1.3 8253的引线
- 8253与CPU接口的引线,没有复位信号(RESET引脚)。每一个计数器有三条引线:
- CLK输入脉冲线:计数器就是对这个脉冲技术。8253规定,加载CLK引脚的输入时钟周期不能小于380ns。
- GATE:门控信号输入引脚。这是控制计数器工作的一个外部信号。当GATE引脚为低(无效)时,通常都是禁止计数器工作的;只有当GATE为高时,才允许计数器工作。
- OUT:输出引脚。当技术到“0”时,OUT引线上必然有输出,输出信号的波形取决于工作的方式
8253内部端口的选择是由引线A1
和A0决定的,它们通常接至地址总线的A1和A0。各个通道的读/写操作的选择如表所示
8.1.4 8253的控制方式
(1)计数器选择(D7D6)。控制字的最高两位决定是哪一个计数器的控制字。由于三个计数器的工作是完全独立的,所以需要有三个控制字寄存器分别规定相应计数器的工作方式。但它们的地址是同一个,即A1A0 = 11 —— 控制字寄存器的地址
(2)数据读/写格式(D5D4)
(3)工作方式(D3D2D1)
(4)数制选择(D0)。8253的每个计数器的计数制(二进制技术或BCD码计数器)由这位决定
- 8253有6种不同的工作方式,在不同的工作方式下,计数器的启动、GATE输入信号的作用和OUT信号输出波形有所不同。首先写入控制字,接着写初值,初始值写入计数器,经过一个时钟周期,减法计数器开始工作
1.方式0——技术结束中断的方式
在这种方式下,当控制字CW(Control Word)写入控制字寄存器,则使OUT输出端变低,此时计数器没有赋予初值,也没开始计数
8.1.5 8253的工作方式
-
要开始计数,GATE信号必须为高电平,并在写入计数初值后,通道开始计数,在计数过程中OUT线一直维持为低,直到计数到“0”时。OUT输出变高。
其中,LSB=4表示只写低8位计数值4.最低下一行是计数器中的数值
方式0工作有以下特点
(1)计数器只计一遍。当计数到0时,并不恢复计数值,不开始重新计数,且输出保持为高。只有在写入另一个计数值时,OUT边低,开始新的计数
(2)8253内部是在CPU写计数值的信号上升沿,将此值写入计数器的技术初值寄存器,在信号上升沿后的下一个CLK脉冲。如果设置计数初值为N,则输出信号OUT是在写入计数值后经过N+1个CLK脉冲才变高的。这个特点在方式1、方式2、方式4和方式5也是同样的
(3)在计数过程中,可由门控制信号控制暂停。当GATE-0时,计数暂停,当GATE变高后就接着计数
(4)在计数过程中可改变计数值。若是8位计数,在写入新的技术值后,技术器将按新的计数值重新开始技术,如图所示。如果是16位技术,在写入第一个字节后,计数器停止计数,在写入第二个字节后,计数器按照新的数值开始计数。即改变计数值是立即有效的
(5)8253内部没有中断控制电路,也没有专用的中断请求引线,所以若要用于中断,则可选用OUT信号作为中断请求信号,但需要有外接的中断优先权排队电路与向量产生电路
若8253的地址为04H ~ 07H,要使计数器1工作在方式0,仅用8位二进制数,计数值为128,初始化程序:
MOV AL,50H ;设控制字
OUT 07H,AL ;输至控制字寄存器
MOV AL,80H ;计数值
OUT 05H,AL ;输至计数器1
2.方式1——可编程单稳态触发方式
这种方式由外部门控信号GATE上升沿触发,使输出端OUT变为低电平,产生一个单拍负脉冲信号,脉冲宽度由计数值决定。
3.方式2——频率发生器方式
这种方式的功能如同一个N分频计数器,输出是输入时钟按照计数值N分频后的一个连续脉冲。
4.方式3——方波发生器方式
该方式与方式2相类似,只是OUT输出的是对称方波(计数初值N为偶数)或近似对称方波(计数初值N为奇数)。
5.方式4——软件触发宣统方式
写入一次初值开始一次新的计数。
6.方式5——硬件触发选通方式
该方式为硬件触发计数方式,即门控信号GATE上升沿触发计数。
8.1.6 8253的编程
- 要使用8253必须首先进行初始化编程,初始化编程的步骤如下。
(1)写入计数器控制字,规定计数器的工作方式
(2)写入计数值
①若规定只写低8位,则写入的为计数值的低8位,高8位自动置0
②若规定只写高8位,则写入的为计数值的高8位,低8位自动置0
③若是16位计数值,则分两次写入,先写入低8位,再写入高8位
例如:要用计数器0,工作在方式1,按BCD码计数,计数值为5080H。则初始化编程有以下步骤
(1)确定通道控制字
(2)计数值的低8位位80H
(3)计数值的高8位位50H
若端口地址位位F8H ~ FBH,初始化程序为
MOV AL,33H
OUT 0FBH,AL
MOV AL,80H
OUT 0F8H,AL
MOV AL,50H
OUT 0F8H,AL
CPU可以用输入指令读取8253任一计数器的计数值,此时CPU督导的是执行输入指令瞬间计数器的现行值。由于8253的计数器是16位,所以要分两次读至CPU,因此,若不设法锁存的话,则在输入过程中,计数值可能已变化了
8.2 可编程并行接口8255A
8.2.1 8255A的内部结构
Intel 8255A是一个为8080、8085和8088微型机系统设计的通用I/O接口芯片。它可用程序来改变功能,通用性强,使用灵活,通过它可直接将CPU总线接向外设
它由以下几部分组成
1.数据端口A、B、C
三个输入/输出端口都是8位,都可以选择输入或输出,但功能上有着不同
(1)端口A:一个8位数据输出锁存和缓冲器;一个8位数据输入锁存器
(2)端口B:一个8位数据输入/输出、锁存/缓冲器;一个8位数据输入缓冲器
(3)端口C:一个8位数据输出锁存/缓冲器;一个8位数据输入缓冲器(输入没有缓存)
通常端口A或B作为输入/输出的数据端口,而端口C作为控制或状态信息的端口,它在“方式”字控制下,可以分为两个四位的端口
2.A组合B组控制电路
- 这是两组根据CPU的命令字控制8255A工作方式的电路。它们有控制寄存器,接收CPU输出的命令字,然后分别决定两组的工作方式,也可根据CPU的命令字对端口C的每一位实现按位“复位”或“置位”操作
- A组控制电路控制端口A和端口C的上半部(PC7 ~ PC4)
- B组控制电路控制端口B和端口C的下半部(PC3 ~ PC0)
3.数据总线缓冲器
- 这是一个三态双向8位缓冲器,它是8255A与系统数据总线的接口。输入/输出的数据以及CPU发出的控制字和外设送来的状态信息,都是通过这个缓冲器传送来的
4.读写和控制逻辑
- 它与COU的地址总线的A1、A0以及有关的控制信号()相连,由它控制把CPU的控制命令或输出数据送至相应的端口,也由它控制吧外设的状态信息或输入数据通过响应端口,送至CPU
5.控制信号功能
(1)——片选信号,低电平有效,由它启动CPU与8255A之间的通信
(2)——读信号,低电平有效。它控制8255A送出数据或状态信息至CPU
(3)——写信号,低电平有效。它控制把CPU输出的数据或命令携带8255A
(4)RESET——复位信号,高电平有效,它清除控制寄存器并置所有端口(A、B、C)为输入方式
6.端口寻址
8255A中有三个输入输出端口,另外,内部还有一个控制字寄存器,共有四个端口,要有两个输入端来加以选择,这两个输入端通常接到地址总线的最低两位A1和A0.
8.2.2 8255A的引线
- 8255A采用40条引脚的双列直插式封装
- CS:片选信号
- RD:读信号
- WR:写信号
- A1、A0:片内寄存器选择信号(输入)
- D7 ~ D0:与CPU侧连接的数据线(双向)
- PA7 ~ PA0:A口外设数据线
- PB7 ~ PB0:B口外设数据线
- PC7 ~ PC0:C口外设数据线
-
RESET:复位信号
8.2.3 工作方式
-
端口选择表
-
方式1的输入组态
-
方式1的输出组态
8.2.4 控制字和状态字
8255A的工作方式,可由CPU用I/O指令输出一个控制字到8255A的控制字寄存器来选择。这个控制命令字的格式如图所示。可以分别选择豆蔻A和端口B的工作方式端口C分为两部分,上半部随端口A,下半部随端口B。端口A能工作于方式0、1和2,而端口B只能工作于方式0和1
-
8255的控制命令字
-
当8255A与CPU采用查询方式工作时,要求CPU读取C端口的内容,根据上述对端口PC各位的定义及对中断屏蔽情况可以很容易地知道读出状态字中各位的含义
8.2.5 8255A应用举例
-
利用8255进行并行通信
上述发送程序中,是检查INTR位,实际上也可以检查发送缓冲器满(PC7)位的状态
8.3 串行通信及串行通信接口芯片
8.3.1 串行通信概述
8.3.2 8251可编程通信接口
8.3.3 8251的编程
8.4数模转换与模数转换接口
8.4.1 数模转换器
1、D/A转换基本原理
2、D/A转换器的主要技术指标
(1)分辨率
分辨率为8位的D/A转换器能给出满量程电压的1/256(即1/28)的分辨能力
(2)精度
绝对精度:是指对应于给定的数字量,D/A输出端实际测得模拟输出值(电流或电压)与理论值之差。绝对精度由D/A转换的增益误差、线性误差和噪声等综合因素决定
相对精度:是指在零点和满量程值校准后,各种数字输入的模拟量与理论值之差,可把各种输入的误差画成曲线
(3)建立时间
(4)输出电平
(5)线性误差
(6)温度系数
3、典型的D/A转换芯片DAC0832
(1)DAC0832的逻辑结构
改变DAC0832的有关控制信号的电平,可使DAC0832处于三种不同的工作方式
①直通方式
②单缓冲方式
③双缓冲方式
4、D/A转换器与微处理器的接口
DAC0832与8位微处理器的连接
8.4.2 模数转换器信号
1、A/D转换的基本原理
1、A/D转换器器的主要技术指标
分辨率
精度
转换时间
电源灵敏度
量程
输出逻辑电平
工作温度范围
![]https://upload-images.jianshu.io/upload_images/6565380-fe48b78147d89b8f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)