微机原理实验报告6

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8254定时/计数器应用实验

1.实验目的:

(1)、掌握8254的工作方式及应用编程。

(2)、掌握8254的典型应用电路接法。

2.实验设备:

PC微机一台、TD-PIT+ 实验系统一套。

3.实验内容:

(1)、计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KK1-五次后,产生一次计数中断,并在屏幕上显示一个字符‘5’。

(2)、定时应用实验。编写程序,应用8254的定时功能,实现一个秒表计时并在屏幕上显示。

4.实验说明及步骤:

(1)定时应用实验:

编写程序,将8254的计数器2设置为方式3,用1.8432MHz作为CLK2时钟,计数值为64H,OUT2输出为18.432KHz的时钟。将OUT2连接到计数器0的CLK0,设置计数器0也工作在方式3,计数值为18432,相当于18432分频,则在OUT0得到1Hz的输出。参考程序流程如图5-2所示。

图5-2 8254定时应用实验接线图

实验步骤如下:

a确认从PC机引出的两根扁平电缆已经连接在实验平台上。

b首先运行CHECK程序,查看I/O空间始地址。

c利用查出的地址编写程序,然后编译链接。

d参考图5-2所示连接实验线路。

e运行程序,看数据灯显示是否正确。

8254定时应用实验代码输出1Hz

;*** *********根据查看端口资源修改下列符号值*******************

IOY0 EQU 9C00H

;************************************************************** ****

MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,0B6H ;计数器2,方式3

OUT DX,AL

MOV DX,MY8254_COUNT2 ;装入计数初值

MOV AL,64H ;100分频

OUT DX,AL

MOV AL,00H

OUT DX,AL

MOV DX,MY8254_MODE ;初始化8254工作方式

MOV AL,36H ;计数器0,方式3

OUT DX,AL

MOV DX,MY8254_COUNT0 ;装入计数初值

MOV AL,00H ;18432分频

OUT DX,AL

MOV AL,48H

OUT DX,AL

QUIT: MOV AX,4C00H ;结束程序退出

INT 21H

CODE ENDS

END START

(2)计数应用实验:

编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接INTR,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“5”。参考程序流程如图5-3所示。单元中GATE0已经连接了一个上拉电阻,所以GATE0不用连接。

实验步骤如下:

a确认从PC机引出的两根扁平电缆已经连接在实验平台上。

b首先运行CHECK程序,查看I/O空间始地址。

c利用查出的地址编写程序,然后编译链接。

d参考图5-4所示连接实验线路。

e运行程序,按动KK1-微动开关,观察是否5次后屏幕显示字符“5”。

f可以改变计数初值,从而实现不同要求的计数。

图5-4 8254计数应用实验参考接线图

8254计数应用实验代码

;************根据CHECK配置信息修改下列符号值******************

INTR_IVADD EQU H ;INTR对应的中断矢量地址

INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0F7H ;INTR对应的中断屏蔽字

PCI_INTCSR EQU 9438H ;PCI卡中断控制寄存器地址

IOY0 EQU 9C00H

;**************** ******************************************************

MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址

MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址

MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址

MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量

IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量

IM_BAK DB ? ;保存INTR原中断屏蔽字的变量

STR1 DB 'COUNT: $' ;显示的字符串

相关文档
最新文档