微机接口 8253.8254

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第5章定时与计数技术5.1概述5.2可编程控制定时/计数器82545.38254在微机中的应用25.1概述5.1.1定时与计数‡定时和计数功能是计算机系统中必不可少的。─在多任务分时系统中作为中断信号,实现程序切换;─向I/O设备输出精确的定时信号;─作为可编程的波特率发生器;─实现时间延迟。3‡计数:设定好初值,对输入脉冲信号进行减1计数,减到0,输出一个有效信号。‡定时:按照设定好的初值,对输入脉冲信号进行减1计数减到0后,自动重新开始计数,从而周期性地输出脉冲信号。‡定时与计数在本质一样,不过定时计的数是时间单位。定时时间=计数初值x时钟周期‡常用的可编程定时/计数器芯片有:Z80系列的CTC、Intel系列的8253、8254等。45.1.2定时方法及原理1.实现定时的三种方法:‡软件定时:利用CPU每执行一条指令都需要几个指令周期的原理,运用软件延迟的方式进行定时。特点:无需硬件,简单、灵活,但定时精度不高,降低CPU效率。‡不可编程硬件定时:利用专门的定时电路(如RC单稳电路、计数电路)实现定时。特点:精度高,但不灵活、定时时间和范围不能改变。‡可编程硬件定时:利用软件硬件结合方法,对通用的计数器件进行编程设置后,由可编程器件实现精确定时。特点:定时时间精确,方便灵活,使用广泛。例如8253/8254芯片。52.可编程计数器/定时器工作原理CLKGATEOUT时钟由设备来往设备去数据RESETREADYRDWR译码CSA0A1地址图5-1可编程计数器/定时器的典型结构框图控制寄存器计数初值寄存器状态寄存器计数器输出锁存器中断请求锁存器6‡工作过程:─将计数初值预置到计数初始值寄存器。(由CPU通过读写逻辑和数据线预置)─将计数初值传送至计数器。─计数脉冲经CLK输入端输入后,在GATE控制下对计数器进行减法计数。计数器当前内容随时传送到输出锁存器,以供CPU读取,不影响计数过程。─计数值为0时(即1次计数结束),OUT引脚和状态寄存器的某1位状态发生变化,该变化可通过查询方式读取(或作为1个8259A的中断请求,定时触发1个中断)。75.2可编程定时器/计数器82545.2.18254的基本功能5.2.28254的内部结构和外部引脚5.2.38254的工作方式5.2.48254的控制字5.2.58254的编程85.2.18254的基本功能‡有3个独立的16位计数器(0#、1#、2#);‡每个计数器16b,可以按二进制方式或十进制(压缩BCD码)方式计数;‡每个计数器可编程工作于6种不同工作方式;‡8254-2每个计数器允许的最高计数频率为10MHz;‡8254有读回命令(8253没有),可以读出当前计数单元的内容和状态寄存器的内容。95.2.28254的内部结构和外部引脚1.内部结构图5-28254的内部结构框图控制字寄存器D7-D0数据总线缓冲器计数器0号CLK0GATE0OUT0计数器1号CLK1GATE1OUT1计数器2号CLK2GATE2OUT2CS读/写逻辑RDWRA0A1内部数据总线10‡数据总线缓冲器─三态、双向8位寄存器,用于将8254与系统总线相联。─CPU向8254写入控制命令以确定8254的工作方式;─CPU向8254计数寄存器装入计数值;─CPU从8254读出计数值。‡控制寄存器─8位寄存器,8254初始化编程时,用于存放由CPU写入的控制字,以决定各个计数器的工作方式。─该寄存器只能写入,不能读出。11表5-18254内部寄存器读/写操作‡读/写控制逻辑对8254进行读/写控制(8254共4个端口,分别对应于计数器0、1、2和控制寄存器)A1A0操作01000计数初值写入计数器0#01001计数初值写入计数器1#01010计数初值写入计数器2#01011向控制寄存器写入控制字00100读0#计数器当前计数值00101读1#计数器当前计数值00110读2#计数器当前计数值WRRDCS12‡计数器0、1、23个计数器完全独立,结构和功能相同,每个计数器包含:─1个计数初值寄存器:(1)作用:存放计数初值;16位寄存器;(2)其计数初值和计数器工作单元的初始值在初始化时同时装入,但初值计数器内值在计数过程中保持不变,为自动重装提供计数初值,以便重复计数。计数结束后重新装入计数初值13(3)计数初值:A.由编程人员对8254进行初始化时写入;B.表示方式:二进制;十进制(压缩BCD码)C.范围:用二进制表示时,范围为:1~216;用十进制表示时,范围为:1~104注意:初值寄存器中“0”表示最大计数初值(216或104)D.计算:E.计数初值写入次数:由于数据引脚只有8根(D7~D0),因而,当计数初值8bit(255或99),则要分两次写入初值寄存器。fCLKfOUTTOUTTCLK计数初值==1Tf=14例如:CLK=100KHz,要求产生10ms的时钟,则计数初值=(100×103)/(1/(10×10-3))=1000─1个计数器工作单元:(1)16位。其初值与计数初值寄存器一致。(2)用于计数。每来1个时钟脉冲,自动减1,直至减为0;若要连续计数可重装入计数初值,或采用自动重装方式。(3)不能直接读/写。可通过输出锁存器读出。CLKiOUTiTOUTiTCLKi说明:TCLKi=1/ƒCLKiTOUTi=1/ƒOUTi15─1个输出锁存器:(1)16位。与计数器工作单元的值一致;可分2次读出。(2)用于锁存计数器工作单元内容,以供读出或查询。(3)计数过程中,随计数工作单元的变化而变化,CPU读时,其值由于锁存而保持不变,读出后又随计数器工作单元而变化。─1个状态寄存器:(1)保存当前控制字寄存器内容、输出状态以及计数初值是否已装入计数器工作单元的指示状态。(2)CPU不能对其进行读/写,可通过状态锁存器来读取162.外部引脚124223322421520619718817916101511141213D7D6D5D4D3D2D1D0CKL0OUT0GATE0GND+5VWRRDCSA1A0CLK2OUT2GATE2CLK1GATE1OUT1图5-38254外部引脚图175.2.38254的工作方式(6种)0.82546种不同的工作方式遵守的基本规则:1)控制字写入8254时,8254内所有的控制逻辑电路立即复位,输出端OUT进入初始态。2)计数器的最大初始值为0:用二进制格式计数时,0相当于216;用BCD码格式时,0相当于104。3)通常,在CLK的上升沿,门控GATE信号被采样。计数触发启动可以是GATE的电平,也可以是上升沿(由具体工作方式而定)184)8254计数器的启动:软件触发:直接用程序指令启动,硬件触发:由GATE信号启动。‡软件触发:GATE为高电平时,用输出指令(即OUT指令)向计数器赋予初值后,经过一个时钟的上升沿和一个下降沿,计数器开始工作。时钟脉冲的下降沿使初值寄存器的内容送入计数器。写初值N写CWCLKGATE(允许计数高电平)WROUTN开始计数软件触发19‡硬件触发:写入计数初值后,并不立即启动,要等到GATE信号从低变高(上升沿),再经过CLK信号的上升沿采样,在随后的下降沿开始计数。‡GATE信号:对软件触发:计数过程中GATE信号变低时,暂停计数,再变高后,继续原来的计数。对硬件触发:计数过程中GATE信号变低时,不停止计数,再变高后,重新开始计数。开始计数写初值N写CWCLKGATEWROUTN(上升沿)硬件触发201.方式0:计数结束中断(软件启动)‡在GATE为高电平时,写入控制字后,OUT变为低电平。写入计数器初值,开始计数,直到计数到达0时,输出端OUT变成高电平。‡计数到0,不开始重新计数,OUT输出保持为高。‡计数过程中,若GATE信号由高电平变为低电平,则暂停计数,直到GATE信号变高电平时再继续计数。计数暂停时,OUT引脚仍为低电平。‡在计数过程中,若写入新的计数初值,则写完计数初值后,OUT输出变低,在下一个CLK脉冲计数器按新的计数值开始新的计数。21图5-4方式0的时序波形CLKGATE0允许计数(高电平)WR(N=5)OUT0开始计数543210计数结束0计数结束OUT’0禁止计数5444暂停计数GATE’0继续计数321222.方式1:可重触发的单稳触发器(硬件触发)‡单稳态触发器概念─输入一个窄脉冲,输出由RC放电整型后形成一定宽度的脉冲‡可重触发的单稳触发器─在输出脉冲未结束时,又有新的输入脉冲到来,则从新的时刻开始,重新输出一个新的脉冲。输入输出RC输入输出RC重新开始单稳态触发器可重触发的单稳触发器23‡8254的可重触发单稳(数字单稳)─向8254写入控制字之后,OUT将保持为高电平。─写入计数值后,要等到外部GATE起动之后,下一个CLK脉冲的下降沿开始计数,输出OUT变低。─OUT波形:在整个计数过程中,OUT维持低电平,直到计数到0,OUT变为高,输出一个单稳脉冲。若初始计数值为N,则输出单稳脉冲的宽度为N个CLK时钟周期。24─当计数到零后,只要再次由外部触发脉冲启动,8254可以再输出一个同样的单稳脉冲。─在计数未减至0时,又产生GATE触发脉冲,则计数器将重新开始计数,使输出的单稳脉冲加宽。─在计数过程中改变计数初值,计数过程不受影响。只有再次触发启动,才按新值输出新的单稳脉冲。25图5-5方式1的时序波形CLKGATE1WR(N=5)开始计数0计数结束OUT’1重新开始计数54321OUT1543210计数结束GATE’1不停计数543263.方式2:分频器(软件/硬件触发,定时)‡输出控制字后,输出OUT变高。在GATE=1时,写入计数值后开始计数。当计数到1时,OUT输出一个CLK宽的低脉冲,计数器并开始重新计数(自动重装)。软‡OUT波形:如果计数值为N,则前N-1个输出为高脉冲,最后1个输出为低脉冲。‡计数过程受GATE控制。计数过程中,当GATE=0时,暂停计数。GATE=1后的下一个CLK脉冲使计数器按计数初值重新开始计数。硬‡计数过程中改变计数初值,改变的计数初值是在下次计数周期有效。硬‡计数器具有“初值自动重装”功能。27图5-6方式2的时序波形CLKGATE2允许计数(高电平)WR(N=5)GATE’2禁止计数开始计数OUT254321计数至10(5)自动重复计数0(5)4321计数至0(自动重复计数)计数至1重新开始计数OUT’254543210(5)4计数至1计数至0(自动重复计数)284.方式3:方波发生器(软件/硬件触发,定时)‡OUT波形:输出周期为N个CLK脉冲的方波。‡写入计数值后就自动开始计数,输出保持为高。当计数到计数值的一半时,输出变为低,直到计数到0,输出又变高,重新从初始计数值开始计数(自动重装)。软‡若计数值N为偶数:输出N/2的对称方波。‡若计数值为奇数:则前(N+1)/2个CLK周期为高,后(N-1)/2个CLK周期为低,输出波形不对称。‡GATE=1允许计数;GATE=0禁止计数;GATE上升沿,计数器将重新装入初始值,重新开始计数。硬‡计数期间写入新计数初值,不影响计数过程,新计数初值将在现行半周期结束时装入计数器。29图5-7方式3的时序波形CLKGATE3允许计数(高电平)WR(N=5)开始计数OUT3(N=奇数)543210(5)4321自动重复计数自动重复计数OUT3(N=偶数)43210(4)3210(4)32305.方式4:软件触发选通(软件触发)‡写入控制字后,OUT输出高电平。在GATE为高电平时,写入计数值后,开始减1计数。‡当计数到0后,OUT输出一个CLK时钟宽的低脉冲,停止计数。计数方式是一次性的(非自动重装)。‡OUT波形:如果计数初值为N,则前N个CLK时钟脉冲输出高电平,随后输出一个CLK的低电平。‡GATE为高电平时允许计数,为低电平时暂停计数。当GATE再次变为高电平,计数器从停止处继续计数,GATE信号不影响输出。31图5-8方式4的时序波形CLKGATE4允许计数(高电平)开始计数WR(

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功