8253计数器实验

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

本科学生实验报告
5.实验设计思路、步骤及注意事项:
实验设计思路:本实验利用8253芯片工作在方式3下,作为一个秒信号
发生器,其输出带动一个发光二极管,在一个周期内,发光二极管点亮2秒,熄灭2秒,即OUT端输出方波信号,再把方波信号通过8255芯片;并设8255芯片的C口高四位输入,低4位输出,A口输出,之后产生八个方波信号,8255芯片的输出口PA0~PA7接LED灯;用LED灯的亮暗来表示字符‘A’到‘Z’的ASCII码;并编写ASM程序来控制8253芯片和8255芯片的工作方式;
实验步骤:
1.根据实验流程图的要求,按照实验原理图接好电路;
2.打开电源开关,用TPC-USB集成开发软件检查硬件是否连接;
3.对ASM程序进行调试,正确之后运行ASM程序,观察实验箱上LED灯
的亮暗;
4.记录实验现象,对实验现象进行分析总结;
5.完成实验报告;
注意事项:
1.在打开电源开关之前应检查电路是否连接正确,以免损坏实验器件;
2. 仔细观察实验现象,LED灯是否达到了用来显示字符‘A’到‘Z’的
ASCII码的实验目的;
二、实验内容
1.对实验现象、实验结果的分析及其结论:
LED灯的亮暗显示了字符‘H’的ASCII码值
LED灯的亮暗显示了字符‘I’的ASCII码值
LED灯的亮暗显示了字符‘Q’的ASCII码值
实验结果的分析及其结论:通过本实验加深了对8253芯片和8255芯片的各种工作方式的了解;
8255芯片有3种工作方式,这3种工作方式如表1所示。

方式0为基本I/O 输入/输出方式,这是8255最常用,也是最基本的工作方式。

方式1为应答I/O 方式,当8255工作于应答I/O方式时,上C口作为A口的通信线,下C口作为B口的通信线。

方式2为双向应答I/O方式,此方式仅A口使用,B口无双向I/O应答方式。

8255的3种工作方式的选择由8255工作方式选择字决定,下面介绍8255的工作方式选择字。

表1 8255的工作方式:
8255芯片初始化:所谓8255芯片初始化,就是要根据工作要求确定8255工作方式选择字,并输入8255控制寄存器。

a.工作方式选择字:
8255芯片工作方式选择字共8位,如图三所示,存放在8255控制寄存器中。

最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7 = 0表示控制寄存器中存放的是C口置位/复位控制字。

D3~D6用于A组的控制,D6D5 = 00表示A组工作于基本I/O方式0,D6D5 = 01表示A组工作于应答I/O方式1,D6D5 = 1x表示A组工作于双向应答I/O方式2(x取0或1)。

D4 = 1表示A口工作于输入方式,D4 = 0表示A口工作于输出方式,D3 = 1表示上C口工作于输入方式,D3 = 0表示上C口工作于输出方式。

图五工作方式选择字
D0~D2用于B组的控制,各位含义如图3所示。

D2 = 0表示B组工作于基本I/O方式0,D2 = 1表示B组工作于应答I/O方式1。

D1 = 1表示B口工作于输入方式,D1 = 0表示B口工作于输出方式,D0 = 1表示下C口工作于输入方式,D0 = 0表示下C口工作于输出方式。

工作方式字应输入控制寄存器,
按上面的连接方式,控制寄存器的地址为E003H。

b. C口置/复位控制字: 8255的C口可进行位操作,即可对8255C口的每一位进行置位或清0操作,该操作是通过设置C口置/复位字实现的。

C口置/复位字共8位,各位含义如图四所示;
图六C口置/复位控制字
由于8255芯片的工作方式选择字与C口置/复位字共用一个控制寄存器,故特别设置D7为标志位,D7=0表示控制字为C口置/复位字,D7 = 1表示控制字为8255芯片工作方式选择字。

D6D5D4不用,常取000。

D3D2D1为C口8个引脚PC0~PC7的选择位,D3D2D1 = 000选择PC0,D3D2D1 = 001选择PC1,……D3D2D1=111选择PC7。

D0为置位或清0选择位,D0 = 0表示由D3D2D1选择的位清0,D0 = 1表示由D3D2D1选择的位置1。

C口置/复位字必须输入8255控制寄存器。

8253芯片具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

一、8253内部结构:8253芯片有24条引脚,封装在双列直插式陶瓷管壳内;
1.数据总线缓冲器:数据总线缓冲器与系统总线连接,8位双向,与CPU 交换信息的通道。

这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路;
2.读/写控制:读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。

接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。

A1A0:端口选择信号,由CPU输入。

8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。

这4个端口地址由最低2位地址码A1A0来选择。

3.通道选择:(1) CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成;(2) RD#、WR#——读/写控制命令,由CPU 输入,低电平有效。

RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。

WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式
控制字写入控制字寄存器中。

4.计数通道0~2:每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。

8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。

采用二进制计数时,写入的初值范围为0000H~FFFFH,最大计数值是
0000H,代表65536。

采用BCD码计数时,写入的初值范围为0000~9999,最大计数值是0000,代表10000。

