实验题目
计数应用实验
编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按下‘KK1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’;
认识8254
8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:
- 有三个16位计数器
- 每个计数器可按二进制或十进制(BCD)计数
- 每个计数器可编程工作于6种不同的工作方式
- 8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)
- 8254有读回命令(8253,没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容
- 计数脉冲可以是有规律的时钟信号,也可以是随机信号。
8254的内部结构框图和引脚图
由与CPU的接口,内部控制电路和三个计数器组成
8254的工作方式如下
- 方式0:计数到0结束输出正跃变信号方式
- 方式1:硬件可重触发单稳方式
- 方式2:频率发生器方式
- 方式3:方波发生器
- 方式4:软件触发选通方式
- 方式5:硬件触发选通方式
8254的控制字
- 方式控制字:设置计数器的工作方式
- 读回控制字:设置读回命令
注意:两个控制字共用一个地址,由标示位来区分
方式控制字格式
读回控制字格式
实验电路连接
实验流程图
实验代码
;8254的编址空间起点是0600H 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 ;初始化ICW1 OUT 20H,AL MOV AL,08H ;初始化ICW2 OUT 21H,AL MOV AL,04H ;初始化ICW3 OUT 21H,AL MOV AL,01H ;初始化ICW4 OUT 21H,AL MOV AL,6FH ;初始化OCW1 OUT 21H,AL ;初始化8254 MOV DX,CON8254 MOV AL,10H;方式控制字 00010000 OUT DX,AL MOV DX,A8254 MOV AL,04H;把计数初值4送入计数器A,每5次,送4 OUT DX,AL STI AA1: JMP AA1 IRQ7: ;执行一次中断后,原来8254A计数器的初值为0,为了重复该中断,需要再输入一次计数初值 MOV DX,A8254 MOV AL,04H OUT DX,AL MOV AX,014DH ;字符M INT 10H MOV AX,0120H ; 空格 INT 10H ;中断结束命令 往地址20H送入20H MOV AL,20H OUT 20H,AL IRET ;返回中断 CODE ENDS END START
补充