8253(定时器IC)与8085微处理器的接口


Intel 8253是可编程间隔定时器(PTI),专为微处理器设计,使用三个16位寄存器执行计时和计数功能。每个计数器有两个输入引脚,即时钟和门,还有一个“OUT”输出引脚。要操作计数器,需要在其寄存器中加载一个16位计数。根据指令,它开始递减计数,直到计数器达到0,然后产生一个脉冲,该脉冲可用于中断CPU。

8253 的特性

  • 它具有三个独立的16位向下计数器。

  • 它可以处理从直流到10MHz的输入。

  • 这三个计数器可以编程为二进制或BCD计数。

  • 它几乎兼容所有微处理器。

  • 8254有一个强大的命令,称为读回命令,允许用户检查计数值、编程模式、当前模式和计数器的当前状态。

8253的框图


8253与8085的接口

现在让我们看看如何将这个8253定时器芯片与Intel 8085微处理器接口。从下图可以看出,8085的数据总线D7-0连接到8253的数据引脚D7到D0。因此,高阶地址总线用作解码器输入以选择芯片,而8085的A8和A9分别连接到引脚A1和A0以选择计数器。

在下图中,我们可以得到8253的片选逻辑。在该图中,我们可以很容易地发现,当A3-2和A7-5为逻辑0,A4为逻辑1时,只有8253的片选CS引脚才会被使能。

此表显示了如何使用8253的A1和A0引脚选择计数器。

片选 (CS)

十六进制地址
计数器选择
A7
A6
A5
A4
A3
A2
A1
A0
0
0
0
1
0
0
0
0
10H
计数器0
0
0
0
1
0
0
0
1
11H
计数器1
0
0
0
1
0
0
1
0
12H
计数器2
0
0
0
1
0
0
1
1
13H
控制字寄存器


可以使用IN和OUT指令来完成计数器选择和控制字寄存器(CWR)设置。如果累加器保存要加载CWR的内容,则使用OUT 13H设置CWR。类似地,使用IN指令可以获取计数器的值,例如IN 11H将从计数器1获取值,依此类推。

因此,计数器操作需要以下四个步骤:

  • 初始化8253芯片

  • 使用控制字值加载控制字寄存器

  • 加载低位计数值

  • 加载高位计数值

让我们看一个程序,以模式0在模式1下将计数器2加载为500010计数值。并且在运行时读取计数值。

首先,要初始化8253,控制字将为B2H

计数器2
先加载低位字节,再加载高位字节
模式1选择
0表示二进制
1
0
1
1
0
0
1
0


现在,用于对计数器2进行锁存操作的控制字为80H。

计数器2
锁存选项
无关紧要
1
0
0
0
0
0
0
0


我们将500010加载到计数器中。500010的十六进制等效值为1388H。

MVI A, B2H ;Load B2H as initialization byte for counter
OUT 13H ;Write Acc content CWR
MVI A, 88H ;Load LS byte of count value
OUT 12H ;Send to Counter 2
MVI A, 13H ;Load MS byte of count value
OUT 12H ;Send to Counter 2
MVI D, 00H ;clear the register D
L1: MVI A, 80H ;Set a with control word 80H of counter 2
OUT 13H ;Write Acc content CWR
IN 12H ;Read LS value of counter value
MOV B, A ;store LS value to B
IN 12H ;Read MS value of counter value
ORA B ;OR LS and MS to set Z flag
JNZ L1 ;If Z flag is not set, jump to Loop
HLT ;Halt the program

更新于:2020年6月26日

6K+浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告