8254 定时/计数器应用实验

一、实验目的

1.掌握 8254 的工作方式及应用编程。

2.掌握 8254 典型应用电路的接法。

二、实验内容与要求

1、计数应用实验,编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK+’5次后,产生依次计数中断,并在屏幕上显示一个字符‘M’.

2.定时应用实验。编写程序,应用8254的定时功能,产生一个ls的方法,并且本装置的示波器功能来观察。

三、实验步骤

1. 计数应用实验

将8254的计数器0设置为方式0,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”。

4532e7d8a6874309b383eecdee96977e.png

图4.5.3  8254计数应用实验接线图

实验步骤:

(1)实验接线如图4.5.3所示(由于8254单元中GATE0信号已经上拉+5V,所以GATE0不用接线)。

(2)编写实验程序,经编译、链接无误后装入系统。

419ecfca07fe4c08b6ca723f6d3839af.png

(3)单击run按钮,运行实验程序,每连续按动5次KK1+,在界面的输出区会显示字符“M”(改成K),观察实验现象。

(4)改变计数值,验证8254的计数功能。

2. 定时应用实验

将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLK0时钟,OUT0为波形输出1ms方波,再通过CLK1输入,OUT1输出1s方波。

44e7c6528a734c9f8d89ab1c325ca4e4.png

图4.5.5  8254定时应用实验按线图

实验步骤:

(1)接线图如图4.5.5所示。

(2)根据实验内容,编写实验程序(例程文件名为:A82542.ASM),经编译、链接无误后装入系统。

467c95e756e64ea1b7e10c8965ca8aaf.png

(3)单击run按钮,运行实验程序,8254的OUT1会输出1s的方波,可用软件自带的示波器功能进行观察。

 (4)用示波器观察波形的方法:单击虚拟仪器菜单中的“示波器”按钮或直接单击工具栏的2f346cb71bc3450b9c0863f12bc86466.png 按钮,在新弹出的示波器界面上单击46d4afc6ef624aad9418e2a7b3c6543f.png 按钮运行示波器,就可以观测出OUT1输出的波形。

四、电路连接

1. 计数应用实验

6f268d9134f84e239082198ad4cef4fc.jpeg

2. 定时应用实验

536b3aee42c54edfa8dfc3870685996b.jpeg

五、代码设计

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

3e23c4d7c19949858aa9cdc50267e6b7.png

2.8254的初始化

        MOV DX, CON8254         ;8254
        MOV AL, 36H             ;计数器0,方式3
        OUT DX, AL

36H=00 11 011 0:计数器0,先读写低8位,再读写高8位,方式3,二进制

8e4bbe22dd3f483399971df426073e22.png

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. 计数应用实验

5646536b5c0c469c978c7519704f5e6b.png

修改代码,变成K。

22351118eb97494b879d4021407415d8.png

2. 定时应用实验

f5993d7a36df44fcbaef2acff1b376fb.png

3800b7f485e342078cd03b1b6eec30f7.png

附录 代码

1.计数应用实验

;=========================================================
; 文件名: 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. 定时应用实验

;=========================================================
; 文件名: 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

  • 37
    点赞
  • 228
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钻仰弥坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值