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

下载本文档

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

文档简介

1、1,5.4 可编程计数/定时器8253,5.4.1 8253的结构 5.4.2 8253的引脚功能 5.4.3 8253的控制字和初始化编程 5.4.4 8253的工作方式,2,获得定时信号可以用三种方法: 1.软件定时:执行延时子程序,节省硬件,CPU利用率低,设计较麻烦 2.不可编程的硬件定时:用元器件搭成的延时电路使用不灵活 3.可编程的硬件定时:专用芯片。计数或定时时,不占用CPU,大大提高CPU的利用率,3,可编程计数器/定时器的工作原理 可编程计数器/定时器具有两种功能: 1.计数器:设置好初值后,计数器被启动 ,每当计数脉冲到来,进行-1计数,当减到0时输出一信号。 2.定时器:

2、设置好定时常数后,定时器开始工作,在固定频率的时钟下,进行-1计数,按定时常数不断输出时钟周期整数倍的定时间隔。,4,两者的主要差别是: 作为计数器,在减到“0”之后输出一个信号,此次 计数过程便结束了; 作为定时器,在减到“0”之后输出一个信号,接着自动重装计数初值开始下一个周期的定时,如此连续不断地产生信号。 特点:基于计数器的减1操作。,5,典型的计数器/定时器的基本原理图,决定计数速率,门脉冲信号,对时钟的控制信号,当计数=0时,OUT输出信号,控制计数器/定时器的工作方式,6,计数器/定时器的工作方式是指时钟脉冲和门脉冲如何配合来产生输出。 有以下几种工作方式: (1) 门脉冲控制时

3、钟输入。 门脉冲有效,时钟有效; 门脉冲结束,时钟无效。 用门脉冲重新启动计数。 用门脉冲停止计数。 计数器在不停地计数,当门脉冲到来时,计数停止,并使OUT为高电平。,7, 单一计数。 与门脉冲无关,只要门脉冲为有效电平就可以。计数器按给定的初值进行减1计数,到0时,输出停止。 循环计数。 每当计数值=0时,给出一个输出信号,然后又从预置计数值寄存器获得计数初值,开始新的计数过程。,8,可编程定时/计数器8253的主要功能,每个芯片内部有3个独立的16位计数器通道。 每个计数通道都可以单独使用,都可按照二进制或BCD码计数。0000HFFFFH 216 65536 00009999 104

4、每个计数器的计数速率可高达2MHz,最高计数速率为2.6MHz。 每个计数器有6种工作方式,可由程序设置。 所有输入输出与TTL兼容。,9,5.4.1 8253的内部结构,三态、双向8位寄存器。功能: (1)CPU通过其向8253写入确定工作方式的命令字。 (2)向某个计数器写入计数初值。 (3)从某一计数器读取当前的计数初值。,初始化编程时,由CPU写入控制字,以决定计数器的工作方式。只能写,不能读。,用来对3个计数器和控制寄存器进行寻址,与CPU的系统地址线相连。 A1A0=00 选中计数器0 A1A0=01 选中计数器1 A1A0=10 选中计数器2 A1A0=11 选中控制字寄存器,计

5、数时钟,输入。用于输入定时脉冲或计数脉冲信号。,门控信号,输入,由外部信号通过GATE端控制计数器的启动计数和停止计数的操作。,时间到或计数结束输出引脚。当计数器计数到0时,在OUT引脚有输出。,每个计数器包含 (1)一个16位的初值寄存器 (2)一个16位计数执行部件 (3)一个16位输出锁存器,10,5.4.2 8253的外部引脚及功能,11,1. 数据总线缓冲器 8位、双向、三态的寄存器 功能: (1)CPU通过数据总线缓冲器向8253写入确定工作方式的命令字。 (2)向某个计数器写入计数初值。 (3)从某一计数器读取当前的计数初值。,12,2. 读写逻辑电路 CS:片选信号,输入,低电

