接口PPT课件第5章接口技术(8253).ppt_第1页
接口PPT课件第5章接口技术(8253).ppt_第2页
接口PPT课件第5章接口技术(8253).ppt_第3页
接口PPT课件第5章接口技术(8253).ppt_第4页
接口PPT课件第5章接口技术(8253).ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

5.4 可编程计数/定时器8253 5.4.1 8253的结构 5.4.2 8253的引脚功能 5.4.3 8253的控制字和初始化编程 5.4.4 8253的工作方式 1 获得定时信号可以用三种方法: 1.软件定时:执行延时子程序,节省硬件,CPU利 用率低,设计较麻烦 2.不可编程的硬件定时:用元器件搭成的延时电路 使用不灵活 3.可编程的硬件定时:专用芯片。计数或定时时, 不占用CPU,大大提高CPU的利用率 2 可编程计数器/定时器的工作原理 可编程计数器/定时器具有两种功能: 1.计数器:设置好初值后,计数器被启动 ,每当计数 脉冲到来,进行-1计数,当减到0时输出一信号。 2.定时器:设置好定时常数后,定时器开始工作,在 固定频率的时钟下,进行-1计数,按定时常数不断输 出时钟周期整数倍的定时间隔。 3 两者的主要差别是: 作为计数器,在减到“0”之后输出一个信号,此次 计数过程便结束了; 作为定时器,在减到“0”之后输出一个信号,接着 自动重装计数初值开始下一个周期的定时,如此连 续不断地产生信号。 特点:基于计数器的减1操作。 4 典型的计数器/定时器的基本原理图 决定计数速率 门脉冲信号,对时 钟的控制信号 当计数=0时, OUT输出信号 控制计数器/定时器的 工作方式 5 计数器/定时器的工作方式是指时钟脉冲和门脉冲如 何配合来产生输出。 有以下几种工作方式: (1) 门脉冲控制时钟输入。 门脉冲有效,时钟有效; 门脉冲结束,时钟无效 。 用门脉冲重新启动计数。 用门脉冲停止计数。 计数器在不停地计数,当门脉冲到来时,计数停止 ,并使OUT为高电平。 6 单一计数。 与门脉冲无关,只要门脉冲为有效电平就可以 。计数器按给定的初值进行减1计数,到0时,输出 停止。 循环计数。 每当计数值=0时,给出一个输出信号,然后又 从预置计数值寄存器获得计数初值,开始新的计数 过程。 7 可编程定时/计数器8253的主要功能 l 每个芯片内部有3个独立的16位计数器通道。 l 每个计数通道都可以单独使用,都可按照二进制 或BCD码计数。0000HFFFFH 216 65536 00009999 104 l 每个计数器的计数速率可高达2MHz,最高计数速 率为2.6MHz。 l 每个计数器有6种工作方式,可由程序设置。 l 所有输入输出与TTL兼容。 8 5.4.1 8253的内部结构 三态、双向8位寄存器。功能: (1)CPU通过其向8253写入确定工作方式的命令字。 (2)向某个计数器写入计数初值。 (3)从某一计数器读取当前的计数初值。 初始化编程时,由CPU写入控制字 ,以决定计数器的工作方式。只能 写,不能读。 用来对3个计数器和控制寄存器进行 寻址,与CPU的系统地址线相连。 A1A0=00 选中计数器0 A1A0=01 选中计数器1 A1A0=10 选中计数器2 A1A0=11 选中控制字寄存器 计数时钟,输入。用于输入定 时脉冲或计数脉冲信号。 门控信号,输入,由外部信号通过 GATE端控制计数器的启动计数和停止 计数的操作。 时间到或计数结束输出引脚 。当计数器计数到0时,在 OUT引脚有输出。 每个计数器包含 (1)一个16位的初值寄存器 (2)一个16位计数执行部件 (3)一个16位输出锁存器 9 5.4.2 8253的外部引脚及功能 10 1. 数据总线缓冲器 8位、双向、三态的寄存器 功能: (1)CPU通过数据总线缓冲器向8253写入确定 工作方式的命令字。 (2)向某个计数器写入计数初值。 (3)从某一计数器读取当前的计数初值。 11 2. 读写逻辑电路 CS:片选信号,输入,低电平有效。 A1、A0:输入信号,用来对3个计数器和控制寄存器 进行寻址,与CPU的系统地址线相连。 A1A0=00 选中计数器0 A1A0=01 选中计数器1 A1A0=02 选中计数器2 A1A0=03 选中控制字寄存器 WR:写引脚,输入,低电平有效。 RD:读引脚,输入,低电平有效, 12 3. 计数通道 3个相互独立的计数器0、计数器1和计数器2。 每个计数器包含 (1)一个16位的初值寄存器 (2)一个16位计数执行部件 (3)一个16位输出锁存器 13 CLK:计数时钟,输入。用于输入定时脉冲或计数 脉冲信号。 GATE:门控信号,输入,由外部信号通过GATE端 控制计数器的启动计数和停止计数的操作。 OUT:时间到或计数结束输出引脚。当计数器计数 到0时,在OUT引脚有输出。 14 计数初值寄存器CR 用OUT指令设置。 计数器执行部件SR 是实际的减法计数 器,起始值就是计数 初值 输出锁存器OL 用IN指令对它进行 读操作,可了解计数 器瞬时值。 内部总线 CLK 计数器内部结构 15 1.先用OUT给计数初 值寄存器CR赋初值, 若初值是8位二进制 数,需写一次,若是 16位,分两次写 高8位低8位内部总线 CLK 计数器工作过程 16 高8位 高8位 低8位 低8位 1.先用OUT给计数初 值寄存器CR赋初值 ,若初值是8位二进 制数,需写一次, 若是16位,分两次 写 2. 计数初值装入减 法计数器SR,在 GATE允许计数下, SR进行减1操作。 内部总线 CLK 计数器工作过程 17 1.先用OUT给计数初值 寄存器CR赋初值,若 初值是8位二进制数 ,需写一次,若是16 位,分两次写 2. 计数初值装入减法 计数器SR,在GATE允 许计数下,SR进行减 一操作。 3. SR不断减1计数, 每输入一个时钟脉冲 减1。SR的值送输出 锁存器OL中,OL的值 随SR而变。 内部总线 CLK 高8位 高8位 低8位 低8位 计数器工作过程 18 高8位低8位 2. 计数初值装入减法 计数器SR,在GATE允 许计数下,SR进行减 一操作。 3. SR不断减1计数, 每输入一个时钟脉冲 减1。SR的值送输出 锁存器OL中,OL的值 随SR而变。 4. 若在计数过程中发 锁存命令,则SR仍进 行减1计数,而OL的 值锁住不变。 内部总线 CLK 计数器工作过程 19 3. SR不断减1计数, 每输入一个时钟脉冲 减1。SR的值送输出 锁存器OL中,OL的值 随SR而变。 4. 若在计数过程中发 锁存命令,则SR仍进 行减1计数,而OL的 值锁住不变。 5. 用IN读取锁存器的 值后,OL又随SR而变 。8位二进制数一次 读入,16位两次读入 。 高8位 高8位 低8位 低8位 内部总线 CLK 计数器工作过程 20 4.若在计数过程中发 锁存命令,则SR仍进 行减1计数,而OL的 值锁住不变。 5.用IN读取锁存器的 值后,OL又随SR而变 。8位二进制数一次 读入,16位两次读入 。 6.SR减为0后,进行结 束处理。有些方式结 束计数,有些方式连 续计数。 内部总线 CLK 计数器工作过程 21 1. 8253初始化的顺序 (1) 先将控制字写入控制寄存器中。 (2) 写入定时或计数的初值。 l 若规定只写入低8位,则写入的为计数值的低8位,高 8位自动置0; l 若规定只写入高8位,则写入的为计数值的高8位,低 8位自动置0; l 若是16位计数值,则分两次写入,先写入低8位,再 写入高8位。 5.4.3 8253的控制字和初始化编程 22 编程命令分两类: (1)读出命令读取计数器的当前值 (2)写入命令包括写入控制字,写入计数 初 值,写入锁存命令 23 读输出锁存器的顺序 (1) 输出锁存器锁存或停止计数以保存当前计数值。 读出当前的计数值有两种方法: 1)把当前计数值输出到 锁存器锁存 2)通过GATE门控信号发一低电平信号,使计数执行 部件不作减1操作,计数过程停止。 (2) 从输出锁存器读数 注意:读8位和读16位的问题 若是读16位的数据,需分两次读出。先读低字节 ,再读高字节,即执行两次输入指令。 24 2. 控制字的格式 方式0 方式1 方式2 方式3 方式4 方式5 工作方式选择 25 8253有6种工作方式,但总体说有两个功能。 1. 计数器方式 装入计数初值后,当GATE变为高电平或给一触发 脉冲时,可由外部事件进行减1计数,当=0时,OUT输 出信号。CLK可以是连续的、均匀的、周期精确的, 也可以不是。 2. 定时器方式 装入计数初值后,当GATE变为高电平时,由CLK 脉冲触发定时器开始工作,定时器产生CLK时钟周期 整数倍的定时时间间隔。CLK必须是连续的、周期精 确的时钟脉冲。 5.4.4 8253的工作方式 26 (1) 控制字写入计数器时,所有的控制逻辑电路立即 复位,OUT进入初始状态。 (2) 初始值写入初值寄存器后,要经过一个时钟周期 才能将值送入减1计数器,减1计数器从下一个时钟 开始进行计数。 6种工作方式遵守的基本原则: 5.4.4 8253的工作方式 27 (3) 在时钟脉冲的下降沿计数器进行计数。 0是计数器所能容纳的最大初值 二进制中0相当于216 BCD码中0相当于104 (4) 在CLK的上升沿对GATE采样,各计数器的门控信 号的触发方式与工作方式有关。 方式0、方式4,电平触发; 方式1、方式5,上升沿触发; 方式2、方式3,可用电平触发,也可上升沿触发 5.4.4 8253的工作方式 28 1. 方式0计数结束输出正跳变信号(产生中断 ) 1)门控信号GATE决定计数的停止或继续,高电 平触发启动。 2)当写入控制字后,OUT变为低电平,一直保持 低电平,到计数器=0,OUT变为高电平。 3)只计数一遍,不自动重复计数,装入初值决定 计数过程重新开始。 5.4.4 8253的工作方式 29 方式0计数结束产生中断 30 2. 方式1可重触发的单稳态触发器 该方式是在门控信号的作用下才开始计数。当 CPU写入控制字后 ,输出端变为高电平,由门控信 号GATE启动定时或计数(上升沿触发),然后使输 出端变为低电平,开始-1计数,直到计数器归0, OUT又变为高电平。 5.4.4 8253的工作方式 31 方式1可重触发的单稳态触发器 计数过程中,GATE又来一正脉 冲,计数初值将重新装入计数器 ,重新计数。 32 3. 方式2分频器 有“初值自动重装”功能,能输出固定频率的脉冲 。 写入控制字后,OUT输出高电平,若GATE为高 电平,在装入计数值n后开始作减1计数,OUT保持 高电平不变。当减到1时,OUT输出将变为低电平, 持续一个时钟脉冲宽度后恢复为高电平,在计数值为 0时,自动重新装入计数初值n,又开始重新计数过 程。 5.4.4 8253的工作方式 33 GATE=1,允许计数;GATE=0,停止计数。 fout=fin/n n=finT T输出周期 方式2的输出是输入时钟按照N计数值分频后的一个 连续的脉冲。即每N个时钟脉冲输出一个脉冲。 5.4.4 8253的工作方式 34 若在计数过程中GATE=0,则暂 停计数,待GATE=1后,重新装 入计数初值并开始计数。 若在计数过程中改变计数值,不 影响当前的减1计数过程,而是 在当前计数周期结束后才开始按 新的计数值计数。 35 4. 方式3方波发生器 有“初值自动重装”功能, 写入控制字后,OUT输 出高电平,装入计数初值n后,OUT保持高电平。若 GATE=1,则开始计数。 若n为偶数,每来一个CLK脉冲,计数值减2,减 到0时,OUT改变极性,计数初值又被自动重新装入 ,继续计数过程。由此得到对称的方波,方波的周期 为CLK周期的n倍。 5.4.4 8253的工作方式 36 若n为奇数,在装入初值后的第一个CLK脉冲减1, 其后每个脉冲减2,减到0时,OUT变为低电平,计数 初值又被自动重新装入,第一个CLK脉冲减3,其后每 个脉冲减2,减到0时,OUT变为高电平。继续计数。 输出的高电平宽度为CLK周期的(n+1)/2倍, 低电平宽度为CLK周期的(n-1)/2倍 5.4.4 8253的工作方式 37 2422422444 4225225455 38 2422422424 42 242 5 5 新计数值不影响 现行的计数过程 。 5.4.4 8253的工作方式 39 5.4.4 8253的工作方式 例:要求计数器0工作于方式3,输出方波的频率为2KHz, 计数脉冲的频率为2.5MHz,采用BCD计数,试写出初始化 程序段。 8253的端口地址为:80H,81H,82H,83H。 000111118253的方式控制字为: 初始化程序:MOV AL,37H OUT 83H,AL MOV AL,50H OUT 80H,AL MOV AL,12H OUT 80H,AL n = 2.5MHz/2KHz=1250 40 5. 方式4软件触发选通方式 GATE门控信号只是用来允许或不允许定时操作 ,定时的执行过程由装入的初值决定。方式设定后, OUT输出高电平,写入计数值n后,计数器开始减1 计数,输出端一直保持为高电平,当计数到0后, OUT变低,经过一个时钟脉冲后,OUT又变高,计 数停止。 5.4.4 8253的工作方式 41 2 GATE=1,允许计数; GATE=0,停止计数。 改变计数值,按新的 计数值重新计数。 42 6. 方式5硬件触发选通方式 计数由外部上升沿触发。设定方式后,OUT输出高电平 ,在设置计数值后并不计数,而是等到GATE出现上升沿 才开始计数,即靠硬件触发选通计数器。当计数到0时, OUT输出一个CLK周期的低电平,然后恢复成高电平。 下次计数要靠门控脉冲再次触发才能进行。 此方式计数器可重新触发,即在任何时刻,当GATE 上升沿到来时,计数初值将重新装入,从头开始计数。 5.4.4 8253的工作方式 43 改变计数值,若没有GATE的 触发,不影响计数过程。 44 8253小结: l 输出端OUT的初始状态 只有方式0是在写入控制字后输出为低,其它均 为高; l 计数值的设置 任一种方式,只有在写入计数值后才能开始计数 ,方式0、2、3、4在写入计数值后,计数自动开始 ,方式1、5需外部触发,才开始计数。 45 l 门控信号的作用 GATE输入总是在CLK输入时钟的上升沿被采样。 在方式0,2,3,4中,GATE输入是电平起作用。在 方式1,2,3,5中 GATE输入是上升沿起作用的。 l计数到0后计数器的状态 计数器减到0后并不停止,在方式0,1,4,5,计 数器减到0后从FFFF/9999继续计数。方式2,3是连续 计数,计数器自动装入计数值后,继续计数。 46 初始化程序: MOV AL,30H ;控制字送AL MOV DX,126H OUT DX,AL MOV AL,88H MOV DX,120H OUT DX,AL ;向计数器0写入计数初值的低8位 MOV AL,66H OUT DX,AL ;向计数器0写入计数初值的高8位 例1:设在8086系统中有一片8253,其端口地址分别 为:120H,122H,124H,126H。要求对计数器0进 行初始化,使其工作在方式0,二进制计数,计数初 值为6688H。 47 例2:假设8253的计数器0工作在方式5,按二进制计数 ,计数初值为46H;计数器1工作在方式1,按BCD码 计数,计数初值为4000,计数器2工作在方式2,按二 进制计数,计数初值为0304H。请将以上三种情况的 初始化程序写出。8253芯片占用地址04C0H、04C2H 、04C4H、04C6H。 程序: MOV AL,1AH;计数器0,二进制,方式5, 写低字节 00011010B MOV DX,04C6H;设置8253控制口地址 OUT DX,AL;写入工作方式控制字 48 MOV AL,73H;计数器1 ,BCD数,方式1, 计数初值为4000 写16位数 01110011B MOV DX,04C6H; 设置8253控制器地址 OUT DX,AL; 写入工作方式控制字 MOV AL,00H; 计数值低字节 MOV DX,04C2H; 设置8253计数器1地址 OUT DX,AL; 写入计数值低字节 MOV AL,46H; 计数值的低字节 MOV DX,04C0H; 设置8253计数器0地址 OUT DX,AL; 写入计数值的低字节 49 MOV AL,40H;计数器高字节 OUT DX,AL;写入计数值高字节 MOV AL,0B4H;计数器2,二进制,方式2, 计数初值为0304H 写入16位数, 10110100B MOV DX,04C6H;控制口地址 OUT DX,AL MOV AL,04H;计数值低字节 MOV DX,04C4H;设置计数器2地址 OUT DX,AL;写入计数值低字节 MOV AL,03H;计数值高字节 OUT DX,AL;写入计数值高字节 50 例3:设8253的四个端口地址分别为0E0H,0E2H ,0E4H,0E6H,现将计数器0的16位计数值读出 并存入AX中。 程序如下: MOV AL,00H;计数器0的锁存命令写入8253 OUT 0E6H,AL;的控制口 IN AL,0E0H; 读计数器0的低8位数据 MOV AH,AL; IN AL,0E0H ;读计数器0的高8位数据 XCHG AL,AH 51 例4:某8086系统中有一片8253芯片,利用计数通 道1完成对外部事件计数,计数满250次向CPU发出 中断申请;利用计数通道2输出频率为1KHz方波, 试编写8253的初始化程序。(图P148) 8253端口地址为18H1EH 分析:计数通道1:方式0 控制字 01110001=71H 计数值 250H (250次,BCD码) 计数通道2:输出频率为1KHz方波,方式3 控制字 10110111=0B7H n=finTout =fin/ fout =2MHz/1KHz=2000 计数值 2000H (BCD码) 52 初始化程序: MOV AL,71H;计数通道1 OUT 1EH,AL MOV AL,50H OUT 1AH,AL MOV AL,02H OUT 1AH,AL MOV AL,0B7H;计数通道2 OUT 1EH,AL MOV AL,00H OUT 1CH,AL MOV AL,20H OUT 1CH,AL 53 例5:使用8253计数器0,采用工作方式3,产生1kHz 的方波脉冲信号;通过计数器1,采用工作方式4,用 OUT1作计数脉冲,计满100次向CPU发一次中断申请 ,CPU响应这一中断后继续写入计数值100,重新开 始计数;通过计数器2,采用工作方式0,每隔1秒钟 向CPU发一次中断请求,使8个指示灯闪动。试编写 程序,并画出硬件连接图。(设8253芯片地址为04C0H 、04C2H、04C4H、04C6H,8259芯片地址为04B0H ,04B2H,IR0中断类型码为50H,74LS373芯片地址 04A0H。) 54 硬件连接图 55 分析: (1)由于CLK0=2.5MHz,T=0.4s,由计数器0产生的 1kHz的方波信号,T=1ms,所以初值为2500,即 09C4H。 fout=fin/n n=finT T输出周期 n=fin / fout =2.5MHz/ 1kHz=2500 (2) 因为计数器1和计数器2分别工作在方式4和方式0 ,当GATE=1时,依靠计数初值启动定时或计数 ,因而初始化时要先对8259A初始化,再对计数 器1和计数器2初始化,装入时间常数后立即执行 。 56 (3) CLK2与OUT0连接在一起,输入时钟为1kHz, 计数器2每隔1秒钟向CPU发一次中断请求。 n=1kHz 1s=1000 定时工作时间常数等于1000。 57 程序: START CLI MOV DX,04C6H ;设置8253控制口地址 MOV AL,00110110B OUT DX,AL MOV DX,04C0H MOV AX,09C4H;计数器0的初值09C4H OUT DX,AL MOV AL,AH OUT DX,AL;写入初值高8位 MOV BL,00H;灯亮或灭的标志 BL=00亮 BL=01灭 58 MOV DX,04B0H; 8259A的偶地址 MOV AL,00010011B;设置8259初始化控制字ICW1 OUT DX,AL; 写入ICW1 MOV DX,04B2H; 8259A的奇地址 MOV AL,50H; 设置8259A初始化控制字ICW2 OUT DX,AL; 写入ICW2 MOV AL,00001101B; 设置8259A初始化控制字ICW4 OUT DX,AL; 写入ICW4 MOV AL,0FCH; 设置IR0、IR1不可屏蔽,8259A 操作控制字OCW1 OUT DX,AL; 写入OCW1 59 MOV AX,OFFSET INTR1;取中断服务程序INTR1 偏移地址 MOV WORD PTR 140H,AX;中断向量表地址为 50H4 MOV AX,SEG INTR1;取中断服务程序INTR1的 段地址 MOV WORD PTR 142H,AX MOV AX,OFFSET INTR2;取中断服务程序INTR2 偏移地址 MOV WORD PTR 144H,AX;中断向量表地址为 51H4 MOV AX,SEG INTR2;设置INTR2所在段地址 MOV WORD PTR 146H,AX 60 MOV DX,04C6H;设置8253控制口地址 MOV AL,01011000B;二进制数,方式4,写低字节, 计数器1计数 OUT DX,AL;将控制字写入计数器1的控制寄存器 MOV DX,04C2H ;设置8253计数器1地址 MOV AL,64H;设置计数初值100 OUT DX,AL;计数初值写入8253计数器1 MOV DX,04C6H;设置8253控制口地址 MOV AL,10110001B;BCD数,方式0,写16位数, 计数器2定时 OUT DX,AL;控制字写入计数器2的控制寄存器 61 MOV DX,04C4H ;设置8253计数器2地址 MOV AL,00H ;写低字节 OUT DX,AL ;计数值低字节写入计数器2 MOV AL,10H ;写高字节 OUT DX,AL;计数值高字节写入计数器2 STI;开中断 AA:HLT ;等待中断 JMP AA 62 INTR1 PROC FAR CLI ;禁止中断 MOV DX,04C2H;设置8253计数器1地址 MOV AL,64H;置新初值,启动工作 OUT DX,AL;计数值写入计数器1 IRET INTR1 ENDP 63 INTR2 PROC FAR CLI ;禁止中断 MOV DX,04A0H ;74LS373的地址 CMP BL,00H ;灯闪烁判断BL=00灯 亮 JZ AA2 ; MOV AL,00H ;BL=01灯灭 OUT DX,AL MOV BL,00H ;重新设标志 JMP AA3 AA2MOV AL,0FFH ;灯亮 OUT DX,AL MOV BL,01H ;重新设标志 AA3STI ;开中断 IRET INTR2 ENDP 64 例6:有一数据采集系统,时钟信号源为2MHZ,用 8253定时,每隔2s由8259A的IR2产生中断,从8255A 的A口采集一数据,采集的数据放在内存缓冲区BUF 中。设8255A的端口地址为80H-86H, 8253的端口地址 为0E0H-0E6H,8259A的中断类型码为08H-0FH, 端口 地址为20H,21H。设计硬件连接图,对8255A和8253 初始化并写出相关的主、子程序。(假设采集10个数 据) 65 66 将8255A端口A规划为工作方式0,输入方式,

温馨提示

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

评论

0/150

提交评论