实验三 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。

三、试验区域电路连接图

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

GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元)

四、程序框图

五、编程

1.T=1.41s

CODE SEGMENT

ASSUME CS:CODE

ORG 1200H

START:

CLI ;清除标志位

MOV DX, 0043H

MOV AL, 34H

OUT DX, AL ;控制字地址0043H,控制字00110100实现选择计数器0,16位初值设定,工作方式2,二进制计数

MOV DX, 0040H

MOV AL, 0EEH

OUT DX, AL

MOV AL, 02H

OUT DX, AL ;计数器0写入初值1F4H,分两次赋值,先低八位0EEH,后高八位02H(转为十进制750)

MOV DX, 0043H

MOV AL, 76H

OUT DX, AL ;控制字地址0043H,控制字0110110实现选择计数器1,

16位初值设定,工作方式3,二进制计数码

MOV DX, 0041H

MOV AL, 0E8H

OUT DX, AL

MOV AL, 03H

OUT DX, AL ;计数器1写入初值3E8H,分两次赋值,先低八位0E8H,后高八位03H(转为十进制1000)

JMP $ ;驱动LED

CODE ENDS

END START

2.f=1HZ,T=1s

CODE SEGMENT

ASSUME CS:CODE

ORG 1200H

START:

CLI ;清除标志位

MOV DX, 0043H

MOV AL, 34H

OUT DX, AL ;控制字地址0043H.控制字00110100实现选择计数器0.16位初值设定,工作方式2,二进制计数码

MOV DX, 0040H

MOV AL, 0E8H

OUT DX, AL

MOV AL, 03H

OUT DX, AL;计数器1写入初值03E8H,分两次赋值,先低八位0E8H,后高八位03H(转为十进制为1000)

MOV DX, 0043H

MOV AL, 76H

OUT DX, AL ;控制字地址0043H,控制字01110110实现选择计数器1,16位初值设定,工作方式3,二进制计数码

MOV DX, 0041H

MOV AL, 0F4H

OUT DX, AL

MOV AL, 01H

OUT DX, AL ;计数器0写入初值1F4H,分两次赋值,先低八位0F4H,后高八位01H(转为十进制为500)

JMP $

CODE ENDS

END START

3.改为BCD码

CODE SEGMENT

ASSUME CS:CODE

ORG 1200H

START:

CLI ;清除标志位

MOV DX, 0043H

MOV AL, 35H

OUT DX, AL ;写入初值3543H

MOV DX, 0040H

MOV AL, 050H

OUT DX, AL

MOV AL, 07H

OUT DX, AL

MOV DX, 0043H

MOV AL, 77H

OUT DX, AL

MOV DX, 0041H

MOV AL, 066H

OUT DX, AL

MOV AL, 06H

OUT DX, AL

JMP $

CODE ENDS

END START

六、调试过程及心得体会

当按照程序框图中的初值执行程序是,三次闪烁时间分别为:13.8s、14.7s、14.1s。取平均值为14.2s,但与理论值15s有一定的偏差,需要进行补偿才能实现实验值接近理论值。为了LED在1hz频率下闪烁,分别是计数器0的初始值为1F4H,计数器1初始值为3E8H,程序运行是,LED闪烁时间接近1S。由于硬件电路并不是理想电路,才能设计出想要的结果。8253的定时计数器在工业生产中应用非常广泛在个别场合中需要非常精确的定时,相信在未来的设计中非常有帮助。

七、思考题

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

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

2,在设置计数器初值时,要符合控制字的规定,即只写低八位还是只写高八位还是高低八位都要写,要分辨得很清楚。

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

答:了解芯片的入口地址,根据需求选择各个计数器的工作方式,通过对照方式控制字,写入相应的控制字输出到相应的地址即可。

相关文档
最新文档