微机原理与接口技术-第8章2_第1页
微机原理与接口技术-第8章2_第2页
微机原理与接口技术-第8章2_第3页
微机原理与接口技术-第8章2_第4页
微机原理与接口技术-第8章2_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术第八章 part22第八章 可编程计数器/定时器8253及其应用内容提要8-1 8253工作原理内部结构与引脚信号初始化编程步骤和门控信号的功能8253的工作方式8-2 8253的应用举例定时功能计数功能38-2 8253的应用举例一、8253定时功能的应用例子1用8253产生各种定时波形在某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。要求3个计数通道分别完成以下功能: 通道0工作于方式3,输出频率为2kHz的方波; 通道1产生宽度为480us的单脉冲; 通道2用硬件方式触发,输出单脉冲,时间常数为26。OUT04

2、A9A8A7A6A5M/IOA4A3A0A2A1RDWRD7D08086CPU8-2 8253的应用举例1用8253产生各种定时波形74LS138CLK0CLK1CLK2GATE2OUT2RDWRD7 D01MHz方波5V2KHz方波480ms宽脉冲单脉冲G1G2AG2BCBAY4GATE0CS8253GATE1A1OUT1A058-2 8253的应用举例1用8253产生各种定时波形 8253片选信号CS由74LS138构成的地址译码电路产生,只有当M/IO0,A9A8A7A6A511000时,译码器才能工作,当A4A3A0100时,Y40,使8253的片选信号CS有效,选中偶地址端口,端口基

3、地址为310H。CPU的A2A1分别与8253的A1A0相连,用于8253芯片内部寻址,使8253的4个端口地址分别为310H、312H、314H和316H。8253的8根数据线D7D0必须与CPU的低8位数据总线D7D0相连。另外,8253的RD、WR脚分别与CPU的相应引脚相连。3个通道的CLK引脚连在一起,均由频率为1MHz(周期为1s)的时钟脉冲驱动。68-2 8253的应用举例1用8253产生各种定时波形 续 通道0:工作于方式3,即构成一个方波发生器,它的控制端GATE0须接+5V,为了输出2kHz的连续方波,应使时间常数:N01MHz2kHz500。 通道1:工作于方式1,即构成

4、一个单稳态电路,由GATE1的正跳变触发,输出一个宽度由时间常数决定的负脉冲。此功能一次有效,需要再形成一个脉冲时,不但GATE1脚上要有触发,通道也需重新初始化。需输出宽度为480us的单脉冲时,应取时间常数:N1480us1us480。 通道2:工作于方式5,即由GATE2的正跳变触发减1计数,在计到0时形成一个宽度与时钟周期相同的负脉冲。此后,若GATE2脚上再次出现正跳变,又能产生一个负脉冲。这里假设预置的时间常数为26。7MOVDX,316H;控制口地址MOVAL,00110111B ;通道0控制字,先读写低字节,;后高字节,方式3,BCD计数OUTMOVMOVOUTMOVOUTDX

5、,ALDX,310HAL,00HDX,ALAL,05HDX,AL;写入方式字;通道0口地址;低字节;先写入低字节;高字节;后写入高字节8-2 8253的应用举例对3个通道的初始化程序如下:;通道0初始化程序8MOVDX,316H;控制口地址MOVAL,01110011B ;通道1控制字,先读写低字节,;后高字节,方式1,BCD计数OUTMOVMOVOUTMOVOUTDX,ALDX,312HAL,80HDX,ALAL,04HDX,AL;写入方式字;通道1口地址;低字节;先写入低字节;高字节;后写入高字节8-2 8253的应用举例通道1初始化程序9MOVMOVOUTMOVMOVOUTDX,316H

6、AL,10011011BDX,ALDX,314HAL,26HDX,AL;控制口地址;通道2控制字,只读写低字节,;方式5,BCD计数;写入方式字;通道2口地址;低字节;只写入低字节8-2 8253的应用举例通道2初始化程序10用8253来控制一个LED发光二极管的点亮和熄灭,要求点亮10秒钟后再让它熄灭10秒钟,并重复上述过程。加上适当的驱动电路后,便可以用在交通红绿灯控制和灯塔等场合 。8-2 8253的应用举例2控制LED的点亮或熄灭D7 D0RDWR5V2MHz方波400HzGATE0GATE1CLK08253OUT0CLK1OUT1CSA1A0I/O译码A2A1M/IOA7A0D15

