8254常规接口实验(汇编与接口技术课程)

文章详细介绍了北交大本科课程8254汇编与接口技术的三个实验,包括实验目的、内容和步骤。实验一涉及8254计数器0的工作方式0,实验二展示了工作方式2和3下不同频率的波形生成,实验三则利用定时器0和1的级联实现周期性控制LED。每个实验都包含代码实现和结果分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

北交大本科必修课程——8254汇编与接口技术常规实验。


一、实验目的

1、掌握8254和微机接口的连接方法,了解8254的基本工作原理和编程方法。
2、理解8254定时/计数器的各种工作方式的特点;通过观察实验波形直观地了解8254几种工作方式的异同。

二、实验内容

实验一

将8254计数器0设为工作方式0,计数器初值设置为N(N<0FH)。将实验台上单脉冲接到CLK0上,手动逐个输入单脉冲,用L0和示波器观察OUT0电平变化(输入N+1个脉冲后OUT0变高电平,L0亮)

思路:
1、首先我们要对8254进行初始化,向命令端口283H输入方式命令00010000,来选择计数器0,只写低字节,工作方式0,二进制计数
2、在向计数器0送计数初值3(这个数由自己决定)
实验现象:
电灯泡:电灯泡L0开始时是处于熄灭状态的,当我们手动给4(N+1)个脉冲后,电灯泡变亮并持续保持亮的状态。
示波器:示波器开始时处于低电平,但当我们手动给4(N+1)个脉冲后示波器变为高电平并不再变化。
结果分析:
方式0在手动给第一个脉冲时才将初值寄存器中的数值放到减一计数器中,在第二个脉冲到来的时候才开始减一,所以才会出现电灯泡和示波器在N+1个脉冲后才变亮和变为高电平的现象。并且方式0在计数结束后out信号一直处于高电平,所以电灯泡和示波器才保持常亮和高电平的状态不改变。
代码如下:

code segment
start :
mov dx, 283h; 命令口地址
mov al, 00010000b; 计数器0;只写低字节;2方式;二进制
out dx, al; 初始化

mov dx, 280h; 选择计数器0
mov ax, 03h; 计数器初值是3
out dx, al

code ends
end start

实验二

编写程序分别显示2,3工作方式下的波形。要求2方式的输出频率为1000Hz,3方式的输出频率为2000Hz。本实验使用8254的定时/计数器0,GATE0通过K1接到+5V或地,CLK0接1MHZ时钟脉冲,OUT0接示波器观测输出波形(连线见图1-2)。
图1-2

方式二:

  • 思路:
    因为输入的脉冲频率为1MHZ,为了使示波器输出频率为1000HZ,我们可以计算出计数初值为1MHZ / 1000HZ= 1000,所以我们首先初始化,选择计数器0,先输入高字节再输入低字节,方式2,以二进制计数;然后向计数器输入计数初值1000。
  • 实验现象:
    可以在示波器上观察到1000HZ的波形和数值
  • 代码如下
code segment
start :
mov dx, 283h; 命令口地址
mov al, 00110100b; 计数器0;先低字节再高字节;2方式;二进制
out dx, al

mov dx, 280h; 选择计数器0
mov ax, 3e8h; 计数器初值1000
out dx, al; 先写低字节
mov al, ah;
out dx, al; 再写高字节
code ends
end start

方式3:

  • 思路:类似于方式2,只不过计数初值为1MHZ / 2000HZ=500
  • 代码如下:
code segment
start :
mov dx, 283h; 命令口地址
mov al, 00110110b; 计数器0;先低字节再高字节;3方式;二进制
out dx, al; 初始化

mov dx, 280h; 选择计数器0
mov ax, 1f4h; 计数器初值500
out dx, al; 先写低字节
mov al, ah
out dx, al; 再写高字节
code ends
end start

实验三

采用定时器0和定时器1的级联方式,周期性的点亮和熄灭发光二极管各0.5秒。(连线见图1-3)
图1-3

思路:
我们知道方式二和方式三都为自动装填计数初值,并且方式三的输出波形近似为高电平:低电平 = 1:1,所以这里我们选择计数器0使用方式2而计数器1使用方式三,并将计数器0的OUT信号作为计数器1的输入时钟。因为计数器0连接的时钟信号为1MHZ,为了周期性的点亮和熄灭发光二极管各0.5秒,所以我们要产生一个周期为1s的方波,其频率为1 / 1s = 1HZ。为了产生该1HZ的方波,所以计数器1和计数器0的计数初值之积应该等于1MHZ / 1HZ = 1000000,这里我们将计数器0和计数器1的计数初值都设置为1000,然后进行实验就可以得到预期的结果。

  • 代码如下:
code segment
assume cs : code
start :
mov dx, 283h; 命令口地址
mov al, 00110100b; 计数器0,先写低字节再写高字节,方式22进制
out dx, al

mov dx, 280h;  计数器0
mov al, 1000;   计数初值1000
out dx, al
mov al, ah
out dx, al;


mov dx, 283h; 命令口地址
mov al, 01110110b; 计数器1,先写低字节再写高字节,方式32进制
out dx, al

mov dx, 281h; 计数器1
mov al, 1000;   计数初值1000
out dx, al
mov al, ah
out dx, al;

code ends
end start

四、实验编程提示

编写4个实验程序(分别是0,2,3,级联方式)并分别执行。在观察各种方式的输出波形时,要分析测试结果的原因。

五、实验步骤

1、根据原理图正确连接实验线路(需要连接粗黑线)。
2、正确理解实验原理。
3、编写实验程序,并上机调试,观察实验结果。

六、思考题

观测到的0方式是怎样的波形,为什么会出现这种现象?

波形是:先是低电平持续一段时间后变为高电平。
原因:当写入计数初值后,启动计数器开始计数,out信号变为低电平,并维持低电平至减法计数器的内容到达0时,停止工作,out信号变为高电平,并维持高电平。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若鱼不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值