顺序会造成异常初始化。在初始化主片8259 时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259 的顺序与初始化主片8259 的顺序是相同的。
系统启动时,主片8259 已被初始化,且4 号中断源(IR4)提供给与PC 联机的串口通信使用,其它中断源被屏蔽。中断矢量地址与中断号之间的关系如下表所示: 2. 8259 单中断实验
实验接线图如图2-3-11所示,单次脉冲输出与主片8259 的IR7 相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
图2-3-11 8259单中断实验接线图
实验程序清单
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H MOV DS, AX
MOV AX, OFFSET MIR7 ;取中断入口地址 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 STI
AA1: NOP
JMP AA1
MIR7: STI
CALL DELAY MOV AX, 0137H INT 10H ;显示字符7 MOV AX, 0120H INT 10H MOV AL, 20H
OUT 20H, AL ;中断结束命令 IRET
DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX LOOP AA0 POP CX RET
CODE ENDS
END START
实验步骤
(1)按图2-3-11 连接实验线路;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”以说明响应了中断。
2.5 8254 定时/计数器应用实验
2.5.1 实验目的
1. 掌握8254 的工作方式及应用编程; 2. 掌握8254 典型应用电路的接法。
2.5.2 实验设备
PC机一台,TD-PITE 实验装置一套,示波器一台。
2.5.3 实验内容
1. 计数应用实验。编写程序,应用8254 的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5 次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。
2. 定时应用实验。编写程序,应用8254 的定时功能,产生一个1ms 的方波。
2.5.4 实验原理
8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能:
(1)有3 个独立的16 位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作于6 种不同工作方式;
(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz);
(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以
读出状态寄存器的内容;
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:
n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图2-5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述:
(1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。
(5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。
图2-5-1 8254的内部接口和引脚
8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表2-5-1所示。
表2-5-1 8254的方式控制字格式
表2-5-2 8254读出控制字格式
表2-5-3 8254状态字格式
2.5.5 实验步骤
1. 计数应用实验
编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0 时钟,OUT0 连接MIR7,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“M”。
实验步骤:
(1)实验接线如图2-5-2所示;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,按动KK1+产生单次脉冲,观察实验现象; (4)改变计数值,验证8254 的计数功能。
图2-5-2 8254计数应用实验接线图
实验程序清单
A8254 EQU 06C0H B8254 EQU 06C2H C8254 EQU 06C4H CON8254 EQU 06C6H 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