微机原理与接口技术实验报告 下载本文

POP DS

IRET ;检测是否有键按下程序 BREAK PROC NEAR PUSH DS

MOV AH,06H MOV DL,0FFH INT 21H JE POP

RETURN DS

CLI ;恢复中断屏蔽命令字 MOV AL,MKBAK

OUT 0A1H,AL;恢复中断入口地址 MOV AX,0000H MOV ES,AX

MOV DI,01CCH ;INT 73H,01CCH=73H*4,根据中断号修改 MOV AX,IPBAK CLD STOSW

MOV AX,CSBAK

STOSW

MOV DX,INTCSR_BYTE1 MOV AL,00H OUT DX,AL STI

MOV AX,4C00H INT 21H RETURN:POP DS RET BREAK ENDP CODE ENDS END START

四.收获体会。

实验中开始使用机箱并行接口操作,在DOS界面下操作。在老师已给的程序代码的基础上,修改端口地址,运行程序。对理论知识的认识还不够深刻,实际操作起来略显死板,也出现了些问题,比如端口地址修改不正确,连线没有一一对应等出现运行失败。在修改后才正常运行。今后除了加紧理论的学习为还需逐步完善自己的实践操作习惯,提高自己的学习能力。

实验八、8254定时计数器应用

一.实验内容

1.计数应用实验:编写程序,应用8254的计数功能,用开关模拟计数。使每当按动开关

29

KK1五次后,产生中断,并在屏幕上显示一个字符“M”。

2.定时应用:自己编写程序,应用8254的定时功能,将屏幕设计为一个秒表。 3.电子发声:自己编写程序让实验装置上的扬声器和PC机上的扬声器唱歌。 二.分析设计思想 (一)实验原理

8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:

(1)有3个独立的16位计数通道;

(2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作在6种不同工作方式;

(4)每个计数器允许的最高计数频率为10MNZ(8253为2MHZ);

(5)有读回命令(8253没有),可以读出当前计数单元的内容和状态寄存器内容;

13-

图13-1是8254的内部结构框图和管脚图。它是由与CPU的接口、内部控制电路和三个计数器组成。

三个独立的计数器,每个计数器的结构完全相同,如图13-2。

数据总线 3个引角:GATEi——门控信号输入端 CLKi——计数脉冲输入端 计数初值寄存器 OUTi——信号输出端

GATEiOUTi 16位减1计数器 CLKi

输出锁存器 图13-2 计数器结构示意图

1、工作过程:

(1) 初始化时,程序员将计数初值写入计数初值寄存器,自动送入16位减1计数器。计数初值N=fCLKi÷fOUTi

(2) 当GATEi=1时,每一个CLKi信号的下降沿使减1计数器减1,锁存器随之变化。 (3) 当计数值减到规定值时,OUTi端产生输出信号。 2、8254的工作方式:

方式0——计数结束输出正跃变信号(可作为中断请求信号)

30

方式1——单脉冲发生器(形成负脉冲,宽度=N×CLK脉冲周期) 方式2——分频器(输出固定频率的脉冲)

图 13-3 方式2波形图 13-4 方式3计数值为奇数时的波形

方式3——方波发生器

方式4——软件触发的单脉冲发生器(输出负脉冲,宽度为一个CLK周期) 方式5——硬件触发的单脉冲发生器(输出负脉冲,宽度为一个CLK周期) 3、8254端口地址:

当CS=0时,地址总线的A1 A0组合(00~11),确定选择0#、1#、2#计数器及控制寄存器

A1A0=00,选中0# 计数器对应端口的偏移地址是: 40H A1A0=01,选中1# 计数器 41H A1A0=10,选中2# 计数器 42H A1A0=11,选中控制寄存器 4、8254的控制字:

43H

控制字有两个:方式控制字共用一个地址,由标识位来区分。

读回控制字

方式控制字用来设置计数器的工作方式,其命令格式如表13-1所示。

读回控制字格式如表13-2所示。当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。状态字格式如表13-3所示。 5、8254初始化编程步骤

一步:向控制寄存器写入控制字,确定使用的计数器及工作方式。 二步:向使用的计数器写入计数初值。

13-1

13-

001 = 选中计数器

31

0

010 = 选中计数器

13-3

(二)实验说明及步骤

1、确定8254端口地址

执行PCI_BIOS.EXE,获取实验用PCI总线扩展卡分配的地址空间及中断请求线。确定8254芯片所使用的端口地址:

本系统中I/O部分实验使用的是PCI总线扩展卡申请的第三个I/O空间(即BASE 2,假设为0C000H)。各I/O接口芯片的端口地址定义为:

BASE 2的首地址+ 各端口的偏移地址

8254端口的偏移地址定义为:

计数器0:40H 计数器1:41H 计数器2:42H 控制端口:43H CPU访问8254端口地址为:

计数器0:0C040H 计数器1:0C041H 计数器2:0C042H 控制端口:0C043H

2、计数应用实验

编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1作为CLK0时钟,OUT0连接IRQ,每当KK1按动5次后产生中断请求,在中断服务程序中完成屏幕上显示字符“M”。参考接线图如图13-5所示。

实验步骤如下:

(1) 执行PCI_BIOS.EXE文件,确定实验装置中8254的各端口地址。按实验内容编写程序(参考程序见后),编译、连接,生成执行文件。 (2) 设计实验线路图,完成线路连接。

(3) 打开实验箱电源,运行程序,按动KK1微动开关,观察是否按动5次后屏幕显示字

符“M”。

(4) 分析该程序结构,理解如何对8254初始化,如何实现中断服务。 (5) 修改计数初值,从而实现不同要求的计数。

13 -

3、定时应用实验——秒表的设计

32