当前位置:网站首页>第八章 可编程接口芯片及应用【微机原理】
第八章 可编程接口芯片及应用【微机原理】
2022-06-21 16:04:00 【日星月云】
第八章 可编程接口芯片及应用【微机原理】
前言
以下内容源自微型计算机原理(第四版)王忠民主编
来源于教学PPT
仅供学习交流使用
请您阅读文章声明,默认同意该声明
第8章可编程接口芯片及应用
8.1 可编程定时器/计数器芯片 8253/8254
微机系统中很多地方都要用到定时功能。例如第六章介绍的DRAM,系统中就是采用定时器来触发启动动态刷新。过程控制领域则大量需要计数功能。不论是定时还是计数,都是通过对时钟脉冲计数来完成的。当对标称方波进行脉冲计数,就可以完成定时。
定时和计数的产生
(1)定时控制在微机系统中具有极为重要的作用
(2)计数是许多过程控制领域常用的功能
(3)定时和计数之间的关系
定时器通过记录高精度晶振脉冲信号的个数从而输出准确的时间间隔。
计数器记录反映外设某种状态的具有一定随机性的脉冲信号。
8.1.1 8253的结构与功能
1. 8253的引脚
8253的外部引脚
24引脚双列直插式芯片
3个独立的16位计数器通道
每个计数器通道有6种工作方式
按二进制或十进制(BCD码)计数
2. 8253 的内部结构
1.计数通道

8253内部计数器的结构
8253内部有3个独立工作的16位计数通道
CR:16位初值寄存器
CE:减1计数器
OL:输出锁存器

2.数据总线缓冲器
3.读写控制逻辑
8253的端口地址及内部操作
4.控制字寄存器
计数通道的选择
读写方式的确定
工作方式的确定
计数方式的确定
8.1.2 8253的编程
1. 8253的控制字格式

2. 8253的初始化编程
- 确认端口地址
- 确定工作方式与计数初值
- 确定控制字
- 写计数器的控制字与计数器计数初值,完成初始化编程
设8253的端口地址为0040H0043H,已知时钟端CLK2输入信号的频率为2 MHz。使用8253计数器2产生频率为40 kHz的方波,初始化8253,完成所需功能。
1、确认端口地址
地址范围40H~43H
0#计数器端口地址:40H
1#计数器端口地址:41H
2#计数器端口地址:42H
控制寄存器端口地址:43H
2、确定工作方式与计数初值
工作于方式3,输出方波
计数初值=输入频率/输出频率
=2000000Hz /40000Hz
=50
=0032H
3、确定控制字

4、初始化程序
MOV AL,10110110B
OUT 43H,AL ;送控制字
MOV AL,32H
OUT 42H,AL ;送低8位
XOR AL,AL
OUT 42H,AL ;送高8位
在计数过程中读8253的计数值
- 给控制字寄存器写入锁存命令
- 从锁存器中读出计数值,若是16位,则分别读出
- 不影响计数通道正常计数
在前例的基础上,读出2#计数器当前计数值的程序段:
MOV AL, 10000000B
OUT 43H,AL
IN AL,42H ;读低8位
MOV CL,AL
IN AL,42H ;读高8位
MOV CH,AL ;CX中是当前计数值
8.1.3 8253的工作方式
- 计数结束产生中断方式
- 可编程单次脉冲
- 分频工作方式
- 方波发生器
- 软件触发选通
- 硬件触发选通
- 开始计数:
- 硬件触发还是软件触发
- 写入方式字OUT引脚电平
- 计数中:
- 计数中OUT输出波形
- 计数过程中门控信号GATE对计数操作的影响
- 计数结束:
- 是否重复计数
- 计数初值写入初值寄存器后,在门控有效的前提下,要经过一个CLK输入后才开始计数
- 计数器在CLK的下降沿使计数值减1
1. 方式0 —计数结束产生中断方式
门控失效则暂停计数。(门控有效后继续计数)
2. 方式1 —可编程单次脉冲

3. 方式2 —分频工作方式
Gate失效会暂停计数,(有效后重新开始计数)

4. 方式3 —方波发生器
GATE电平对波形的影响与方式2一致

5. 方式4 —软件触发选通
不能自动重复计数,每次启动计数都要靠重新写入计数值,所以称为“软件触发选通”,改变初值可以方便地发出选通信号的延迟时间。
6. 方式5—硬件触发选通

