8254定时与计数器实验精编版

三、设计思路、步骤和程序流程图

3.1 设计思路

(1) 计数应用实验:将8254的计数器0设置为方式0,计数值为十进制数4,用单次脉冲

KK1+作为CLK0时钟,OUT0连接MIR7,首先让程序进入死循环等待中断,每当KK1+按动5次后产生中断请求,调用中断程序,在屏幕上显示字符“M”。 (2) 定时应用实验:利用8254的两个计数装载过大的初始值,其中计数器0的OUT作为

计数器1的CLK的输入,当两个计数器的初值满足一定条件时,计数器1的OUT即为1s方波,并可通过软件的示波器直接观察。

3.2 实验步骤

(1) 计数应用实验:

1. 按图2-3连接电路;

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

3. 单击RUN按钮,运行实验程序,每连续按动5次KK1+,在界面的输出区会显示

字符‘M’;

4. 改变计数值,验证8254的计数功能。 (2) 定时应用实验

1. 按图2-4连接实验线路;

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

3. 运行程序,8254的OUT1会输出1s的方波,用软件自带的示波器功能进行观察。

3.3 程序流程图

(1) 计数应用实验:

主程序流程图如图2-5

5

开始关中断写入8259中断向量初始化8259芯片利用OCW1设置中断屏蔽初始化8254芯片计数器开中断延时N按动脉冲开关YN调用中断程序计数+1Y计数大于5

图2-5 计数应用实验主程序流程图

中断程序流程图如图2-6

6

(2) 定时应用实验:

程序流程图如图2-7

开始打印字符串打印空格结束中断返回主程序结束 2-6 计数应用实验中断程序流程图开始初始化8254计时器0设置计时器0初始值初始化8254计时器1设置计时器1初始值延时

图2-7 定时应用程序流程图

7

四、程序清单与执行结果

4.1 程序清单

(1) 计数应用实验代码

IOYO EQU 0600H A8254 EQU IOYO+00H*2 B8254 EQU IOYO+01H*2 C8254 EQU IOYO+02H*2 CON8254 EQU IOYO+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 MOV AX,CS MOV SI,003EH MOV [SI],AX CLI POP DS

;初始化主片8259 MOV AL,11H OUT 20H,AL MOV AL,08H OUT 21H,AL

8

;初始化ICW2

;初始化ICW1

MOV AL,04H OUT 21H,AL MOV AL,01H OUT 21H,AL MOV AL,6FH OUT 21H,AL ;8254

MOV DX,CON8254 MOV AL,10H 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 MOV AX,0120H INT 10H

MOV AL,20H OUT 20H,AL

IRET

CODE ENDS END START

;初始化ICW3

;初始化ICW4

;OCW1

9

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4