1 / 40

第九章 可编程接口与应用 —— 可编程定时 / 计数器 8253

第九章 可编程接口与应用 —— 可编程定时 / 计数器 8253. 主讲:刘英. 回顾:主要接口芯片. 简单的输入 / 输出接口芯片 如锁存器 74LS373 、单向缓冲器 74LS244 、双向缓冲器(数据收发器) 74LS245 等。 可编程接口芯片:其功能可以由软件来选用控制。 如并行输入输出接口 8255 、串行输入输出接口 8250/8251 、定时器 / 计数器 8253 、中断控制器 8259 、 DMA 控制器 8237 等。. 9.2 可编程定时 / 计数器 8253. 9.2 可编程定时 / 计数器 8253. 基本概念

kanoa
Download Presentation

第九章 可编程接口与应用 —— 可编程定时 / 计数器 8253

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 可编程接口与应用——可编程定时/计数器8253 主讲:刘英

  2. 回顾:主要接口芯片 • 简单的输入/输出接口芯片 • 如锁存器74LS373、单向缓冲器74LS244、双向缓冲器(数据收发器)74LS245等。 • 可编程接口芯片:其功能可以由软件来选用控制。 • 如并行输入输出接口8255、串行输入输出接口8250/8251 、定时器/计数器8253、中断控制器8259、DMA控制器8237等。

  3. 9.2 可编程定时/计数器8253 9.2 可编程定时/计数器8253 • 基本概念 • 定时/计数器芯片Intel8253

  4. 9.2.1 基本概念 1. 定时与计数 定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值也就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等)则此时即为计数。

  5. 9.2.1 基本概念 2. 定时与计数的实现方法 • 硬件方法:定时/计数器电路 • 利用脉冲计数在设定的时间输出定时信号 • 软件方法:用一段程序实现延时 • 利用程序循环延迟指定的时间 • 缺点:CPU占用率?延时精度?兼容? • 软、硬件结合法 • 即设计一种专门的具有可编程特性的芯片

  6. 9.2.1 基本概念 3. 定时/计数器的用途 • 可以实现定时与计数两个功能,可用于 • 系统时钟 • DRAM刷新定时 • 定时采样 • 在规定的时间对温度、压力、流量等参数进行采样 • 实时控制 • 对外部事件进行计数,按计数结果进行控制 • 脉冲的计数 • 。。。

  7. 9.2.2 定时/计数器芯片Intel8253 1. 8253的一般性能 • 每个8253芯片有3个独立的16位计数器通道; • 每个计数器通道都可以按照二进制或二-十进制(BCD码)计数; • 每个计数器的计数速度可以高达2MHz; • 每个通道有6种工作方式,可以由程序设定和改变; • 所有的输入、输出电平都与TTL兼容。

  8. 9.2.2 定时/计数器芯片Intel8253 编址部件0 编址部件1 编址部件3 编址部件2 2. 8253的内部结构

  9. 9.2.2 定时/计数器芯片Intel8253 • 数据总线缓冲器 • 实现8253与CPU数据总线连接的8位双向三态缓冲器 • 读/写控制逻辑 • 控制8253的片选及对内部相关寄存器的读/写操作 • 控制字寄存器 • 8位,在8253的初始化编程时,由CPU写入控制字 • 计数通道(3个) • 每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器。

  10. 9.2.2 定时/计数器芯片Intel8253 CLK0 GATE0 OUT0 DB D7-D0 通道0 A1 A0 A1 CLK1 GATE1 OUT1 A0 通道1 WR IOW IOR 片选信号 RD CLK1 GATE1 OUT1 CS 通道2 8253 3. 8253的外部引脚

  11. 9.2.2 定时/计数器芯片Intel8253 A1 A0 选 择 0 0 计数通道0 0 1 计数通道1 1 0 计数通道2 1 1 控制寄存器 (1)与CPU连接的引脚 • D7~D0:双向、三态数据线引脚,与系统的数据总线连接。 • RD#:来自于CPU的读控制信号输入引脚,低电平有效。 • WR#:来自于CPU的写控制信号输入引脚,低电平有效。 • CS#:芯片选择信号输入引脚,低电平有效。 • A1、A0:地址信号输入引脚,由8253片内译码,用以选择芯片的计数通道及控制字寄存器。

  12. 9.2.2 定时/计数器芯片Intel8253 (2)与外设连接的引脚 • CLKn:计数脉冲输入引脚,用来输入定时基准脉冲或计数脉冲。 • GATEn:门控信号输入引脚,用来控制计数器的启动或停止。 • OUTn:计数通道的定时/计数到信号输出引脚,不同工作方式下产生不同波形。 (n = 0~2)

  13. 9.2.2 定时/计数器芯片Intel8253 (3)定时/计数的工作过程 • 设置8253的工作方式 • 设置计数初值到初值寄存器 • 第一个CLK信号使初值寄存器的内容置入计数寄存器 • 以后每来一个CLK信号,计数寄存器减1 • 减到0时,OUT端输出一特殊波形的信号 注:以上计数过程中还受到GATE信号的控制

  14. 9.2.2 定时/计数器芯片Intel8253 D7 D6 D5 D4 D3 D2 D1 D0 计数器 读/写格式 工作方式 数制 4. 8253的控制字 1--计数值为BCD码格式 0--计数值为二进制格式 D3 D2 D1 模式选择 0 0 0 模式0 0 0 1 模式1 / 1 0 模式2 / 1 1 模式3 1 0 0 模式4 1 0 1 模式5 0 0----对计数器进行锁存 0 1----只读/写低8位字节 1 0----只读/写高8位字节 1 1----先读/写低8位字节, 再读/写高8位字节. 0 0----选计数器0 0 1----选计数器1 1 0----选计数器2 1 1----无意义

  15. 9.2.2 定时/计数器芯片Intel8253 (1)8253的初始化编程 • 初始化编程包括如下步骤: • 写入通道控制字,规定通道的工作方式。 • 写入计数值。若规定只写低8位,则高8位自动置0;若规定只写高8位,则低8位自动置0;若为16位计数值则分两次写入,先写低8位,后写高8位。

  16. 9.2.2 定时/计数器芯片Intel8253 【例1】 设8253的端口地址为:04H~07H,要使计数器1工作在方式0,仅用8位二进制计数,计数值为128,进行初始化编程。 控制字为:01010000B=50H 初始化程序: MOV AL,50H OUT 07H,AL ;将控制字写入控制字寄存器 MOV AL,80H OUT 05H,AL ;将计数值写入计数器1低8位

  17. 9.2.2 定时/计数器芯片Intel8253 【例2】 设8253的端口地址为:F8H~FBH,若用通道0工作在方式1,按二——十进制计数,计数值为5080H,进行初始化编程。 控制字为:00110011B=33H 初始化程序: MOV AL,33H OUT 0FBH,AL ;写控制字 MOV AL,80H OUT 0F8H,AL ;先写低8位 MOV AL,50H OUT 0F8H,AL ;再写高8位

  18. 9.2.2 定时/计数器芯片Intel8253 (2)读取8253通道中的计数值 • 8253可用控制命令来读取相应通道的计数值,由于计数值是16位的,而读取的瞬时值,要分两次读取,所以在读取计数值之前,要用锁存命令,将相应通道的计数值锁存在锁存器中,然后分两次读入,先读低字节,后读高字节。 • 当控制字中,D5、D4=00时,控制字的作用是将相应通道的计数值锁存的命令,锁存计数值在读取完成之后,自动解锁。

  19. 9.2.2 定时/计数器芯片Intel8253 【例3】如要读通道1的16位计数器,编程如下:地址F8H~FBH。 控制字为:01000000B=40H 读计数值程序: MOV AL,40H OUT 0FBH,AL ;锁存计数值 IN AL,0F9H MOV CL,AL ;读低8位 IN AL,0F9H MOV CH,AL ;读高8位

  20. 9.2.2 定时/计数器芯片Intel8253 5. 8253在系统中的典型连接 8253 8253占用4个接口地址: 计数器0 计数器1 计数器2 控制寄存器 DB D0~D7 IOW WR CLK 共三组 GATE IOR RD OUT A1 A1 A0 A0 高位地址 A15-A2 译码器 CS (决定8253的基地址)

  21. 9.2.2 定时/计数器芯片Intel8253 6. 8253的工作方式 • 8253有6种工作方式,各种方式下的工作状态不同,输出波形也不同。 • 几条基本原则 • 控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态。 • 计数初始值写入之后,要经过一个时钟周期上升沿和一个下降沿,计数执行部件才可以开始进行计数操作。 • 在每个时钟脉冲CLK的上升沿,采样门控信号GATE。 • 在时钟脉冲的下降沿,计数器作减1计数,0是计数器所能容纳的最大初始值。二进制相当于216(65536),用BCD码计数时,相当于104(10000)。

  22. 9.2.2 定时/计数器芯片Intel8253 (1)方式0——计数结束产生中断 • 结果特点:计数器减1为0时,OUT升高,向CPU发中断请求 • 过程特点 • 控制字写入:OUT=0。当控制字写入控制字寄存器后,输出端OUT变成低电平,并且在计数值减到0之前一直保持低电平 • 计数值写入:OUT不变,仍然为低电平(OUT=0)。 • 计数期间:OUT为低电平(OUT=0) • 计数为0时:OUT升高(OUT=1),向CPU发中断请求(如果使用中断的话)。直到CPU写入新的控制字或计数值时,才能使OUT=0 • 计数期间写入新的计数值:立即有效。如果计数值是一个字节,则在写入后的下一个时钟脉冲,新的计数值由CR送入CE,开始新的计数。如果计数值是两个字节,则写入第一个字节时,计数不受影响,写入第二个字节后的下一个时钟脉冲时,新的计数值由CR送CE,启动计数器按新的计数值开始计数。 • GATE作用:GATE=0时,禁止计数,计数器停止;GATE=1时,允许计数,此时计数器从刚才断的地方开始连续计数。 • 计数值有效期限:计数值一次有效

  23. 9.2.2 定时/计数器芯片Intel8253

  24. 9.2.2 定时/计数器芯片Intel8253 (2)方式1 ——单脉冲触发器 • 结果特点:输出单拍负脉冲,脉冲宽度可编程设定。 • 过程特点 • 控制字写入:OUT=1 • 计数值写入:OUT=1(不变) • 启动方式:GATE上跳沿。启动后的下一个CLK脉冲使OUT变低电平(OUT=0),即延迟一个时钟周期 • 计数期间:OUT为低电平(OUT=0) • 计数为0时,OUT变为高电平(OUT=1) • 计数期间写入新的计数值:不影响原计数,只有当下一个GATE上跳沿到来时,才使用新的计数值。 • GATE作用:GATE=0或GATE=1时,不影响计数,但若出现上跳沿则重新启动计数器,按最新计数初值开始计数。若在计数尚未结束时,就出现了上跳沿,则重新计数,因此,使输出负脉冲的宽度延长。这种方式常用于工业控制系统中的干扰自动复位电位。 • 计数值有效期限:计数值多次有效。计数初值写入CR后,在没有新的计数值写入CR之前,原计数初值在CR中保持不变,以后每触发一次,CR中保存的这个计数初值就装入CE一次。

  25. 9.2.2 定时/计数器芯片Intel8253

  26. 9.2.2 定时/计数器芯片Intel8253 (3)方式2 ——脉冲频率发生器(分频器) • 结果特点:产生连续的负脉冲信号,负脉冲宽度等于一个时钟周期。脉冲周期可由软件设定,脉冲周期=计数值×时钟周期 • 过程特点 • 控制字写入:OUT=1 • 计数值写入:OUT=1(不变) • 启动方式:两种。一是硬件启动:GATE上跳沿启动;二是软件启动:写入计数值启动(此时GATE=1) • 计数期间:OUT为高电平(OUT=1),但CE由1到0的计数中,OUT输出一个负脉冲,宽度为一个时钟周期 • 计数为0时,OUT为高电平(OUT=1),开始下一个周期的计数 • 计数期间写入新的计数值:影响随后的脉冲周期 • GATE作用:GATE=0时,OUT=1,停止计数; GATE=1时,不影响计数器工作; GATE上跳沿时,启动计数器,重新开始 • 计数值有效期限:计数值重复有效。在这种方式下,当计数器的值减到0时,CR的计数初值自动重新装入CE,实现循环计数

  27. 9.2.2 定时/计数器芯片Intel8253

  28. 9.2.2 定时/计数器芯片Intel8253 (4)方式3 ——方波发生器 • 结果特点:产生连续的方波。方波的重复周期=计数值×时钟周期 • 过程特点 • 控制字写入:OUT为高电平(OUT=1) • 计数值写入: OUT为高电平(OUT=1) • 启动方式:两种。一是硬件启动:GATE上跳沿启动;二是软件启动:写入计数值启动(此时GATE=1) • 计数期间:若计数值N为偶数,则在前N/2计数期间,OUT输出高电平(OUT=1),后N/2计数期间, OUT输出低电平(OUT=0);若计数值N为奇数,则在前(N+1)/2计数期间,OUT输出高电平(OUT=1),后(N-1)/2计数期间, OUT输出低电平(OUT=0); • 计数为0时,OUT输出高电平(OUT=1),从而完成一个周期。然后,CR值自动装入CE,开始下一个周期 • 计数期间写入新的计数值:不影响当前输出周期,影响下一个周期 • GATE作用:GATE=0时,OUT=1,停止计数; GATE=1时,不影响计数器工作; GATE上跳沿时,启动计数器,重新开始 • 计数值有效期限:计数值重复有效。

  29. 9.2.2 定时/计数器芯片Intel8253

  30. 9.2.2 定时/计数器芯片Intel8253 (5)方式4 ——软件触发的选通信号发生器 • 结果特点:计数器减为0时,输出一个时钟周期的负脉冲 • 过程特点 • 控制字写入:OUT为高电平(OUT=1) • 计数值写入: OUT为高电平(OUT=1) • 启动方式:写入计数值。写入计数值后,再过一个CLK时钟周期,减1计数器CE获得计数初值,开始减1计数 • 计数期间: OUT为高电平(OUT=1) • 计数为0时:计数器减到0后,输出一个负脉冲,宽度为1个时钟周期。然后又自动变为高电平,并一直维持高电平。通常将此负脉冲作为选通信号 • 计数期间写入新的计数值:立即有效(同方式0) • GATE作用:GATE=0时禁止计数;OUT=1时允许计数,此时计数器从暂停的地方开始继续计数。GATE信号不影响OUT的状态 • 计数值有效期限:计数值一次有效。只有在输入新的计数值后,才能开始新的计数过程

  31. 9.2.2 定时/计数器芯片Intel8253

  32. 9.2.2 定时/计数器芯片Intel8253 (6)方式5 ——硬件触发的选通信号发生器 • 结果特点:计数器减为0时,输出一个时钟周期的负脉冲 • 过程特点 • 控制字写入:OUT为高电平(OUT=1) • 计数值写入: OUT为高电平(OUT=1) • 启动方式:GATE上跳沿。当GATE端有上跳沿信号后,下一个CLK脉冲使CR的计数初值装入CE,从而开始计数过程 • 计数期间: OUT为高电平(OUT=1) • 计数为0时:计数器减到0后,输出一个负脉冲,宽度为1个时钟周期。然后又自动变为高电平 • 计数期间写入新的计数值:不影响本次计数,但影响GATE上跳沿启动后的计数过程。一但GATE重新启动,将按新的计数初值开始计数 • GATE作用:无论GATE=0还是GATE=1均不影响计数过程,而当GATE有上跳沿时将重新启动计数过程,按最新计数值开始计数 • 计数值有效期限:计数值多次有效。当计数器的计数值减到0后,将自动重新装入计数值(由CR装入CE),但并不开始计数,而是在GATE信号的上跳沿才开始计数

  33. 9.2.2 定时/计数器芯片Intel8253

  34. 9.2.2 定时/计数器芯片Intel8253 8253的工作方式小结(1) 方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲,但方式2连续工作,方式4由软件触发启动,方式5由硬件触发启动。(2) 方式5与方式1工作过程相同,但输出波形不同,方式1输出的是宽度为N个CLK脉冲的低电平有效的脉冲(计数过程中输出为低),而方式5输出的为宽度为一个CLK脉冲的负脉冲(计数过程中输出为高)。(3) 输出端OUT的初始状态,方式0在写入方式字后输出为低,其余方式,写入控制字后,输出均变为高。(4) 任一种方式,均是在写入计数初值之后,才能开始计数,方式0、2、3、4都是在写入计数初值之后,开始计数的,而方式1和方式5需要外部触发启动,才开始计数。

  35. 9.2.2 定时/计数器芯片Intel8253 8253的工作方式小结(续)(5) 6种工作方式中,只有方式2和方式3是连续计数,其它方式都是一次计数,要继续工作需要重新启动,方式0、4由软件启动,方式1、5由硬件启动。 (6) 门控信号的作用;通过门控信号GATE,可以干预8253某一通道的计数过程,在不同的工作方式下,门控信号起作用的方式也不一样,其中0、2、3、4是电平起作用,1、2、3、5是上升沿起作用,方式2、3对电平上升沿都可以起作用。 (7) 在计数过程中改变计数值,它们的作用有所不同。 (8) 计数到0后计数器的状态,方式0、1、4、5继续倒计数,变为FF、FE。。。。。。,而方式2、3、,则自动装入计数初值继续计数。

  36. 9.2.2 定时/计数器芯片Intel8253 【例4】设定时器0、定时器1工作于方式2,外部提供一个时钟,频率f=2MHZ。要求定时器1每5ms产生一个脉冲,定时器0每5s产生一个脉冲。 分析:时间常数的计算:已知时钟频率F及定时时间t,求计数初值N: 1) 一个定时器的最大定时时间: 65536/(2*106)=0.032768 s=32.768ms 提示:超过65536,必须考虑用两个通道级连,即将第一级的OUT输出作为第二级的CLK输入,取第二级的OUT输出为最后结果,超过二级,依次类推。

  37. 9.2.2 定时/计数器芯片Intel8253 2) 将定时器1的CLK1接2MHZ时钟,计数初值: 3) 将定时器1的OUT1端接到定时器0的CLK0端,定时器0的计数初值:

  38. 9.2.2 定时/计数器芯片Intel8253 8253 D7~D0 CPU AB 地址 译码 线路连接图: 两个定时器串连使用

  39. 9.2.2 定时/计数器芯片Intel8253 8253初始化程序: MOV AL, 00110100B ;0号定时器,方式2 OUT 43H, AL MOV AX, 1000 OUT 40H, AL MOV AL, AH OUT 40H, AL MOV AL, 01110100B ;1号定时器,方式2 OUT 43H, AL MOV AX, 10000 OUT 41H, AL MOV AL, AH OUT 41H, AL

  40. 习题 (1)I/O接口的主要功能有哪些?有哪两种编址方式?在8086/8088系统中采用哪一种编址方式? (2)试比较4种基本输入输出方法的特点。 (3)利用三态门芯片74LS244作为输入接口,接口地址为40FBH,试画出其与8086系统总线的连接图。 (4)若8253芯片的接口地址为D0D0H~D0D3H,时钟信号频率为2MHz。现利用计数器0、1、2分别产生周期为10us的对称方波及每1ms和1s产生一个负脉冲,试画出其与系统的电路连接图,并编写包括初始化在内的程序。 (5)某一计算机应用系统采用8253芯片的计数器0作频率发生器,输出频率为500Hz;用计数器1产生1000Hz的连续方波信号,输入8253的时钟频率为1.19MHz。试问:初始化时送到计数器0和计数器1的初值分别为多少?计数器1工作于什么方式下?

More Related