汇编与接口课程实验4——8253A不同工作方式
实验目的
学生在课堂上仅仅通过了理论的学习,还需要对所学知识有个直观而生动的了解,这个实验可以使学生更深刻的理解8253A定时/计数器的各种工作方式的特点;通过观察实验波形,可直观地了解这几种工作方式的异同。
实验内容
编写程序分别显示2、3工作方式下的波形。要求2方式的输出频率为1000Hz,3方式的输出频率为2000Hz。本实验使用8253A的定时/计数器0,GATE0通过K1接到+5V或地,CLK0接1MHZ的时钟脉冲,OUT2接示波器观测输出波形(连接线见图1-1示)。
采用定时器0和定时器1的级联方式,要求定时器0采用2方式,定时器1采用3方式,观测定时器0和定时器1输出波形(时间常数自定,连接线见图1-2示)。
实验线路连接
图1-1 实验连线图
图1-2 实验连线图
接线图如下:
2,3方式线路图:
2,3级联线路图:
实验编程提示
编写3个实验程序(分别是2,3方式,级联方式)并分别执行。作为第1个接口技术的实验,要注意在实验平台上程序的编写格式,程序的编译、下载和调试过程。
注意:首先调试2、3方式,最后调试级联方式。
实验代码如下:
2方式:
code segment
start:mov dx,283h
mov al,00110100b ;0号计数器,读写两个字节,2号方式,二进制计数
out dx,al ;写入控制命令字寄存器
mov dx,280h ;0号计数器数据口
mov al,e8h ;设置计数初值的低字节
out dx,al ;先送低字节到0号计数器
mov al,03h ;设置计数初值的高字节
out dx,al ;再送高字节到0号计数器
mov ah,4ch ;程序结束
int 21h
code ends
end start
3方式:
code segment
start:mov dx,283h
mov al,00110110b ;0号计数器,读写两个字节,3号方式,二进制计数
out dx,al ;写入控制命令字寄存器
mov dx,280h ;0号计数器数据口
mov al,f4h ;设置计数初值的低字节
out dx,al ;先送低字节到0号计数器
mov al,01h ;设置计数初值的高字节
out dx,al ;再送高字节到0号计数器
mov ah,4ch ;程序结束
int 21h
code ends
end start
2,3级联:
;2,3方式级联
data segment
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax ;开始程序,没啥实际意义
mov dx,283H ;命令口
mov al,00110100B ;0计数器,读写两个字节,使用方式2,时间常数使用二进制计数
out dx,al ;写入控制命令字寄存器
mov ax,0100H ;设置计数初值,因为是两个字节,所以分两次输入,中间需要将AH赋值给到AL
mov dx,280H ;0号计数器数据口
out dx,al ;先送低字节到0号计数器
mov al,ah ;取高字节送AL
out dx,al ;再送高字节到0号计数器
mov dx,283h ;命令口
mov al,76H ;01110110,即使用1号计数器,同样读写两个字节,使用方式3,二进制计数
out dx,al ;写入新的控制命令字寄存器
mov ax,0010H ;设置计数初值
mov dx,281h ;1号计数器数据口
out dx,al ;先送低字节到1号计数器
mov al,ah ;取高字节送AL
out dx,al ;再送高字节到1号计数器
code ends ;程序结束
end start
实验步骤
根据原理图正确连接实验线路(需要连接红线)。
正确理解实验原理。
方式2:当写入计数初值后,启动计数器开始减1计数,直到减到1时,OUT输出一个宽度为时钟CLK周期的低电平,接着又变回高电平,且计数初值自动重装,开始下一轮计数,如此往复,不停地输出连续的负脉冲。
方式3:该方式产生占空比为1:1(N为偶数)或接近1:1(N为奇数)的连续方波。方波的周期=计数初值×时钟脉冲的周期。改变计数初值就可以改变输出方波的频率。
方式2,3级联:以方式2所产生的脉冲作为方式3的CLK时钟,最后的表现形式为方式3的表现形式,频率为方式2,3设定的频率相乘。
编写实验程序,并上机调试,观察实验结果。
方式2:由于实验要求2方式输出频率为1000Hz,因此根据公式1MHz/1000= N,得到计数器的初值为1000,转化为16进制也就是3e8H。那么示波器的显示应该是周期为1000us,并且低电平的时间为1/N-1也就是1/999,如图所示结果正确。
下图为方式2的波形:
将波形放大之后:
方式3:由于实验要求3方式的输出频率为2000Hz,因此根据公式1MHz/2000=N,得到计数器初值为500,转化为16进制也就是1f4H。那么示波器的显示应该是周期为500us的方波,高电平与低电平比为1:1。波形如下图所示,结果正确。
方式2,3级联:这里给2方式的计数器初值0100H,给3方式的计数器初值0010H,这样给3方式计数器的输入频率就为2方式计数器的输出频率,然后3方式计数器的输出周期为:
如下图所示,结果正确。
思考题
用示波器观测方式0-5,它们所展示的波形如何。
在进行这四种方式观察的时候,代码和之前使用的方式2,3的代码类似,只对初始化命令中有关方式的命令字进行修改。
方式0:当写入计数初值后,启动计数器开始计数,OUT信号变为低电平,并维持低电平至减法计数器的内容减到0时,停止工作,OUT信号变为高电平,并维持高电平到再次写入新的计数值
方式1:方式1是需要硬启动,需要给GATE的上升沿,所以先输入CLK信号,然后给GATE一个上升沿,使其开始计时,低电平的时间为1000us,因为初值为1000,所以输出正确。
方式4:也是同样通过计数的方式,是软启动,GATE接高电平,然后送初值1000,它低电平的时间应该为时钟的倒数,所以应该为1/1Mhz,为1us,如下图所示,输出正确。
方式5:需要一个GATE的上升沿将其启动触发,是硬启动,其低电平的周期仍然为1/1MHz,所以为1us。
相关文章
- python 接口加密
- 接口与抽象类的应用(包括各自设计模式)
- vue框架-基础6-vue-调用后端接口,axios使用,跨域问题
- EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解
- Java 三种方式实现接口校验
- 接口测试总结
- 【第3版emWin教程】第7章 emWin6.x的裸机方式移植(STM32H7之RGB接口)
- 【SpringBoot18】SpringBoot 调用外部接口的三种方式
- 〖Python接口自动化测试实战篇⑤〗- 接口自动化测试必备基础 - http协议
- 短信平台接口安全控制
- 【高并发】深入解析Callable接口
- 2种方式实现JMeter多接口指定TPS同时并发
- JAVA中所有与集合有关的实现类都是这六个接口的实现类
- 【MyBatis】| 使⽤javassist⽣成类、面向接口的方式进行CRUD
- 【数据安全】保证接口数据安全的10种方式
- 接口测试——PyTest自动化测试框架(八)
- 熟悉POST提交数据的4种方式,接口测试更高效