实验三 定时器计数器实器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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位则需要两条指令来完成。