当前位置:文档之家› 8253计数器定时器接口实验

8253计数器定时器接口实验

微机原理实验报告
实验五 8253计数器/定时器接口实验
1.实验目的
1)学会通过PC总线、驱动器、译码器等在PC机外部扩充为新的芯片;
2)了解8253计数器/定时器的工作原理;
3)掌握8253初始化的程序设计;
4)掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。

2.实验内容
将实验装置上的1片8253定时器/计数器接入系统,具体做两个内容的实验。

1)实验一:将8253的计数器0设置为工作于方式0,设定一个计数初值,用手
动逐个输入单脉冲,观察OUT0的电平变化。

硬件连接:断开电源,按图2-1将8253接入系统。

具体包括:
(1)将8253的CS接I/O地址输出端280H-287H;
(2)将8253的计数器0的CLK0与单脉冲信号相连,以用来对单脉冲进行计数;
(3)将8253的GATE0用专用导线接向+5V,以允许计数器0工作;
(4)将8253的OUT0接到LED发光二极管,以显示8253计数器0的输出OUT0的
状态。

图2-1 8253实验一的连线图
2)实验二:将8253的计数器0、1均设置为工作于方式3(方波),按图2-2重
新接线。

要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT的输出由LED 显示出来。

将计数器0与计数器1串联使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。

图2-2 8253实验二的连线图3.程序及框图
1)程序框图
图4-1给出了8253实验一的流程图。

图4-1 程序流程图
图4-2给出了8253实验二的流程图。

2)程序代码
实验一程序代码:
CTRL EQU 283H
TIME0 EQU 280H
TIME1 EQU 281H
DATA SEGMENT
MESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DX,AX
MOV DX,OFFSET MESS
MOV AH,09H
INT 21H
MOV DX,CTRL
MOV AL,30H
OUT DX,AL
MOV DX,TIME0
MOV AX,03H
OUT DX,AL
XCHG AH,AL
OUT DX,AL
COUNT:
MOV AH,06H
MOV DL,0FFH
INT 21H
JZ COUNT
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验二程序代码:
CTRL EQU 283H
TIME0 EQU 280H
TIME1 EQU 281H
DATA SEGMENT
MESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DX,AX
MOV DX,OFFSET MESS
MOV AH,09H
INT 21H
MOV DX,CTRL
MOV AL,36H
OUT DX,AL
MOV AL,76H OUT DX,AL
MOV DX,TIME0 MOV AX,1000
OUT DX,AL
XCHG AH,AL
OUT DX,AL
MOV DX,TIME1 MOV AX,1000
OUT DX,AL
XCHG AH,AL
OUT DX,AL
COUNT:
MOV AH,06H MOV DL,0FFH
INT 21H
JZ COUNT
MOV AX,4C00H
INT 21H
CODE ENDS
END START
4.实验数据、现象及结果分析
5. 实验思考题
1)实验一中的定时器0的输出OUT0的电平是如何变化的,为什么?
解:假设对定时器0赋初值为3,则控制字发送后,OUT0变为低电平,当手动输入3个单脉冲后,OUT0变为高电平。

因为当计数器工作于方式0时,计数开始时为低电平,当CE计数器减到0时,OUT输出高电平并保持不变。

2)实验二中的计数器0、计数器1的计数初值是如何确定的。

解:实验二中要求CLK0输入1MHz信号时,OUT1输出1Hz方波,即可对计数器0赋初值a,对计数器1赋初值b,其中a和b均要小于等于65536,同时要求
a*b=1000000。

在具体实验中为简化程序编写,故对计数器0和1均赋初值1000即可。

3)是否能用现有的实验装置通过使用8253的方式0和方式3实现一个延时10
秒的高电平输出?即:8253某个计数器的输出在初始化完成后变为低电平,10秒后变为高电平,具体如何实现?
解:由于8253工作于方式0时,CPU向其发出控制字后,输出OUT就变为低电平,从而导致低电平的时间中有一部分无法计算,即OUT变为低电平到计数器开始计数这段时间,故本题中利用8253的方式0和方式3实现延时10秒的高电平输出并不十分精确。

设计思路:电路部分不需要重新接线,由电路可知,经过计数器0分频后,OUT0处得到的是1000Hz的方波,周期为0.001秒,将其作为计数器1的CLK1输入信号,将计数器1的的工作方式设置为方式0,并对计数器1赋初值10000,便可在OUT1端得到延时10秒的高电平输出,可在OUT1处连接LED进行OUT1输出电
平的反应。

程序代码为:
CTRL EQU 283H
TIME0 EQU 280H
TIME1 EQU 281H
DATA SEGMENT
MESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DX,AX
MOV DX,OFFSET MESS
MOV AH,09H
INT 21H
MOV DX,CTRL
MOV AL,36H ;设置定时器0,使其工作于方式3 OUT DX,AL
MOV AL,70H ;设置定时器1,使其工作于方式0 OUT DX,AL
MOV DX,TIME0 ;向定时器0赋初值1000
MOV AX,1000
OUT DX,AL
XCHG AH,AL
OUT DX,AL
MOV DX,TIME1 ;向定时器1赋初值10000
MOV AX,10000
OUT DX,AL
XCHG AH,AL
OUT DX,AL
COUNT:
MOV AH,06H ;若有键按下,则退出
MOV DL,0FFH
INT 21H
JZ COUNT
MOV AX,4C00H
INT 21H
CODE ENDS
END START。

相关主题