实验报告五 定时器计数器实验.docx
《实验报告五 定时器计数器实验.docx》由会员分享,可在线阅读,更多相关《实验报告五 定时器计数器实验.docx(16页珍藏版)》请在冰豆网上搜索。
实验报告五定时器计数器实验
信息工程学院实验报告
成绩:
指导老师(签名):
课程名称:
微机原理与接口技术
实验项目名称:
定时器/计数器实验实验时间:
2016.12.6
班级:
姓名:
学号:
一、实验目的
1.掌握8254的工作方式及应用编程。
2.掌握8254典型应用电路的接法。
二、实验设备
PC机一台、TD-PITD+实验系统一套。
3、实验原理
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是输出波形的频率。
图5-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
图5-18254的内部接口和引脚
8254的控制字有两个:
一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标识位来区分。
控制字格式如表5-1~5-3所示。
表5-18254的方式控制字格式
表5-28254读出控制字格式
表5-38254状态字格式
8254实验单元电路图如下图所示:
图5-28254实验电路原理图
四、实验内容与步骤
1.计数应用实验
编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接INTR1,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“5”。
实验步骤:
(1)实验接线如图5-3所示。
图5-3(a)8254计数应用实验接线图
图5-3(b)8259计数应用实验实物接线图
(2)运行Tdpit集成操作软件,进入编辑调试集成环境。
(3)根据程序设计使用语言不同,在“语言设置”菜单项中设置所使用的语言。
如图5-4所示。
该项一经设置,会再下次启动后仍保持不变。
图5-4设置语言环境
(4)开始新建文件进行编程。
点击“文件”菜单项中的“新建”,可以新建一个空白文档。
默认名为Td-pit1。
如图5-5所示。
图5-5新建空白文档
(5)编写程序,如图5-6所示,并保存,此时软件会提示输入新的文件名,输入文件名后点击保存。
图5-68254计数应用实验程序编辑界面
(6)点击
,编译文件,若程序编译无误,然后再点击
,连接程序。
编译连接成功会在输出信息栏显示输出信息,如图5-7所示。
图5-7编译连接输出信息
(7)编译连接成功后可以点击
,运行程序,按动KK1+产生单次脉冲,观察实验现象。
(8)可改变计数值,验证8254的计数功能。
2.计数应用实验
编写程序,将8254的计数器2设置为方式3,用信号源1.8432MHz作为CLK2时钟,计数初值为100,相当对CLK2进行100分频。
在OUT2输出频率为18.432KHz的时钟。
将OUT2连接到计数器0的CLK0,设置计数器0也工作在方式3,计数初值为18432,相当是进行18432分频。
则在OUT0得到1Hz的输出。
实验步骤:
(1)接线图如图5-8所示,按图接线。
图5-8(a)8254定时应用实验接线图
图5-8(b)8254定时应用实验实物接线图
(2)运行Tdpit集成操作软件,根据实验内容,编写实验程序,编译、链接。
图5-98254定时应用实验程序编辑界面
图5-10编译连接输出信息
(3)单元中GATE0已经连接了一个上拉电阻,所以GATE0不用连接。
(4)运行实验程序,OUT0输出接D0观察LED灯的闪烁频率是否为1HZ。
(5)用软件所带示波器进行观测,观测方法:
点击快捷工具栏上“
”按钮,启动示波器显示窗口,即可观察波形显示。
五、实验结果及分析:
1.计数应用实验
(1)编译连接成功后,使用运行命令运行程序,按动KK1+产生单次脉冲,查看结果。
图5-12结果显示窗口
分析:
每当KK1+按动5次后产生中断请求,则在屏幕上显示字符“5”。
(2)改变计数值,验证8254的计数功能。
图5-13改变计数值实验结果
分析:
将实验程序中的计数初值改为6,并将屏幕显示字符改为“7”。
实验结果为:
每当KK1+按动7次后产生中断请求,则在屏幕上显示字符“7”。
2.定时应用实验
(1)运行实验程序,用软件所带示波器进行观测,观测方法:
点击快捷工具栏上“
”按钮,启动示波器显示窗口,即可观察波形显示。
示波器显示界面如图5-11所示。
图5-11示波器显示界面
分析:
直接将OUT0输出接D0,则观察到LED灯每秒亮一次,即输出是1HZ的脉冲。
也可用软件所带示波器进行观测,观测的波形如图5-11所示。
六、实验总结:
通过本实验,我了解了8254的工作方式及应用编程,以掌握了8254典型应用电路的接法。
通过本次实验加深了对理论编程的知识的理解,巩固了我的理论知识。
附录:
;T8254-1.asm
;查看端口资源分配情况,记录实验系统I/O端口始地址
INTR_IVADDEQU003CH;INTR对应的中断矢量地址
IOY0EQU0D000H;片选IOY0对应的端口始地址
MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址
MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址
MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址
MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
CS_BAKDW?
;保存INTR原中断处理程序入口段地址的变量
IP_BAKDW?
;保存INTR原中断处理程序入口偏移地址的变量
IM_BAKDB?
;保存INTR原中断屏蔽字的变量
STR1DB'COUNT:
$';显示的字符串
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
CLI
MOVAX,0000H;替换INTR的中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,ES:
[DI]
MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址
MOVAX,OFFSETMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址
MOVAX,SEGMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口段地址
INAL,21H
MOVIM_BAK,AL;保存INTR原中断屏蔽字
ANDAL,7FH
OUT21H,AL
STI
MOVDX,OFFSETSTR1;显示字符串
MOVAH,9
INT21H
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,10H;计数器0,方式0
OUTDX,AL
MOVDX,MY8254_COUNT0;装入计数初值
MOVAL,4
OUTDX,AL
WAIT1:
MOVAH,1;判断是否有按键按下
INT16H
JZWAIT1;无按键则跳回继续等待,有则退出
QUIT:
CLI
MOVAX,0000H;恢复INTR原中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址
MOVES:
[DI],AX
MOVAL,IM_BAK;恢复INTR原中断屏蔽寄存器的屏蔽字
OUT21H,AL
STI
MOVAX,4C00H;返回到DOS
INT21H
MYISRPROCNEAR;中断处理程序MYISR
PUSHAX
MOVAL,35H
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
MOVDX,MY8254_COUNT0;重装计数初值
MOVAL,4
OUTDX,AL
OVER:
MOVAL,20H;向PC机内部8259发送中断结束命令
OUT20H,AL
POPAX
IRET
MYISRENDP
CODEENDS
ENDSTART
;---------------------------------------------------------------------------------------------------------------------
;T8254-2.asm
;查看端口资源分配情况,记录实验系统I/O端口始地址
IOY0EQU0D000H;片选IOY0对应的端口始地址
MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址
MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址
MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址
MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,0B6H;计数器2,方式3
OUTDX,AL
MOVDX,MY8254_COUNT2;装入计数初值
MOVAL,64H;100分频
OUTDX,AL
MOVAL,00H
OUTDX,AL
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,36H;计数器0,方式3
OUTDX,AL
MOVDX,MY8254_COUNT0;装入计数初值
MOVAL,00H;18432分频
OUTDX,AL
MOVAL,48H
OUTDX,AL
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART