返回

微机原理笔记07-可编程数字接口电路

可编程定时计数器8253

  • 可编程芯片:可以通过软件命令,控制芯片的工作方式
    • 数据传输方向
    • 输入/输出方式
  • 时钟脉冲由外部时钟电路提供
  • 给定计数初值,芯片启动后,开始数脉冲个数
  • 功能:定时、计数

外部引线及内部结构

  • #CS:片选信号
  • 两位片内地址A0,A1,说明片内有4个端口
  • GATE:输入信号,启动计数的控制信号
  • OUT:输出信号,在定时时间到,或定时过程中,OUT端呈现波形特点
  • 三组CLK、GATE、OUT信号,说明芯片内部有三个完全独立的定时计数器

  • 三个计数器可以独立工作
  • 因为每个计数器内部有2个16位的寄存器,两个寄存器共用一个地址,所以每个计数器占用一个端口地址
    • 16位的初值寄存器:用来存初值,不变化
    • 16位的计数寄存器:用来计数,一开始是存初值,然后开始递减
  • 控制寄存器:8位,占一个端口地址,存放控制命令字
  • 综上,8253接口芯片占4个端口地址

  • 4个端口的地址是固定的
  • A1和A0区分3个计数器和控制寄存器

计数启动方式

  • 一般把GATE接到正电源上,表示软件启动

工作方式

  • 8253接口芯片有6中工作方式
  • 不同的工作方式,OUT端输出波形不同
  • 方式0是软件启动,GATE端需要输入高电平
  • 不自动重复计数,意味着计数器中的计数寄存器减到0,这一计数过程就结束
  • #WR:由图知,有两个写入信号,也就是两条OUT指令被执行
    • 第一个OUT指令写入命令字,写完后,OUT端一定变成低电平
      • 命令字:告诉IO接口芯片如何工作,其中有一个信息就是工作在方式几,该命令字存到IO接口中的控制寄存器
    • 第二个OUT指令写入初值,写完后,OUT端一定变成低电平
      • 初值:存到IO接口芯片中的计数器
  • 必须先写命令字,再写初值
  • 当初值写完,开始计数,每过一个CLK脉冲,值减1,直至0,计数结束后,OUT端变成高电平
  • 其输出信号(高电平),可用于外部可屏蔽中断请求信号,方式0也称为计数结束产生中断请求的一种工作方式

控制字

  • 0000:将计数器0中的计数寄存器内容读入CPU
  • 最大计数初值为0:若选择16位BCD数,则0-1=9999;若选择16位二进制数,则0-1=FFFF

8253的应用

硬件设计

  • 与系统的连接
  • 每一次启动计数,需有两次写操作:
    • 写控制字
    • 写计数器初值
      • 如果初值为8位字长,则一次写入;若初值为16位字长,由于芯片数据通道只有8位,则需两次写入
    • 每个计数器的控制命令字均送入控制寄存器
    • 各计数器的计数初值送到该计数器的计数寄存器及初值寄存器

软件设计

  • 初始化程序流程
    • 写入控制字
    • 置计数初值

【例】8253芯片应用

  • CNT0:“每”,说明输出连续波形,不是方式2就是方式3,方式3是输出对称方波,方式2是每次计数结束,输出一个低电平,所以是方式2
  • CNT1:能输出连续波形的只有方式23,方式3是输出对称方波,所以是方式3
  • CNT2:定时时间到,输出高电平,可以是方式01,区别是方式0软件启动,方式1硬件启动,由于题目没有其他要求,所以选择方式0软件启动,线路简单
  • 时钟频率2MH=1/2MH=0.5微秒,CNT0要求每10ms输出一个负脉冲,所以,计数初值为10ms/0.5us=20000
  • 00:计数器0;11:先读计数器低8位,再读高8位;010:方式2;0:二进制计数
  • GATE端高电平:软件启动
  • CLK端连接外部时钟电路
  • OUT端连接外部设备
  • A0和A1区分3个计数器和控制寄存器
    • 0123H=0000 0001 0010 0011,说明0123H是控制寄存器的地址
    • 0120H=0000 0001 0010 0000,说明0120H是计数器0的地址
  • 上面已经得到控制字0011 0100=34H
  • 前三句:将控制字写入控制寄存器
  • CNT0计数初值:20000
  • 第六句:先将低8位写入计数器0
  • 第七句:因为OUT指令不需要操作数是AH,所以要先将AH送入AL