7、D8RDWR118-2 8253的应用举例2控制LED的点亮或熄灭 假设这是一个8086系统,8253的各端口地址为81H、83H、85H和87H。8253的8根数据线D7D0与CPU的高8位数据线D15D8相连,这样选中奇地址端口。 通道1的OUT1与LED相连,当它为高电平时,LED点亮,低电平时LED熄灭。只要对8253编程,使OUT1输出周期为20秒,占空比为1:1的方被,就能使LED交替地点亮和熄灭10秒钟。若将频率为2MHz(周期为0.5us)的时钟直接加到CLK1端,则OUT1输出的脉冲周期最大只有32.768ms,达不到20秒的要求。为此,需用几个通道级连的方案来解决问题。82

8、5312冲,其频率为2MHz/5000400Hz,周期为2.5ms。再把该信号连到CLK1输入端,并使通道1工作于方式3。为了使OUT1输出周期为20秒(频率为1/200.05Hz)的方波,应取时间常数N1400Hz/0.05Hz8000。8-2 8253的应用举例2控制LED的点亮或熄灭OUT1RDWRCS5V2MHz方波400HzI/O译码GATE0GATE1CLK0A1A0 OUT0D7 D0 CLK1A2A1RDWR 将频率为2MHz的时钟信号加在CLK0输入端,并让通 M/IO道0工作于方式2。若选择计数初值N05000,则从 A7A0OUT0端可得到序列负脉D15 D813MOVO

9、UTMOVOUTMOVOUTMOVOUTMOVOUTMOVOUTAL,00110101B87H,ALAL,00H81H,ALAL,50H81H,ALAL,01110111B87H,ALAL,00H83H,ALAL,80H83H,AL;通道0控制字,先读写低字节,;后高字节,方式2,BCD计数;写入方式字;低字节;先写入低字节;高字节;后写入高字节;通道1控制字,先读写低字节,;后高字节,方式3,BCD计数;写入方式字;低字节;先写入低字节;高字节;后写入高字节8-2 8253的应用举例初始化程序如下:148-2 8253的应用举例二、8253计数功能的应用例子假设一个自动化工厂需要统计在流水线

10、上所生产的某种产品的数量,可采用8086微处理器和8253等芯片来设计实现这种自动计数的系统。这种自动计数系统的电路和控制软件的设计如下:1硬件电路设计151硬件电路设计【说明】 这个自动计数系统由8086CPU控制,用8253作计数器。此外,还要用到一片8259A中断控制器芯片和若干其它电路。图中仅给出了计数器部分的电路图,8086和8259A未画在图上。 电路由一个红外LED发光管、一个复合型光电晶体管、两个施密持触发器74LS14及一片8253芯片等构成。用8253的通道1来进行计数。 工作过程如下:当LED发光管与光电管之间无工件通过时,LED发出的光能照到光电管上,使光电晶体管导通,

11、集电极变为低电平。此信号经施密持触发器驱动整形后,送到8253的CLK1,使8253的CLK1输入端也变成低电平。当LED与光电管之间有工件通过时,LED发出的光被它挡住,照不到光电管上,使光电管截止,其集电极输出高电平,从而使CLK1端也变成高电平。待工件通过后,CLK1端又回到低电平。8-2 8253的应用举例【计数功能】168-2 8253的应用举例【计数功能】1硬件电路设计 【说明】这样,每通过一个工件,就从CLK1端输入一个正脉冲,利用8253的计数功能对此脉冲计数,就可以统计出工件的个数来。两个施密持触发反相器74LS14的作用,是将光电晶体管集电极上的缓慢上升信号,变换成满足计数

12、电路要求的TTL电平信号。 8253的片选输入CS端接到I/O端口地址译码器的一个输出端,RD和WR端分别与CPU的RD和WR信号相连。8253的数据线D7D0与CPU的低8位地址线相连,这时I/O端口地址必须是偶地址,所以把A1和A0分别与CPU地址总线的A2和A1相连。8253通道1的门控输入端GATE1接+5V高电平,即始终允许计数器工作。通道1的输出端OUT1接到8259A的一个中断请求输入端IR0。172初始化编程 编程时,可选择计数器1工作于方式0,按BCD码计数,先读/写低字节,后读/写高字节,根据图9-3可得到控制字为01110001B。 如选取计数初值n499,则经过n+1个

