可编程定时器计数器 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称
可编程定时器/计数器(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计数器8253与8086连接原理图
注:实验过程中,发现有误。应将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 8253控制字格式
8253有4个端口,且通过A[1…0]引脚控制着4个端口。访问端口如所示。
表 1 8253端口地址列表
五、实验步骤及结果
1.确定8253的方式字,以及计数初始值;
根据和实验要求,计算得出
计数器0对应的控制字为27H,计数器0的初值为1000H;
计数器2对应的控制字为0B2H,计数器2的初值为1250。
2.绘制电路图,电路图绘制结果如所示;
图 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 方波图(A通道,黄色)
图 5 脉冲图(D通道,绿色)
六、实验总结
本次实验,重点在于自己找资料,理解透8253的控制方式及工作原理。只要理解了8253的原理,再配上汇编指令,便轻松完成本次实验。
到现在,一共做了6次实验。6次实验都是与外设打交道,故常用到的指令就MOV,OUT,IN三条指令,常用到的寄存器就AX,DX,常用到的寻址方式是寄存器间接寻址(DX用在此处)。当访问的端口地址小于255时,则可以采用直接寻址,不用DX间接寻址;当访问的端口地址大于255时,寄存器间接寻址则是必须的,必须用到DX寄存器。