概述
实验六、8254定时/计数器实验
1、实验目的
- 了解定时计数器8254的初始化及用法。
- 了解定时计数器8254各种工作方式的特点。
2、实验内容
编写程序,使8254的计数器1 分别工作在方式 0、1、2、3下,在示波器上观察各工作方式下 OUT1 的输出波形。
3、实验原理
8253/8254 是 Intel公司生产的通用定时/计数器。8254是在8253的基础上稍加改进而推出的改进型产品,它们的引脚定义与排列、硬件组成等基本上是相同的。因此 8254 的编程方式与 8253 是兼容的,凡是使用 8253 的地方均可用 8254代替。 相对 8253,8254芯片的改进之处包括:
- 允许最高计数脉冲(CLK)的频率不同。8253的最高频率为2MHz,而 8254允许的最高计数脉冲频率可达 10MHz。
- 8254每个计数器内部都有一个状态寄存器和状态锁存器,而8253没有。
- 8254有一个读回命令字,用于读出当前减 1 计数器CE的内容和状态寄存器的内容,而8253没有此读回命令字。
8254的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表 1、表 2 所示。
4、实验记录
(博主做完实验后,将一些需要理解的点在此记录一下。)
引脚说明:每个计数器都有CLK,OUT,GATE三个接口
- CLK 连接外部时钟,外部时钟信号的每次输入都会使计数值减一。(假设外部时钟频率为 x Hz,则计数器初值设置为 x 可以作成计时1秒的计数器)
- OUT 是计数器的输出端,每当计数器归零时,会按工作方式输出不同的信号。(连接到AD转换器可以在示波器里观察到波形)
- GATE 是由外部输入的门控制端,用于控制和启动计数器的工作。(在某些工作方式下用于控制启动计数器,在某些工作方式下用于控制允许或禁止计数)
工作方式:基础实验要求熟悉使用工作方式0~3
- 方式0:写入计数器初值,计数器工作期间维持输出低电平,计数器归零后维持输出高电平。如果在计数器归零后重新赋予计数器初值,则会让计数器重新进入工作状态。(无须启动,GATE置零时禁止计数)
- 方式1:写入计数器初值,启动计数器,计数器工作期间维持输出低电平,计数器归零后维持输出高电平。如果在计数器归零后重新赋予计数器初值,则需要重新启动计数器才能让计数器重新进入工作状态。(GATE出现0->1上升沿时启动计数)
- 方式2:写入计数器初值,计数器工作期间维持输出高电平,当计数到1时,输出低电平,当计数到0时,重新填充初值,并开启下一轮计数。(无须启动,GATE置零时禁止计数)
- 方式3:写入计数器初值,计数器会输出近似1:1的方波,计数器归零后,会自动重新填充初值,并开启下一轮计数。(无须启动,GATE置零时禁止计数)
扩展:计数器串联(降频)
已知计数器的CLK引脚输入的信号会让该计数器的计数值减一,所以将计数器1的CLK和(工作方式3的)计数器0的OUT相接时,可以实现 “由计数器0充当计数器1的CLK输入时钟“ 的效果。(假设计数器0计时1秒,那么计数器1的计数值将每秒减1)
5、代码记录:
A8254 EQU 0600H ;8254的计数器0地址
B8254 EQU 0602H ;8254的计数器1地址
C8254 EQU 0604H ;8254的计数器2地址
M8254 EQU 0606H ;8254的控制寄存器地址
CODE SEGMENT
ASSUME CS:CODE
START:
;MOV AL,30H ;timer0 work on mode 0
;MOV AL,32H ;timer0 work on mode 1
;MOV AL,34H ;timer0 work on mode 2
MOV AL,36H ;timer0 work on mode 3
MOV DX,M8254
OUT DX,AL
MOV DX,A8254 ;因为连接到18.432kHz的时钟上,所以2400H刚好是0.5秒的计时
MOV AL,00H
OUT DX,AL
MOV AL,24H
OUT DX,AL
;MOV AL,70H ;timer1 work on mode 0
;MOV AL,72H ;timer1 work on mode 1
MOV AL,54H ;timer1 work on mode 2
;MOV AL,56H ;timer1 work on mode 3
MOV DX,M8254
OUT DX,AL
MOV DX,B8254
MOV AL,03H ;三分频
OUT DX,AL
LP: JMP LP ;在循环里等待并观察计数器工作
CODE ENDS
END START
最后
以上就是疯狂煎饼为你收集整理的实验六、8254定时/计数器实验的全部内容,希望文章能够帮你解决实验六、8254定时/计数器实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复