6、平有效。 A1、A0:输入信号,用来对3个计数器和控制寄存器进行寻址,与CPU的系统地址线相连。 A1A0=00 选中计数器0 A1A0=01 选中计数器1 A1A0=02 选中计数器2 A1A0=03 选中控制字寄存器 WR:写引脚,输入,低电平有效。 RD:读引脚,输入,低电平有效,,13,3. 计数通道 3个相互独立的计数器0、计数器1和计数器2。 每个计数器包含 (1)一个16位的初值寄存器 (2)一个16位计数执行部件 (3)一个16位输出锁存器,14,CLK:计数时钟,输入。用于输入定时脉冲或计数脉冲信号。 GATE:门控信号,输入,由外部信号通过GATE端控制计数器的启动计数和停

7、止计数的操作。 OUT:时间到或计数结束输出引脚。当计数器计数到0时,在OUT引脚有输出。,15,计数器内部结构,16,计数器工作过程,17,计数器工作过程,18,计数器工作过程,19,计数器工作过程,20,计数器工作过程,21,计数器工作过程,22,1. 8253初始化的顺序 (1) 先将控制字写入控制寄存器中。 (2) 写入定时或计数的初值。 若规定只写入低8位,则写入的为计数值的低8位,高8位自动置0; 若规定只写入高8位,则写入的为计数值的高8位,低8位自动置0; 若是16位计数值,则分两次写入,先写入低8位,再写入高8位。,5.4.3 8253的控制字和初始化编程,23,编程命令分两

8、类: (1)读出命令读取计数器的当前值 (2)写入命令包括写入控制字,写入计数 初 值,写入锁存命令,24,读输出锁存器的顺序 (1) 输出锁存器锁存或停止计数以保存当前计数值。 读出当前的计数值有两种方法: 1)把当前计数值输出到 锁存器锁存 2)通过GATE门控信号发一低电平信号,使计数执行部件不作减1操作,计数过程停止。 (2) 从输出锁存器读数 注意:读8位和读16位的问题 若是读16位的数据,需分两次读出。先读低字节,再读高字节,即执行两次输入指令。,25,2. 控制字的格式,26,8253有6种工作方式,但总体说有两个功能。 1. 计数器方式 装入计数初值后,当GATE变为高电平或

9、给一触发脉冲时,可由外部事件进行减1计数,当=0时,OUT输出信号。CLK可以是连续的、均匀的、周期精确的,也可以不是。 2. 定时器方式 装入计数初值后,当GATE变为高电平时,由CLK脉冲触发定时器开始工作,定时器产生CLK时钟周期整数倍的定时时间间隔。CLK必须是连续的、周期精确的时钟脉冲。,5.4.4 8253的工作方式,27,(1) 控制字写入计数器时,所有的控制逻辑电路立即复位,OUT进入初始状态。 (2) 初始值写入初值寄存器后,要经过一个时钟周期才能将值送入减1计数器,减1计数器从下一个时钟开始进行计数。,6种工作方式遵守的基本原则:,5.4.4 8253的工作方式,28,(3

10、) 在时钟脉冲的下降沿计数器进行计数。 0是计数器所能容纳的最大初值 二进制中0相当于216 BCD码中0相当于104 (4) 在CLK的上升沿对GATE采样,各计数器的门控信号的触发方式与工作方式有关。 方式0、方式4,电平触发; 方式1、方式5,上升沿触发; 方式2、方式3,可用电平触发,也可上升沿触发,5.4.4 8253的工作方式,29,1. 方式0计数结束输出正跳变信号(产生中断) 1)门控信号GATE决定计数的停止或继续,高电平触发启动。 2)当写入控制字后,OUT变为低电平,一直保持低电平,到计数器=0,OUT变为高电平。 3)只计数一遍,不自动重复计数,装入初值决定计数过程重新

11、开始。,5.4.4 8253的工作方式,30,方式0计数结束产生中断,31,2. 方式1可重触发的单稳态触发器 该方式是在门控信号的作用下才开始计数。当CPU写入控制字后 ,输出端变为高电平,由门控信号GATE启动定时或计数(上升沿触发),然后使输出端变为低电平,开始-1计数,直到计数器归0,OUT又变为高电平。,5.4.4 8253的工作方式,32,方式1可重触发的单稳态触发器,计数过程中,GATE又来一正脉冲,计数初值将重新装入计数器,重新计数。,33,3. 方式2分频器 有“初值自动重装”功能,能输出固定频率的脉冲。 写入控制字后,OUT输出高电平,若GATE为高电平,在装入计数值n后开

