实验三_8253定时器计数器实器

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

实验三 8253定时器/计数器实验

一、实验目的

1. 学会8253 芯片与微机接口的原理和方法。

2. 掌握8253 定时器/计数器的工作原理和编程方法。

二、实验内容

编写程序,将8253的计数器0设置为方式2 (频率发生器),计数器1设置为方式3 (方

波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。

1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。

2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。

3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使

LED 的闪亮频率仍为1Hz。

三、电路图

CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;

GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;

四、流程图及编程指南

8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz用+5V 单电源供电。8253 的六种工作方式:

⑴方式0:计数结束中断⑷方式3:方波频率发生器

⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号

⑶方式2:频率发生器⑹方式5:硬件触发的选通信号8253 初始化编程

1. 8253 初始化编程

8253 的控制寄存器和 3 个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。因此8255 在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则:

①在对某个计数器设置初值之前,必须先写入控制字;

②在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。

2. 8253 的编程命令

8253 的编程命令有两类:一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令;另一类是读出命令,用来读取计数器的当前值。锁存命令是配合读出命令使用的。在读出计数器值前,必须先用锁存命令锁定当前计数寄存器的值。否则,在读数时,减 1 计数器的值处在动态变化过程中,当前计数输出寄存器随之变化,就会得到一个不确定的结果。当CPU 将此锁定值读走后,锁存功能自动失效,当前计数输出寄存器的内容又跟随减 1 计数器变化。在锁存和读出计数值的过程中,减 1 计数器仍在作正常减 1 计数。这种机制确保了即能在计数过程中读取计数值,又不影响计数过程的进行。

五、实验程序及注释

CODE SEGMENT

ASSUME CS:CODE

ORG 1200H

START:

MOV DX,43H

MOV AL,00110100B ;写入控制字,选择计数器0

OUT DX,AL

MOV DX,40H

MOV AL,0F4H ;写入初值低8位

OUT DX,AL

MOV AL,01H ;写入初值高8位

OUT DX,AL

MOV DX,43H

MOV AL,01110110B ;写入控制字,选择计数器1

OUT DX,AL

MOV DX,41H

MOV AL,0E8H ;写入初值低8位

OUT DX,AL

MOV AL,03H ;写入初值高8位

OUT DX,AL

JMP $

CODE ENDS

END START

六、实验内容

1.2EEH=750 3E8H=1000

输出频率=(5X10^5)/(750X1000)=0.667HZ

实验结果:灯闪烁40次所花时间为60S,与理论值一致。

2.将初值一改为500=1F4H

输出频率=(5X10^5)/(500X1000)=1HZ

实验结果:灯闪烁30次所花时间为30S,与理论值一致。

3.BCD码:将初值一改为500H

将初值二改为1000H

输出频率=(5X10^5)/(500X1000)=1HZ

实验结果:灯闪烁40次所花时间为40S,与理论值一致。

七、问答题:

1. 8253初始化编程时需要遵循的原则是什么?

①选择控制寄存器,先写控制字,选择计算器及工作方式、读写格式、数制。

②初始值设置时,如果是16位,则需要两条指令来完成。

2. 简述8253初始化编程的步骤。

将控制命令字写入控制寄存器,给计算器赋初值。

八、调试过程:

1. 按连线图连接好,检查无误后打开实验箱电源。

2. 在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。

3. 运行程序后,观察LED闪烁周期,记录20次闪烁时间。

4.按要求调整初始值,使得闪烁周期为1S时间。

九、心得体会:

这个实验的难点主要在于定时器的初始化和初值的计算。弄懂初始化命令字每一位的作用,就可以轻松的选择计算器,规定计算器的工作方式、读写格式和数制。初值的计算和时钟频率以及工作方式有关。写入初值时如果是8位,一条指令即可完成,如果是16位则需要两条指令来完成。

相关文档
最新文档