8253工作方式小结
- 初始化后OUT输出:
只有方式0,在写入控制字后输出为低;其余5种方式,都是在写入控制字后输出为高。 - 计数开始的触发方式:
方式0、2、3、4都是写入计数初值后,计数过程开始了,为软件触发。方式1和方式5在写入计数初值后,需由外部GATE信号的上升沿触发启动,为硬件触发计数。 - 自动重复计数:
方式2(分频器)和方式3(方波发生器)为自动重复工作方式,其他4种方式都是一次性计数,要继续工作需要重新启动。
8.1.4 8254与8253的区别
8.1.5 8253应用举例
8253在XT机中的应用

1) 计数器0
该计数器向系统日历时钟提供定时中断
工作方式为方式3
计数器计数初值预置为0
OUT0输出方波的频率为1.19 MHz/65536=18.21Hz,
即每隔55ms申请一次日历时钟中断。
一分钟1092次,一小时65543次,24小时1573040(001800B0H)次。
中断服务程序对中断次数进行计数,形成实时时钟。
MOV AL,36H
OUT 43H,AL
MOV AL,0
OUT 40H,AL
OUT 40H,AL
2) 计数器1
向DMA控制器定时发送动态存储器刷新请求
方式2工作,初值18
频率为1.19MHz/18=662878kHz。周期为15.09µs。
OUT1输出从低电平变为高电平使触发器置1,
输出一个正电平信号给8237DREQ0,
作为内存刷新的DMA请求信号DRQ0。
MOV AL,54H
OUT 43H,AL
MOV AL,12H
OUT 41H,AL
3) 计数器2
在IBM PC/XT机的BIOS中有一个声响子程序BEEP,
它将计数器2设置为工作方式3,
作为方波发生器输出约1 KHz的方波,
经滤波驱动后推动扬声器发声。
初值:533H,初值决定了发声的频率,
即音调,而对门控信号的控制决定了发声的长短。
MOV AL,0B6H
OUT 43H,AL
MOV AX,533H
OUT 42H,AL
MOV AL,AH
OUT 42H, AL
8.2 可编程并行接口芯片 8255A
通信?——计算机与外部信息的交换
计算机和数据通信系统中的两种基本数据传送方式——并行通信、串行通信
和串行传送相比,在同样的时钟速率下,并行传送的数据传输率较高。串行通信则是用于远距离传输要求的场合,并行通信往往适用于信息传输率要求较高,而传输距离较短的场合
8.2.1 8255A的引脚与结构
1. 8255的引脚
可编程并行接口芯片8255
8255A采用40脚双列直插封装
单一+5V电源
8位并行输入输出接口芯片
全部输入输出与TTL电平兼容
用8255A连接外部设备时,通常不需要再附加其他电路,使用方便
8255外部引脚
2. 8255内部结构
- 端口A、B、C
- A组控制、B组控制
- 数据总线缓冲器
- 读、写控制逻辑

8255读写操作时的信号关系
8.2.2 8255A的工作方式与控制字
1. 8255的工作方式
方式0:基本输入输出方式
适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式
适用于查询和中断方式的接口电路方式2:双向选通传送方式
适用于与双向传送数据的外设
适用于查询和中断方式的接口电路
2. 8255的控制字
1)工作方式选择控制字
**8255的工作方式初始化 **
假定要求8255A的各个端口工作于如下方式:
端口A——方式0,输出;
端口B——方式0,输入;
端口C的高4位——方式0,输出;
端口C的低4位——方式0,输入。

相应的方式选择控制字应为:1 00 0 0 0 1 1
假定要求8255A的各个端口工作于如下方式:
端口A——方式0,输出;
端口B——方式0,输入;
端口C的高4位——方式0,输出;
端口C的低4位——方式0,输入。
相应的方式选择控制字应为 83H 。
设在系统中8255A控制口的地址为D3H,则执行如下两条指令即可实现上述工作方式的设定。
MOV AL,83H;
OUT 0D3H,AL; 将方式选择控制字写入控制口
2) C口按位置位/复位控制字
注意:C口控制字虽然是对端口C操作,但应写入到控制口地址,而不是写入到C数据口

例:通过C置位/复位控制字使PC7置1,PC3置0
MOV DX,0D3H
MOV AL,00001111B;PC7置1,引脚上出现高电平
OUT DX,AL
MOV AL,00000110B;PC3置0,引脚上出现低电平
OUT DX,AL
8.2.3 各种工作方式的功能
1.8255的工作方式0——基本输入/输出方式
A口、B口、C口的高4位和低4位均可设置为方式0。
无须联络就可以直接进行8255A与外设之间的数据输入或输出操作。
也适用于查询方式传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送。