与此计数器相对应,每个通道内设有一个16位计数值锁存器。

必要时可用来锁存计数值。

当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。

OUT端将有输出。

表示计数次数到。

当某个通道用作定时器时。

由CLK输入一定频率的时钟脉冲。

根据要求定时的时间长短确定所需的计数值。

并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。

OUT将有输出,表示定时时间到。

允许从CLK输入的时钟频在1~2MHz范围内。

因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。

而后者是内时钟脉冲进行减“1”计数。

作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。

作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:
定时系数=需要定时的时间/时钟脉冲周期:
①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置
的通道及工作方式;
②计数/定时:向通道写入计数值,启动计数操作;
③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入
锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作;
④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号;计
数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中;
锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态;
5.方式选择控制字;
6.8253的通道工作方式:8253中各通道可有6种可供选择的工作方式,
以完成定时、计数或脉冲发生器等多种功能。

8253的各种工作方式如下:
1.方式0:计数结束则中断:工作方式0被称为计数结束中断方式,它
的定时波形如图六所示。

当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU 发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止;
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。

当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。

图七
显然,利用工作方式0既可完成计数功能,也可完成定时功能。

当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLKi端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变,表示计数次数到。

当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。

从CLKi,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数,定时时间从写入计数值开始,到计数值计到“0”为止,这时OUTi输出正跳变,表示定时时间到。

但要注意,任一通道工作在方式0情况下,计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。

2.方式1:单脉冲发生器:工作方式1被称作可编程单脉冲发生器,其定义波形如图七所示。

进入这种工作方式,CPU装入计数值n后OUTi输出高电平,不管此时的GATE输入是高电平还是低电平,都不开始减“1”
计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。

与此同时,OUTi输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”,OUTi输出由低电平向高电平跳变,形成输出单脉冲的后沿,因此,由方式l所能输出单脉冲的宽度为CLKi周期的n倍。

如果在减“1”计数过程中,GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数,其效果会使输出的单脉冲加宽;这种工作方式下,计数值也是一次有效,每输入一次计数值,只产生一个负极性单脉冲;
图八
3.方式2:速率波发生器:工作方式2被称作速率波发生器,其定时波形如图八所示。

进入这种工作方式,OUTi输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平不变;待计数值减到“1”和“0”之间,OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUTi将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLKi周期,重复周期为CLKi周期的n倍。

如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。

这样会改变输出脉冲的速率。

如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率;
图九
4.方式3:方波发生器:工作方式3被称作方波发生器,其定时波型如图九.所示。

任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波;进入工作方式3,OUTi输出低电平,装入
计数值后,OUTi立即跳变为高电平。

如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi 跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。

这时OUTi端输出的周期为n×CLKi周期,占空比为1:1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期;占空比为
((n+1)/2)/((n-1)/2)的近似方波序列。

如果在操作过程中,GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。

如果要求改变输出方波的速率,则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。

图十
5.方式4:软件触发方式计数:工作方式4被称作软件触发方式,其定时波形如图十所示。

进入工作方式4,OUTi输出高电平。

装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi 输出宽度为一个CLKi周期的负脉冲。

由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。

如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数;显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUTi输出负脉冲(表示定时时间到),其定时时间=n×CLK周期。

这种工作方式也可完成计数功能,它要求计数的事件以脉冲的方式从CLKi输入,将计数次数作为计数初值装入后,由CLKi端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由OUTt端输出负脉冲(表示计数次数到)。

当然也可利用OUTj向CFU发出中断请求。

因此工作方式4与工作方式0很相似,只是方式0在OUTi端输出正阶跃信号、方式4在OUTi端输出负脉冲信号。

图十一
6.方式5:硬件触发方式计数:工作方式5被称为硬件触发方式,其定时波形如图十一所示。

进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。

因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。

这种工作方式下,当计数值计到“0”后,系统将自动重新装入计数值n,但并不开始计数,一定要等到由GATE端引入的正跳沿,才会开始进行减“1”计数,因此这是一种完全由GATE 端引入的触发信号控制下的计数或定时功能。

如果由CLKi输入的是一定频率的时钟脉冲,那么可完成定时功能,定时时间从GATE上升沿开始,到OUTi 端输出负脉冲结束。

如果从CLKi端输入的是要求计数的事件,则可完成计数功能,计数过程从GATE上升沿开始,到OUTi输出负脉冲结束。

GATE可由外部电路或控制现场产生,故硬件触发方式由此而得名;如果需要改变计数初值,CPU可在任何时候用输出指令装入新的计数初值m,它将不影响正在进行的操作过程,而是到下一个计数操作周期才会按新的计数值进行操作;GATE作为各通道的门控信号,对于各种不同的工作方式,它所起的作用各不相同。

在8253的应用中,必须正确使用GATE信号,才能保证各通道的正常
操作;
图十二
7.读取计数器的当前值:
⑴直接读计数器:输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。

但由于计数器处于工作状态,读出值不一定能稳定;
⑵先锁存再读取:①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。

②读计数器通道(有锁存器);
11。

相关文档
最新文档