13、脉冲,也就是500个脉冲OUT1端输出一个正跳变。它作用于8259A的IR0端,通过8259A的控制,向CPU发出一次中断请求,表示计满了500个数,在中断服务程序中使工件总数加上500。中断服务程序执行完后,返回主程序,这时需要由程序把计数初值499再次装入计数器1,才能继续进行计数。8-2 8253的应用举例【计数功能】182初始化编程设8253的4个端口地址分别为F0H,F2HF4H和F6H,则初始化程序为:MOVOUTMOVOUTMOVOUTAL,01110001B0F6H,ALAL,99H0F2H,ALAL,04H0F2H,AL;控制字;计数值低字节送计数器1;计数值低字节送计数器1

14、8-2 8253的应用举例【计数功能】193计数值的读取 (1)在读计数器现行值时,计数过程仍在进行,而且不受CPU的控制。因此,在CPU读取计数器的输出值时,可能计数器的输出正在发生改变,即数值不稳定,可能导致错误的读数。为了防止这种情况发生,必须在读数前设法终止计数或将计数器输出端的现行值锁存。可采用下面两种方法:方法一:在读数前用外部硬件切断计数脉冲信号,或者使门控信号变为低电平,迫使8253停止计数。这种方法的缺点是需要硬件电路配合。此外,由于外部事件源被切断或正常的计数过程被禁止,干扰了实际的计数过程。方法二:先用计数器锁存命令锁存现行计数值,然后将它读出。由于每个计数通道都有一个1

15、6位输出锁存器,可在任何时刻将计数器的现行值锁住。8-2 8253的应用举例【计数功能】203计数值的读取(2)当需要读取计数器的现行值时,先向8253送一个控制字,并使控制字中的RL1RL000,现行计数值立即被锁存起来。该控制字中的SC1SC0用来确定要锁存的是3个计数器中的哪一个。控制字的低4位对锁存命令无影响,可以将它们置为0。读取计数值的方法由对8253进行初始化编程时所写入的控制字中的RL1RL0位来确定,当RL1RL0=01时,只读取计数器的低字节,RL1RL010时,只读取计数器的高字节,RL1RL011时,先读写计数器低字节,后读写高字节。比较起来,第二种方法完全由软件实现,

16、并可随时读取计数值,而且不会干扰正常的计数过程和引起错误,是常用的方法。8-2 8253的应用举例【计数功能】213计数值的读取(3)上例中,在要读取箱子中的现行工件数时,可执行下面的程序段:MOVMOVOUTMOVINMOVAL,01000000BDX,0F6HDX,ALDX,0F2HAL,DXAH,AL;锁存计数器1命令;控制口;发锁存命令;计数器1;读取计数器1的低8位;保存低8位数INAL,DX;读取计数器1的低高位XCHG AH,AL;将计数值置于AX中8-2 8253的应用举例【计数功能】223计数值的读取(4)在计数器的锁存命令发出后,锁存的计数值将保持不变,直至被读出为止。计数

17、值从锁存器读出后,数值锁存状态即被自动解除,输出锁存器的值又将随计数器的值而变化。利用这种方法读取8253的计数器值时,每执行一次锁存命令,只能锁存一个通道的计数值。如果想读取8253的3个计数器的值,就要向8253送3个锁存命令字。同样,用这种方法也可以读取8254的内部计数器的数值。但对于8254来说,还有另外一种读回功能,一次可以锁存多个计数器的值,从而可连续读取13个计数器的值。8-2 8253的应用举例【计数功能】2348254的读回功能8254的读回命令功能,每次可锁存13个通道的计数值。此外,利用8254的读回功能,还可锁存13个计数通道的状态字,供CPU读取。通过读取状态字,可

18、以核对向8254写入的控制字是否正确,还能了解当前输出引脚的电平状态,以及计数值是否已写入执行单元等。8-2 8253的应用举例【计数功能】D71D61D5COUNTD4STATUSD3CNT2D2CNT1D1CNT0D00标志位1:选择计数器01:选择计数器11:选择计数器20:锁存所选计数器的状态0:锁存所选计数器的数值248-2 8253的应用举例48254的读回功能【计数功能】2548254的读回功能若D4位置0,将锁存计数器的状态信息。状态信息被锁存后,也可以由CPU用输入指令读回。用户通过读取状态信息,可核查所选中通道的计数值、工作方式、输出引脚OUT的现行状态及计数器是否已写入计数通道等信息。状态字的格式如图9-14所示。其中D5D0位即为写入该通道的控制字的相应部分,RW1RW0相当于8253的RL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论