2. 8255的工作方式1—选通输入输出方式
8255A的A口和B口与外设之间进行输入或输出操作时,需要C口的部分I/O线提供联络信号。只有A口和B口可工作于方式1
3. 8255的工作方式2—双向选通传送方式
同一端口的I/O线既可以输入也可以输出,只有A口可工作于方式2。此种方式下需要C口的部分I/O线提供联络信号。
8.2.4 8255A的应用举例
例:采用4个开关输入一个十六进制数,使用8255,将通过开关输入的数显示到七段数码管上。8255端口地址为60H~63H,与8088CPU连接。设计接口电路,编写程序。
解决思路:
1、作为接口芯片,8255如何与CPU连接?
如何与已知的开关七段数码管这两个外设连接?如何构成一个系统?
2、系统硬件连线完成,如何编写程序,完成系统指定的功能?
LED显示器原理
主要部分是7段发光管
顺时针分别称为a、b、c、d、e、f、g
有的产品还附带有一个小数点h
通过7个发光段的不同组合
主要显示0~9
也可以显示A~F
(实现16进制数的显示)
还可以显示个别特殊字符,
如-、P 等

LED类型—共阴极和共阳极


单一数码管显示代码

LEDtb db 0C0h,0F9h,0A4h,… ;显示代码表
……
mov bx, offset LEDtb
mov al,1 ;AL←要显示的数字
xlat ;换码:AL←DS:[BX+AL]
mov dx, portA
out dx, al ;输出显示
8255与外设连线图

8255与8088CPU连线图


DATA SEGMENT
TABLE DB 0C0H,0F9H, 0A4H,0B0H, 99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H, 8EH
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS: DATA
START:
MOV AX, DATA
MOV DS,AX
MOV AL,91H ;设置方式选择控制字,A口工作于方式0输入, B 口工作于方式0输出
OUT 63H,AL
NEXT:
IN AL, 60H
AND AL,0FH ; 取A口低4位
MOV BX,OFFSET TABLE
XLAT
OUT 61H,AL ; 显示码输出
MOV AH,1 ;判断是否有键按下
INT 16H ;
JZ NEXT ; 若无,则继续读端口A
MOV AH,4CH ; 否则返回DOS
INT 21H
COED ENDS
END START
8.3 串行通信及可编程串行接口芯片 8251A
8.3.1串行通信的基本概念
8.3.2串行通信接口及其标准
8.3.3可编程串行接口芯片 8251A
8.3.4 8251A 初始化编程
8.3.5 8251A 应用举例
8.4 模/数(A/D)与数/模(D/A)转换技术及其接口
8.4.1 D/A转换接口
8.4.2 A/D转换接口
最后
请您阅读文章声明,默认同意该声明
打赏通道
边栏推荐
- RTMP webrtc protocol OpenSSL installation
- Calculation of carbon emissions
- Yaml data driven demo
- NLog自定义Target之MQTT
- 【mysql学习笔记18】约束
- 设计一个打印整棵树的打印函数
- Common formula of derivative__ Common formulas of indefinite integral
- qtcreator報錯解决
- PowerPoint tutorial, how to change page orientation and slide size in PowerPoint?
- 大话内存四区
猜你喜欢
随机推荐
Hairui technology completed the pre-A round of financing of tens of millions of yuan to build the first artificial intelligent distribution Internet of things in China
第13周总结博客(校历第15周)动态规划总结
Week 13 summary blog (week 15 of the school calendar) dynamic planning summary
Set up your own website (11)
阿里云服务器+宝塔面板+无域名部署web项目
很多软件公司,其实都是“笑话”
剑指 Offer II 089. 房屋偷盗 / 剑指 Offer II 090. 环形房屋偷盗
Oracle JDBC 驱动
接口自动化加解密
Serialization and deserialization of binary tree
Mqtt of NLog custom target
Pytest--生成测试报告
从北京“润”到芝加哥,工程师宝玉“滋润”成长的秘诀
qtcreator報錯解决
Interface automatic encryption and decryption
PowerPoint 教程,如何在 PowerPoint 中更改页面方向、幻灯片大小?
既不是研发顶尖高手,也不是销售大牛,为何偏偏获得 2 万 RMB 的首个涛思文化奖?
Qtcreator error reporting solution
[MySQL learning notes 11] sort query
variable









