实验2 定时器/计数器接口扩展设计

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

实验2 定时器/计数器接口扩展设计

一、实验目的

1、学习8088/86与8253的连接方法。

2、学习8088/86对8253的控制方法。

3、学习8253多级串联实现大时间常数的定时方法。

二、实验原理

利用8088/86外接8253可编程定时器/计数器,可以实现对外部事件进行计数。设置断点读回计数器的值。用8253对标准脉冲信号进行计数,就可以实现定时功能。

三、实验仪器

LAB 6000实验系统,PC 机

四、实验内容

计数器:

本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT 脚输出一个高电平。实验时,可以将OUT0接到LED 上,观察计数器是否工作。

根据以下程序流程图编写完整的实验程序并调试。

参考程序: CONTROL equ 08003h

COUNT0 equ 08000h

COUNT1 equ 08001h

COUNT2 equ 08002h

code segment

assume cs:code

start proc near

mov al, 30h ; 通道0,方式0

mov dx, CONTROL

out dx, al

mov al, 5 ; 计数器初始值。

mov dx, COUNT0

out dx, al ; 低八位

mov al, 0

out dx, al ; 高八位

Again:

mov al, 00000000B ; 锁存计数器值

mov dx, CONTROL

out dx, al

mov dx, COUNT0

in al, dx ; 读入计数值低八位

mov bl, al

in al, dx ; 读入计数值高八位

mov ah, al

mov al, bl

jmp Again

start endp

code ends

end start

1、定时器:

工作方式0,计数值减完后输出一个脉冲宽度的高电平。而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。直到下一次计数值减完。这样输出的波形为方波。

由于定时常数过大,就要用多级串联方式。本实验采用两级计数器。定时常数分别为100和10000。将计数器的输出接到计数器0输入。计数器0的输出接到LED0。用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。

根据以下程序流程图编写完整的实验程序并调试。

参考程序:

CONTROL equ 0c003h

COUNT0 equ 0c000h

COUNT1 equ 0c001h

COUNT2 equ 0c002h

code segment

assume cs:code

start proc near

mov al, 36h; 00110110B ; 计数器0,16位,方式3,二进制

mov dx, CONTROL

out dx, al

mov ax, 1000

mov dx, COUNT0

out dx, al ; 计数器低字节

mov al, ah

out dx, al ; 计数器高字节

mov al, 76h; 01110110B ; 计数器1,16位,方式3,二进制 mov dx, CONTROL

out dx, al

mov ax, 1000

mov dx, COUNT1

out dx, al ; 计数器低字节

mov al, ah

out dx, al ; 计数器高字节

jmp $

start endp

code ends

end start

五、实验总结

整理实验程序,并进行实验结果定性分析。

相关文档
最新文档