一、实验目的
1.掌握 8254 的工作方式及应用编程。
2.掌握 8254 典型应用电路的接法。
二、实验内容与要求
1、计数应用实验,编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK+’5次后,产生依次计数中断,并在屏幕上显示一个字符‘M’.
2.定时应用实验。编写程序,应用8254的定时功能,产生一个ls的方法,并且本装置的示波器功能来观察。
三、实验步骤
1. 计数应用实验
将8254的计数器0设置为方式0,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”。
图4.5.3 8254计数应用实验接线图
实验步骤:
(1)实验接线如图4.5.3所示(由于8254单元中GATE0信号已经上拉+5V,所以GATE0不用接线)。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)单击run按钮,运行实验程序,每连续按动5次KK1+,在界面的输出区会显示字符“M”(改成K),观察实验现象。
(4)改变计数值,验证8254的计数功能。
2. 定时应用实验
将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLK0时钟,OUT0为波形输出1ms方波,再通过CLK1输入,OUT1输出1s方波。
图4.5.5 8254定时应用实验按线图
实验步骤:
(1)接线图如图4.5.5所示。
(2)根据实验内容,编写实验程序(例程文件名为:A82542.ASM),经编译、链接无误后装入系统。
(3)单击run按钮,运行实验程序,8254的OUT1会输出1s的方波,可用软件自带的示波器功能进行观察。
(4)用示波器观察波形的方法:单击虚拟仪器菜单中的“示波器”按钮或直接单击工具栏的 按钮,在新弹出的示波器界面上单击 按钮运行示波器,就可以观测出OUT1输出的波形。
四、电路连接
1. 计数应用实验
2. 定时应用实验
五、代码设计
1.中断入口地址
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET IRQ7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量
CLI
POP DS
子程序入口是中断类型号*4,从下图可以看出,IR7的中断类型号是F(0F),0F×4=003C,003E=0F×4+2
2.8254的初始化
MOV DX, CON8254 ;8254
MOV AL, 36H ;计数器0,方式3
OUT DX, AL
36H=00 11 011 0:计数器0,先读写低8位,再读写高8位,方式3,二进制
3.8254计数器0的计数初值的计算
MOV DX, A8254
MOV AL, 0E8H
OUT DX, AL
MOV AL, 03H
OUT DX, AL
设计数初值为n,CLK频率为fc,方波频率为f则n=fc/f
因为本实验中CLK0频率为1MHz,波形输出1ms方波,即1000Hz.所以计数初值n=1000000/1000=1000,转换为十六进制为03E8H.
4.关于显示字符
MOV AX, 014BH
INT 10H ;显示字符K
这里AH=01,AL=4BH=75=‘K’,会显示AL对应的字符。
六、实验现象
1. 计数应用实验
修改代码,变成K。
2. 定时应用实验
附录 代码
1.计数应用实验文章来源:https://www.toymoban.com/news/detail-426879.html
;=========================================================
; 文件名: A82541.ASM
; 功能描述: 通过对计数器0进行计数,计数初值为4,
; 当计数满后,产生正跳变触发中断,中断
; 程序显示M(每按5次输出一个M)
;=========================================================
IOY0 EQU 0600H ;IOY0起始地址
A8254 EQU IOY0+00H*2
B8254 EQU IOY0+01H*2
C8254 EQU IOY0+02H*2
CON8254 EQU IOY0+03H*2
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET IRQ7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
MOV AL, 6FH ;OCW1
OUT 21H, AL
;8254
MOV DX, CON8254
MOV AL, 10H ;计数器0,方式0
OUT DX, AL
MOV DX, A8254
MOV AL, 04H
OUT DX, AL
STI
AA1: JMP AA1
IRQ7: MOV DX, A8254
MOV AL, 04H
OUT DX, AL
MOV AX, 014DH
INT 10H ;显示字符M
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET
CODE ENDS
END START
2. 定时应用实验文章来源地址https://www.toymoban.com/news/detail-426879.html
;=========================================================
; 文件名: A82542.ASM
; 功能描述: 产生1s方波,输入时钟为1MHz,使用计数器0和1
; 计数初值均为03E8H
;=========================================================
IOY0 EQU 0600H ;IOY0起始地址
A8254 EQU IOY0+00H*2
B8254 EQU IOY0+01H*2
C8254 EQU IOY0+02H*2
CON8254 EQU IOY0+03H*2
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, CON8254 ;8254
MOV AL, 36H ;计数器0,方式3
OUT DX, AL
MOV DX, A8254
MOV AL, 0E8H
OUT DX, AL
MOV AL, 03H
OUT DX, AL
MOV DX, CON8254 ;8254
MOV AL, 76H ;计数器1,方式3
OUT DX, AL
MOV DX, B8254
MOV AL, 0E8H
OUT DX, AL
MOV AL, 03H
OUT DX, AL
AA1: JMP AA1
CODE ENDS
END START
到了这里,关于8254 定时/计数器应用实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!