可编程数字接口电路

串行通信与并行通信(串行通信接口仅了解)

并行通信:两个设备之间有多个数据位同时传输

按字或字节
特点:
➢ 传输速度快,处理简单;
➢ 抗干扰能力差;
➢ 适合近距离传送;

重点:可编程定时计数器8253(简答-画图编程,方式4、5仅了解)

接线记忆:
20250609214128
具有三个完全相同的、独立的计数/定时器,A0A1控制四个端口:计数器0,1,2,以及控制字寄存器

每个计数器内含有三个寄存器:

  • 16位初值寄存器CRL(分为高八位和低八位,向其中写进两次才能写完所有位数)
  • 16位计数寄存器CE(存放计数值,在第一个CLK下降沿,如果前一个上升沿采集的GATE为1,CRL的十六位自动写入CE)
  • 一个十六位锁存使用的寄存器

控制字寄存器记忆:
20250609214440

工作方式0:CW写完后低电平,直到计数结束回到高电平

20250609214112

  • WR第一次使能,将状态信号CW写入状态字寄存器,结束后OUT开始低电平

  • WR第二次使能,将计数值N写入初值寄存器

  • 在第一个CLK下降沿,发现之前采集到的GATE为1,初值寄存器的十六位在CLK下降沿自动写入CE
  • 如此重复,上升沿采集GATE为1,在CLK的下一个下降沿,CE递减
  • 直到CE减为0,OUT变为高电平。

工作方式1:计数器期间是一个低电平脉冲

20250609214846

  • WR第一次使能,将状态信号CW写入状态字寄存器,结束后OUT开始高电平

  • WR第二次使能,将计数值N写入初值寄存器

  • GATE的第一个上升沿触发计数
  • CLK第一个下降沿开始计数(初值寄存器的值滑入CE),OUT进入低脉冲
  • 每一个CLK的下降沿递减一次
  • 减到0后低脉冲结束

工作方式2,3:输出方波

20250609215812

20250609215851

重点:例题

应用中的注意点

每一次启动计数,需有两次写操作:

  • 写控制字
  • 写计数器初值
  • 如果初值为8位字长,则一次写入;若初值为16位字长,则需两次写入

原则上,一般先写入控制字,后写入计数初值


例题:采用8253作定时/计数器,其接口地址为0120H~0123H,输入8253的时钟频率为2MHz。要求:

  • CNT0每10ms输出一个CLK周期宽的负脉冲
  • CNT1输出10KHz的连续方波信号
  • CNT2在定时5ms后产生输出高电平

解析:

  • 问题一显然是使用方式2,自然地产生一个负脉冲,因此\((N)T_{clk}=10ms,T_{clk}=0.5\mu s,N = 20000\),00110100, 34H
  • 问题二采用方式3,N为偶数,N*0.5微秒=1e-4,得到N=200,01010110, 56H
  • 问题三采用方式0,N=(计时时间)/一个clk周期=10000,10110000, B0H

因此,接线图:
20250609222554

程序以CNT0为例子展示:

; CNT0
MOV DX, 0123H
MOV AL, 00110100B
OUT DX, AL
MOV DX 0120H
MOV AX, 20000
OUT DX, AL
XCHG AX, AL
OUT DX, AL

;CNT1
MOV DX, 0123H
MOV AL, 01010110B
OUT DX, AL
MOV DX, 0121H
MOV AL, 200
OUT DX, AL

;CNT2
MOV DX, 0123H
MOV AL, 
OUT DX, AL
MOV DX, 0122H
MOV AX, 10000
OUT DX, AL
MOV AL, AX
OUT DX AL

可编程并行接口8255(简答-画图编程,方式1、2仅了解)

相当于提供了一个更高级的,可编程控制的接口电路

8255接线共四十个:
20250609165038
因此8255与8288相连示意图如下所示:

A1-A0用于端口的片选,根据二进制数组成依次选择(PA,PB,PC,状态寄存器),这体现为8255被分配到的四个端口地址。

只介绍最简单的工作方式:方式0,相当于三个独立的8位简单接口,各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出,C端口可以是一个8位的简单接口,也可以分为两个独立
的4位端口,常用于连接简单外设,适于无条件或查询方式

20250609165653

关于8255内部状态寄存器是如何控制状态的,可看下图,其实按照接线顺序来记忆,是很好记忆的:
20250609165902

例题可见PPT,考点就在于方式0下通过状态控制寄存器不停地切换修改的A,B,C

例子:8086CPU通过8255实施监控。8255端口地址为1020H-1023H
,启动操作由端口B的PB7控制(高电平有效),端口A输入
8个监控点的状态(每个引脚接一个监控点),只要其中任
一路出现异常情况(高电平),系统就通过与PC0相连的信
号灯报警(高电平灯亮),要求信号灯亮灭3次。要求:

  • 设计系统线路图,要求用138译码器设计译码电路;
  • 编写8255初始化程序及启动、测试和报警控制程序

分析:

  • 先确定A,B,C各自状态,都处于状态零,A是做输入端口用,接受信号,状态字为1,B,C均是输出,状态为0。因此状态寄存器的各位为10010000
  • 译码地址范围来片选CS,地址范围是0001 0000 0010 00XX,该怎么接就怎么接就行,注意背诵74L138的所有引脚,包括一个高电平使能G1,两个低电平使能#G2A和#G2B,以及ABC
  • 注意背诵cpu与138相连的引脚,1.所有地址线以及 2.(#IOR和#IOW必须与非后为0)
  • 注意背诵cpu与8255相连的引脚,D,A对接,#IOR接#RD,#IOW接#WD

20250609171512

代码

; 先初始化,给寄存器赋值
MOV DX 1023H  
MOV AL 10010000B
OUT DX AL

;通过B启动,给B最高位写入1
MOV DX 1021H
MOV AL 80H
OUT DX AL

;循环检查A,监控
A:MOV DX 1020H
IN AL DX
MOV BL FFH
AND AL BX
JZ A
MOV DX 1022H
MOV AL 1
MOC CX 3

; C循环亮灯三次
C: OUT DX AL
CALL DELAY
NOT AL
CALL DELAY
LOOP C
JMP A
posted @ 2025-06-10 21:17  bradinz  阅读(12)  评论(0)    收藏  举报