12、始作减1计数,OUT保持高电平不变。当减到1时,OUT输出将变为低电平,持续一个时钟脉冲宽度后恢复为高电平,在计数值为0时,自动重新装入计数初值n,又开始重新计数过程。,5.4.4 8253的工作方式,34,GATE=1,允许计数;GATE=0,停止计数。 fout=fin/n n=finT T输出周期 方式2的输出是输入时钟按照N计数值分频后的一个连续的脉冲。即每N个时钟脉冲输出一个脉冲。,5.4.4 8253的工作方式,35,若在计数过程中GATE=0,则暂停计数,待GATE=1后,重新装入计数初值并开始计数。,若在计数过程中改变计数值,不影响当前的减1计数过程,而是在当前计数周期结束后才

13、开始按新的计数值计数。,36,4. 方式3方波发生器 有“初值自动重装”功能, 写入控制字后,OUT输出高电平,装入计数初值n后,OUT保持高电平。若GATE=1,则开始计数。 若n为偶数,每来一个CLK脉冲,计数值减2,减到0时,OUT改变极性,计数初值又被自动重新装入,继续计数过程。由此得到对称的方波,方波的周期为CLK周期的n倍。,5.4.4 8253的工作方式,37,若n为奇数,在装入初值后的第一个CLK脉冲减1,其后每个脉冲减2,减到0时,OUT变为低电平,计数初值又被自动重新装入,第一个CLK脉冲减3,其后每个脉冲减2,减到0时,OUT变为高电平。继续计数。 输出的高电平宽度为CL

14、K周期的(n+1)/2倍, 低电平宽度为CLK周期的(n-1)/2倍,5.4.4 8253的工作方式,38,39,新计数值不影响现行的计数过程。,5.4.4 8253的工作方式,40,5.4.4 8253的工作方式,例:要求计数器0工作于方式3,输出方波的频率为2KHz,计数脉冲的频率为2.5MHz,采用BCD计数,试写出初始化程序段。 8253的端口地址为:80H,81H,82H,83H。,初始化程序:MOV AL,37H OUT 83H,AL MOV AL,50H OUT 80H,AL MOV AL,12H OUT 80H,AL,n = 2.5MHz/2KHz=1250,41,5. 方式4

15、软件触发选通方式 GATE门控信号只是用来允许或不允许定时操作,定时的执行过程由装入的初值决定。方式设定后, OUT输出高电平,写入计数值n后,计数器开始减1计数,输出端一直保持为高电平,当计数到0后,OUT变低,经过一个时钟脉冲后,OUT又变高,计数停止。,5.4.4 8253的工作方式,42,GATE=1,允许计数;GATE=0,停止计数。,改变计数值,按新的计数值重新计数。,43,6. 方式5硬件触发选通方式 计数由外部上升沿触发。设定方式后,OUT输出高电平,在设置计数值后并不计数,而是等到GATE出现上升沿才开始计数,即靠硬件触发选通计数器。当计数到0时, OUT输出一个CLK周期的

16、低电平,然后恢复成高电平。下次计数要靠门控脉冲再次触发才能进行。 此方式计数器可重新触发,即在任何时刻,当GATE上升沿到来时,计数初值将重新装入,从头开始计数。,5.4.4 8253的工作方式,44,改变计数值,若没有GATE的触发,不影响计数过程。,45,8253小结:,输出端OUT的初始状态 只有方式0是在写入控制字后输出为低,其它均为高;,计数值的设置 任一种方式,只有在写入计数值后才能开始计数,方式0、2、3、4在写入计数值后,计数自动开始,方式1、5需外部触发,才开始计数。,46,门控信号的作用 GATE输入总是在CLK输入时钟的上升沿被采样。在方式0,2,3,4中,GATE输入是

