西电微机原理实验报告(6)

2019-05-26 17:12

二、实验内容

(1)将32Hz的晶振频率作为8254 的时钟输入,利用定时器 8254 产生 1Hz 的方波,用发光二极管显示输出结果(发光二极管闪烁)。

(2)开关控制结束程序执行,发光二极管熄灭。

(3)开关控制发光二极管闪烁的速度(输出不同频率的方波)。

考核方式:完成实验内容(1)(2)通过,完成实验内容(3)优秀。

三、实验原理

1. 8254工作原理

8254是一种可编程的定时器/计数器芯片,它具有3个独立的16位计数器通道,每个计数器都可以按照二进制或二-十进制计数,每个计数器都有6种工作方式,计数频率可高达10MHz,芯片所有的输入输出都与TTL兼容。

计数器都有6种工作方式:方式0—计数过程结束时中断;方式1—可编程的单拍脉冲;方式2—频率发生器;方式3—方波发生器;方式4—软件触发;方式5—硬件触发。6种工作方式主要有5点不同:一是启动计数器的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并自动重复计数过程的不同。

8254管脚图:

图3-3-1 可编程定时器/计数器8254管脚图

2.8254工作方式和编程

根据片选信号CS及地址线A1、A0,8254具有四个端口地址。当A1A0=00时,选中的为0通道计数器;A1A0=01时,选中的为1通道计数器;A1A0为10时,选中的为2通道计数器;A1A0=11时,选中控制字寄存器。

8253通道及操作地址分配如下表所示: CS 0 0 0 0 0 0

RD 0 0 0 0 1 1 WR 1 1 1 1 0 0 A1 0 0 1 1 0 0 A0 0 1 0 1 0 1 25

操作 读计数器0 读计数器1 读计数器2 无操作(禁止读) 计数常数写入计数器0 计数常数写入计数器1

0 0 1 0 1 1 X 1 0 0 X 1 1 1 X X 0 1 X X 计数常数写入计数器2 写入方式控制字 禁止(三态) 不操作 通过对控制字符寄存器写入控制字可设定8254的某一个通道的六种工作方式,其格式如下: D7 SC1 SC1 0 0 1 1 RL1 0 0 1 1 RL0 0 1 0 1 D6 SC0 D5 RL1 SC0 0 1 0 1 读/输入选择 计数器锁存 只读/输入低字节 只读/输入高字节 先读/输入低字节,后读/输入高字节 D4 RL0 D3 M2 D2 M1 D1 M0 D0 BCD SC1、SC0用来选择计数器通道: 选择通道 选中0通道计数器 选中1通道计数器 选中2通道计数器 非法 RL1、RL0用来选择读计数值及向计数器送入数据的方式:

M2、M1、M0用来选择工作方式: M2 0 0 X X 1 1 M1 0 0 1 1 0 0 M0 0 1 0 1 0 1 工作方式 方式0 方式1 方式2 方式3 方式4 方式5 BCD用来选择二进制计数及十进制计数。 当此位为0时,为16位二进制计数器;当此位为1时,为4位二-十进制计数器。 方式0为计数结束申请中断的方式。当方式控制字写入后,输出为低电平。在写入计数值后,计数器开始计数。计数器减到0后,输出变为高电平,此高电平信号一直维持到写入新的控制字,或写入新的计数值为止。此时可利用计数到0时,输出由低电平变为高电平的信号申请中断。如果在计数过程中写入新的计数值,则在写入第一个字节时中止计数,写入第二个字节时启动新的计数。

方式1为单脉冲发生方式。输出的负脉冲宽度由计数值决定。在设定工作方式和写入计

26

数值之后,输出为高电平。门控信号的上升沿使输出变为低电平,并开始计数。当计数结束时,输出为高电平,当门控信号为高电平时,计数器从最初计数值启动。由于计数器写入控制字后输出为高电平,当写入计数值后才开始并输出脉冲,因此也可通过写入计数值来实现软件同步。

方式3为方波发生方式。类似于方式2,当计数值为偶数时,前N/2为高电平,后N/2为低电平。当计数值为奇数时,则(N+1)/2为高电平,(N-1)/2为低电平。

方式4为软件触发脉冲方式。在写入控制字后,输出为高电平,写入计数值后开始计数。计数结束产生一个负脉冲,宽度为一个时钟周期。计数期间若写入新的计数值,不影响当前周期,但影响下一个计数周期。在计数期间如门控信号变为低电平,计数停止。

方式5为硬件触发选通方式。写入控制字和计数值后,输出保持高电平,在门控信号的上升沿开始计数,计数结束产生一个时钟周期的负脉冲。在计数过程中可重新启动,在门控信号的上升沿重新计数。 3.8254编程方法

对8254的编程分两部分:

(1) 向控制字寄存器写入方式控制字。 (2) 向规定的通道写入计数值。 在写入计数值时,应向设定的通道写入。而且必须按控制字所规定的一个或两个字节的计数长度写入。

由于在8254内部每个计数器均有自己的方式控制字寄存器,因此在写入控制字及计数值时不一定按0通道、1通道、2通道的次序,而可按编程时的方便来决定。在将8254作为计数器时,可以在计数过程中将计数值读出来。读数时可按控制字规定的方式向该通道/读出一个字节或两个字节的计数值。为保证读数的正确性,可通过门控信号使其停止计数,或控制外部脉冲源禁止输入。控制的另一个办法是向控制字寄存器写入一锁存计数值的命令,使当前的计数值锁存下来。然后用读通计数值的方法将其读出。

锁存计数操作的格式如下: SC1 SC0 0 0 x x x x SC1、SC0用来指定被锁存的计数器,分别为00、01、10。

四、实验步骤

(1) 按照实验内容设计实验连线图,正确连接线路。 (2) 编写实验程序,调试运行程序。

(3) 观察发光二极管闪烁情况,修改程序使8254输出不同频率的方波信号。

五、实验程序

主要程序:

MOV

DX,P8254_MODE MOV OUT MOV MOV OUT

DX,AL

;写入方式控制字

;计数器0,先读写低位,后读写高位, ;方式3,BCD码计数

;初值低8位

AL,37H

DX,P8254_T0 AL,20H

DX,AL

27

MOV OUT JMP

AL,00H BREAK

;初值高8位

DX,AL NEXT

NEXT: CALL ENDp

MY_PROC

实验心得:

通过这次微机系统实验,我更加深入地了解了汇编语言,在课本知识学习中,其实还是有不解和疑惑,但是经过实践,对汇编语言的了解就更深一步了。实践和理论的相结合,才是学习的最好办法。通过这次实验,我对汇编语言的编写更加熟练了,同时也掌握了8259,8255,8254等芯片的使用方法。在设计过程中出现错误时,一定要耐心,从现象判断错误是出现在程序设计上还是硬件连接上。可以用已经调试正确的程序去验证硬件连接是否正确。设计时要先从最近基本的功能着手,实现了以后再逐步加入其他功能,避免系统过于复杂造成检查错误时的困难。在整个实验的设计中,多亏了老师的耐心指导,使我掌握了出现错误时的应对方法,顺利地完成了实验。最后,对老师表示衷心的感谢!

28


西电微机原理实验报告(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:武汉大学党课结业考试历年真题集合版(附答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: