第八章 可编程接口芯片
期末考试重点Again
单纯写一遍课后习题 并非全面复习
I/O 接口电路按复杂程度分类
- I/O 接口芯片
这些芯片大都是集成电路,通过 CPU 输入不同的命令和参数,并控制相关的 I/O 电路和简单的外设作相应的操作,常见的接口芯片如定时/计数器、中断控制器、DMA 控制器、并行接口等。 - I/O 接口控制卡
有若干个集成电路按一定的逻辑组成为一个部件,或者直接与 CPU 同在主板上,或是一个插件插在系统总线插槽上。
按照接口的连接对象来分,又可以将他们分为串行接口、并行接口、键盘接口和磁盘接口等。
接口的功能
一般接口电路都是可编程控制的,能根据 CPU 的命令进行功能变换。
- 缓冲锁存数据
- 地址译码
- 传送命令
- 码制转换
- 电平转换
8253 的工作方式
- 方式 0 计数结束产生中断
- 方式 1 可编程单稳触发器
- 方式 2 分频器
- 方式 3 方波频率发生器
- 方式 4 软件触发选通脉冲
- 方式 5 硬件触发选通脉冲
8253 的工作原理简述
8253 有 3 个独立结构完全相同的 16 位计数器和 1 个 8 位控制字寄存器。每个计数器内部分为计数初值寄存器 CR、技术执行部件 CE 和输出锁存器 OL3 个部件,它们都是 16 位寄存器,也可以作为 8 位寄存器来使用。计数器工作时,通过程序给初值寄存器 CR 送入初始值,该初始值再被送入执行部件 CE 进行减 1 计数,而输出锁存器 OL 用来锁存 CE 的内容,该内容可以由 CPU 进行读出操作。
8253 的计数方式中二进制和十进制区别
二进制计数时最大可实现 65536 个脉冲的计数(范围 0~65535),BCD 最大可实现 10000 个脉冲计数(范围 0~9999)
若有一个频率发生器,其频率为1MHz,若要求通过8253芯片产生每秒一次的信号,请问8253芯片该如何连接,假设控制口的地址为203H,试编写初始化程序
- 由于 1MHz=1000000Hz > 65536Hz,故应采用两次分频产生 1Hz 的信号,这里先进行 10000 分频,再进行 100 分频。
- 如果使用计数器 0 和计数器 1,可将 OUT0 接到 CLK1 端,经过两次分频,OUT1 输出的就是要求的信号。
- 假设控制口的地址为 203H,初始化程序如下:
MOV DX,203H ;选择控制口
MOV AL,36H ;00110110B控制字 00选中计数器0,11先读低字节后读高字节,011选择方式3,0选择二进制计数
OUT DX,AL ;输出控制字
MOV AL,10H ;低字节10H输出到计数器0
MOV DX,200H
OUT DX,AL
MOV AL,27H ;高字节27H输出到计数器0
OUT DX,AL ;现在计数器0的初值是2710H=10000D
MOV AL,56H ;01010110B控制字 01选中计数器1,其余位置跟计数器0设置一样
MOV DX,203H
OUT DX,AL
MOV AL,64H ;64H=100D输出到计数器1
MOV DX,201H ;计数器1的初值是100D
OUT DX,AL
在某微机系统中,8253的3个计数器的端口地址分别为60H、61H和62H,控制字寄存器的端口地址为63H,要求8253的通道0工作于方式3,并已知对它写入的计数器初值n=1234H,请写出初始化程序。
mov dx,63h
mov al,36h
out dx,al
mov al,34h
mov dx,60h
out dx,al
mov al,12h
out dx,al
假定有一片8253接在系统中,其端口地址分配如下:0#计数器为220H,1#计数器为221H#,2号计数器为222H,控制口为223H
利用 0#计数器高 8 位计数,计数值为 256,二进制方式,选用方式 3 工作,试编写初始化程序。
mov dx,223h ;控制口
mov al,00100110b;控制字
out dx,al
mov dx,220h
mov al,0
out dx,al ;计数值为256,所以从0开始减
利用 1#计数器高、低 8 位计数,计数值为 1000,BCD 计数,选用方式 2 工作,试编写初始化程序。
mov dx,223h
mov al,01110101b
out dx,al
mov dx,221h
mov al,00h
out dx,al
mov al,10h
out dx,al
假设所用时钟频率为 1MHz,要求通道 0 工作于方式 3,输出频率为 2kHz 的方波,试编写初始化程序。
1M / 2k = 500 次
mov dx,223h
mov al,00110110b
out dx,al
mov dx,220h
mov al,F4H
out dx,al
mov al,01h
out dx,al
要求通道 2 用硬件方式触发,输出单脉冲,时间常数为 26,试编写初始化程序。
mov dx,223h
mov al,10011010b
out dx,al
mov dx,222h
mov al,1ah
out dx,al
8255A 的 A 口、B 口和 C 口一般在使用上的区别
在实际使用中,A 口和 B 口通常只作为独立的输入或输出数据端口使用,而不会作为状态口读入。A 口和 B 口作数据口输入输出时,是按 8 位信息一起传输的,即使只用到其中某一位,也要同时输入输出 8 位数据。
C 口的功能和使用比较特殊,除了可以作数据口使用外,主要是用来配合 A 口和 B 口的工作。C 口的 8 位常常可通过控制命令将其分为 2 个 4 位端口,每个 4 位端口包含 1 个 4 位的输入缓冲器和 1 个 4 位的输出锁存器/缓冲器,它们分别用来作为 A 口和 B 口工作时的输出控制信号与输入状态信号。此外,C 口还可以作为专用联络信号线,以及用作实现位控制之用。
当 8255A 工作于方式 1 时,CPU 如何以中断方式将输入设备的数据读入
当 STB 回到高电平和 IBF 为高电平,且有相应的中断允许信号(即 INTE 为高电平)时,则 8255A 就把 INTR 变为有效,以向 CPU 发中断请求。它表示 8255A 的数据端口已经输入一个新的数据,并向 CPU 请求中断服务。若 CPU 响应此中断请求,则读入数据端口的数据,并有 RD 信号的下降沿使 INTR 复位。INTR 通常和 8259A 的一个中断请求输入段 IR 相连,通过 8259A 的输出段 INT 向 CPU 发出中断请求。
比较 8255A 的三种工作方式的场合
- 方式 0 适用于同步传送或查询传送方式;
- 方式 1 适用于外设能提供选通信号或数据接受信号的场合,且采用中断传送方式比较方便;
- 方式 2 适用于一个并行外设既可以作为输入设备,又可以作为输出设备,并且输入和输出不会同时进行的场合。
RESET 信号有效后,各端口状态
8255A 复位后,其内部控制逻辑电路中的控制寄存器和状态寄存器等都被清除,3 个 I/O 端口均被设置为输入方式;并且屏蔽中断请求,24 条连接外设的信号线呈现高阻浮悬状态。这种态势,将一直维持到 8255A 接收方式选择控制命令时才能改变,使其进入用户所设定的工作方式。这样设计可以使前面操作后寄存器中的内容以及引脚信号不至于影响后面操作的结果。
编程实现用C口让8255A的PC3端口输出连续方波
l: mov dx,xxxh ;控制口地址
mov al,00000110b
out dx,al
call delay
mov al,00000111b
out dx,al
call delay
jmp l
假定8255A的端口地址为0040H~0043H,试编写下列情况的初始化程序:A组设置为方式1,且端口A作为输入,PC5和PC6作为输出;B组设置为方式1,且端口B作为输入
mov dx,43h
mov al,10110110b
out dx,al
设8250串行接口芯片外部的时钟频率为1.8432MHz
8250 工作的波特率为 19200,计算出波特率因子的高、低 8 位分别是多少。
波特率因子=1843200/19200/12=8,低 8 位为 08h,高 8 位为 00h
初始化程序
mov dx,3fbh
mov al,80h
out dx,al
mov dx,3f8h
mov al,08h
out dx,al
mov dx,3f9h
mov al,00h
out dx,al
程序查询方式实现串行通信
- 程序查询方式实现串行通信是指可以通过读线路状态寄存器查相应状态位,来检查接收数据寄存器是否就绪以及发送保持器是否空。在查询式串行通信方式中,8250 引脚 out1 和 out2 均为 1。
串行通信中,设异步传送的波特率位4800,每个数据占10位,问传输2KB的数据需要多少时间
- 位周期=1/4800s
- 总位数=10 x 2 x 1024= 20480 位
- 总时间=20480/4800=4.27s
A/D 和 D/A 转换器在微机应用中起什么作用
- A/D 转换器完成输入模拟量到数字量的转换,供微机采集数据。
- D/A 转换器完成微机输出数字量到模拟量的转换,实现微机控制。
ADC 中的 EOC 信号作用
- 平时为高电平,当其正在转换时为低电平,转换结束时,又变成高电平。这个信号可以用于查询或作为中断申请。
如果0809与微机接口采用中断方式,EOC与微处理器的连接方式
- 第一种方式是EOC直接与CPU的INTR脚连接。
- 第二种方式是把0809的EOC端作为中断请求信号接到中断控制器8259A的中断请求输入端IRi,当EOC端由低电平变为高电平时(转换结束),即产生中断请求。CPU在收到该中断请求信号后,读取转换结果。
- 这种方式避免了占用CPU运行软件延时等待或查询时间,故CPU效率最高。
程序改进:设ADC0809的端口号为PORTAD,则当主程序中的指令OUT PORTAD,AL执行后,A/D转换器开始转换,在转换结束时EOC发出一个高电平为转换结束信号,此信号产生中断请求,CPU响应中断后,调用中断处理程序,在中断处理程序中用IN AL,PORTAD取转换结果。
DAC的工作方式
单缓冲方式
- 特征:输入寄存器或DAC寄存器二者之一处于直通状态,CPU只需一次写入DAC0832即可开始转换。
- 优点:控制简单
- 实现方式:将WR2和XFER接地,ILE接+5V,CS接端口地址译码信号,WR1接系统总线的IOW信号。
双缓冲方式(标准方式)
- 实现方式:当CS=0,WR1=0,ILE=1时,输入寄存器输出随输入而变,WR1由低电平变高电平时,将数据锁入8位数据寄存器;当XFER=0,WR2=0时,DAC寄存器输出随输入而变,而在WR2由低电平变高电平时,将输入寄存器的内容锁入DAC寄存器,并实现D/A转换
- 优点:数据接收和D/A转换可以异步进行
直通方式
- 特征:内部的两个寄存器都处于直通状态,此时模拟输出始终跟随输入变化。
- 实现方式:需外加并行接口。