可编程定时器计数器(8253) 实验报告

可编程定时器计数器(8253) 实验报告
可编程定时器计数器(8253) 实验报告

实验名称可编程定时器/计数器(8253)学生姓名

学生学号

专业班级

指导老师

2015-1-7

实验六可编程定时器/计数器(8253)

一、实验目的

掌握8253芯片和微机接口原理和方法,掌握8253定时器/计数器的工作方式和编程原理。

二、实验内容

1.设计8253定时器/技术器仿真电路图;

2.根据仿真电路图,编写代码,对8253定时器/计数器进行仿真。

三、实验要求

1.要求计数器2工作于模式1(暂稳态触发器),计数初值为1250;

2.计数器0工作于方式3(方波模式),输出一个1KHz的方波,8253的

输入时钟为1MHz,计数初始值格式为BCD。

3.8253与系统的连接如图1所示。

图1计数器8253与8086连接原理图

注:实验过程中,发现图1有误。应将8253定时器/计数器右边部分的电阻R2与按钮交换位置。

四、实验原理

8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。

8253的工作方式3被称作方波发生器。任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。

进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUTi端输出的周期为n×CLKi周期,占空比为1:1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。

8253定时器/计数器控制字决定这定时器0,1,2的工作模式。一旦CPU对控制字进行写操作,且对相应的定时器有效,则相应定时器改变工作模式,可能准备接收计时初值。控制字的格式如图2所示。

图2 8253控制字格式

8253有4个端口,且通过A[1…0]引脚控制着4个端口。访问端口如所示。

A1 A0访问端口

0 0CNT0端口地址

0 1CNT1端口地址

1 0CNT2端口地址

1 1控制字端口地址

表1 8253端口地址列表

五、实验步骤及结果

1.确定8253的方式字,以及计数初始值;

根据图2和实验要求,计算得出

计数器0对应的控制字为27H,计数器0的初值为1000H;

计数器2对应的控制字为0B2H,计数器2的初值为1250。

2.绘制电路图,电路图绘制结果如图3所示;

图3 8253仿真电路图

3.根据电路图,确定8253的4个端口号的地址;

CNT0端口端口地址0A000H

CNT1端口端口地址0A002H

CNT2端口端口地址0A004H

控制字端口端口地址0A006H

4.编写代码,代码如下;

CODE SEGMENT

ASSUME CS:CODE

START: JMP TCONT

TCONTRO EQU 0A006H

TCON0 EQU 0A000H

TCON1 EQU 0A002H

TCON2 EQU 0A004H

TCONT: MOV DX,TCONTRO

MOV AL,27H;计数器0,只写初值高8位,方式3,BCD码

OUT DX,AL

MOV DX,TCON0

MOV AL,10H;时钟为1MHZ,计数时间=1us*1000,输出频率1KHZ

OUT DX,AL ;注意1000的BCD码为1000H,此处只需写高位

MOV DX,TCONTRO

MOV AL,0B2H;计数器2,先写初值低8位再写高8位,方式1,二进制数

OUT DX,AL

MOV DX,TCON2

MOV AX,1250;写入计数初值1250

OUT DX,AL

MOV AL,AH

OUT DX,AL

JMP $

CODE ENDS

END START

5.对程序进行编译、链接、仿真,仿真结果如图4、图5所示。

图4 方波图(A通道,黄色)

图5 脉冲图(D通道,绿色)

六、实验总结

本次实验,重点在于自己找资料,理解透8253的控制方式及工作原理。只要理解了8253的原理,再配上汇编指令,便轻松完成本次实验。

到现在,一共做了6次实验。6次实验都是与外设打交道,故常用到的指令就MOV,OUT,IN三条指令,常用到的寄存器就AX,DX,常用到的寻址方式是寄存器间接寻址(DX用在此处)。当访问的端口地址小于255时,则可以采用直接寻址,不用DX间接寻址;当访问的端口地址大于255时,寄存器间接寻址则是必须的,必须用到DX寄存器。

如有侵权请联系告知删除,感谢你们的配合!

相关主题
相关文档
最新文档