17、电平起作用。在方式1,2,3,5中 GATE输入是上升沿起作用的。,计数到0后计数器的状态 计数器减到0后并不停止,在方式0,1,4,5,计数器减到0后从FFFF/9999继续计数。方式2,3是连续计数,计数器自动装入计数值后,继续计数。,初始化程序: 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,

18、126H。要求对计数器0进行初始化,使其工作在方式0,二进制计数,计数初值为6688H。,例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;写入工作方式控制字,49,MOV AL,73H;计数器1

19、,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; 写入计数值的低字节,50,MOV AL,40H;计数器高字节 OUT DX,AL;写入计数值高字节,MOV AL,0B4H;计数器2,二进制,方式2, 计数初值为0304H 写入16位

20、数, 10110100B MOV DX,04C6H;控制口地址 OUT DX,AL MOV AL,04H;计数值低字节 MOV DX,04C4H;设置计数器2地址 OUT DX,AL;写入计数值低字节 MOV AL,03H;计数值高字节 OUT DX,AL;写入计数值高字节,51,例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 ;读

21、计数器0的高8位数据 XCHG AL,AH,例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码),53,初始化程序: MOV AL,71H

22、;计数通道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,54,例5:使用8253计数器0,采用工作方式3,产生1kHz的方波脉冲信号;通过计数器1,采用工作方式4,用OUT1作计数脉冲,计满100次向CPU发一次中断申请,CPU响应这一中断后继续写入计数值100,重新开始计数;通过计数器2,采用工作方式0,每隔1秒钟向CPU发一次中断请求,使8个指示灯闪动。试编写程序,并画出硬件连接

23、图。(设8253芯片地址为04C0H、04C2H、04C4H、04C6H,8259芯片地址为04B0H,04B2H,IR0中断类型码为50H,74LS373芯片地址04A0H。),55,硬件连接图,56,分析: (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初始化,再对计

24、数器1和计数器2初始化,装入时间常数后立即执行。,57,(3) CLK2与OUT0连接在一起,输入时钟为1kHz,计数器2每隔1秒钟向CPU发一次中断请求。 n=1kHz 1s=1000 定时工作时间常数等于1000。,58,程序: 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灭,59,MOV DX,

25、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,MOV AX,OFFSET INTR1;取中断服务程序INTR1 偏移地址 MOV WO

26、RD 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,MOV DX,04C6H;设置8253控制口地址 MOV AL,01011000B;二进制数,方式4,写低字节, 计数器1计数 OUT DX,AL;将控制字写入计数器1的控制寄存器

27、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的控制寄存器,62,MOV DX,04C4H ;设置8253计数器2地址 MOV AL,00H ;写低字节 OUT DX,AL ;计数值低字节写入计数器2 MOV AL,10H ;写高字节 OUT DX,AL;计数值高字节写入计数器2 STI;开中断 AA:HLT ;等待中断 JMP

28、AA,63,INTR1 PROC FAR CLI ;禁止中断 MOV DX,04C2H;设置8253计数器1地址 MOV AL,64H;置新初值,启动工作 OUT DX,AL;计数值写入计数器1 IRET INTR1 ENDP,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 ;重新设标志

29、 AA3STI ;开中断 IRET INTR2 ENDP,65,例6:有一数据采集系统,时钟信号源为2MHZ,用8253定时,每隔2s由8259A的IR2产生中断,从8255A的A口采集一数据,采集的数据放在内存缓冲区BUF中。设8255A的端口地址为80H-86H, 8253的端口地址为0E0H-0E6H,8259A的中断类型码为08H-0FH, 端口地址为20H,21H。设计硬件连接图,对8255A和8253初始化并写出相关的主、子程序。(假设采集10个数据),66,将8255A端口A规划为工作方式0,输入方式,端口B规划为工作方式0,输出方式;控制字为98H。 因为2MHZ/0.5HZ=4000000,所以令8253的通道0工作于方式3,计数值为50000(C350H),通道1工作于方式2,计数值为80 DA

温馨提示

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

评论

0/150

提交评论