可编程并行接口8255

并行接口芯片8255特点

  • 8253是一个非通道型的接口,用来控制外部设备
  • 8255是一个通道型的接口,用来控制外部设备,可以用来做数据的输入和输出

8255接口芯片结构

引线

  • A0和A1是两个低位地址信号,选择3个端口和控制寄存器
  • 译码器输入端是高位地址信号,片选

工作方式

基本输入/输出方式(方式0)

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

方式0的应用:

  • 习惯上:
    • A端口和B端口作为8位数据的输入或输出口
    • C口的某些位作为状态输入
  • 注:
    • 若使C端口低4位中某一位作为输入口,则低4位中其他位都应作为输入口
    • 同时可设高4位作为输出
  • 假设外设状态信息(打印机缓冲区是否空闲)连接到PC0
  • 若外设当前状态适合传输数据,则通过A端口(PA0-PA7)输出数据到外设
  • 同时,B口可作为其他外设的输入
  • 若B口连接的外设也可以提供状态信息,则可以用C口的高位读入第二个外设的状态信息

选通工作方式(方式1)

  • 利用一组选通控制信号控制A端口和B端口的数据输入输出
  • A口、B口作输入或输出口,C口的部分位用作选通控制信号
  • A口、B口在作为输入输出时的选通信号不同

  • A端口工作在方式1,输出时,C端口的PC367作为选通信号
  • B端口工作在方式1,输出时,B端口的PC012作为选通信号
  • 综上,若AB端口同时工作在方式1输出时,C端口只有PC45空余
  • IBF信号通知外部设备数据已经准备好,可以取走了
  • INTR是外部可屏蔽的中断请求信号,告诉CPU,数据已经被读走,可以继续发来数据

  • 方式1的应用:
    • 方式1主要用于中断控制方式下的输入输出
    • C口的8位除用作选通信号外,其余位可工作于方式0下,作为输入或输出口

双向传送方式(方式2)

  • 双向输入输出方式

    • 可以既作为输入口,又作为输出口
    • 不需要通过软件控制字命令来改变数据传输方向,只需要时钟脉冲就可以改变数据传输方向
  • 只有A端口可工作在方式2下

    • 因为选通信号有限

  • PC34567作为A端口的选通控制信号
  • IOW:A口作为输出
  • STB信号有效:外部设备将数据写入A口,A口作为输入

方式2的应用:

  • 可使A端口作为双向端口所有

  • 用于中断控制方式

  • 当A口工作于方式2时:

    • B口可工作于方式1
      • 此时C口的所有位都用作选通控制信号的输入输出
    • B口也可工作于方式0
      • 此时C口的剩余3位也可工作于方式0
  • 8255的ABC三个端口都可以工作在方式0,AB端口可以工作在方式1,只有A端口可以工作在方式2

方式控制字及位控制字

  • 方式控制字:
    • 用于确定3个端口的工作方式及数据传送方向;
  • 位控制字
    • 仅用于C端口
    • 可设置C口某位的初始状态(为高电平或低电平)
    • 当其工作于方式0下且作为输出口时,一般需要对作为输出的位设置初始状态(即初始化)

  • 方式控制字最高位一定为1
  • 最高位后面的4位控制A组,A组中包含A端口,A端口有3种工作方式,所以用高2位进行工作方式选择
    • 8255内部的3个端口在控制逻辑上分为A组和B组
      • A组:A端口8位和C端口高4位
      • B组:B端口8位和C端口低4位
    • 由于C端口不能工作在方式12,所以01、1x对C端口无意义
  • 低三位控制B组,B组中包含B端口,B端口有2种工作方式,所以用高1位进行工作方式选择
  • 8255一个控制字可以控制3个端口

8255芯片的应用

  • 芯片与系统的连接
  • 芯片的初始化
  • 相应的控制程序

【例】8255应用

  • 地址信号低2位A0、A1是片内寻址,不参与译码
  • 1023H:控制寄存器地址
  • 10010000:方式控制字
  • 1021H:B端口地址
  • 80H:1000 0000,PB7位保证为高电平
  • 1020H:A端口地址
  • 3:计数,亮灭3次
  • 1022H:C端口地址
  • 1:0000 0001,PC0为高电平
Built with Hugo
Theme Stack designed by Jimmy