您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 可编程接口芯片8254及应用
第7章可编程定时器/计数器芯片8254概述可编程计数器/定时器芯片82548254在PC机中的应用定时器和计数器概述定时控制在微机系统中极为重要[定时器]由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔。定时器强调的是精确的时间。定时举例:①一天24小时的计时,称为日时钟。②在监测系统中,对被测点的定时取样。③在读键盘时,为去抖,一般延迟一段时间,再读。④在微机控制系统中,控制某工序定时启动。[计数电路]如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器。计数举例:①对零件和产品的计数;②对大桥和高速公路上车流量的统计。定时功能的实现方法软件延时——是利用CPU每执行一条指令都需要几个固定的指令周期的原理,运用软件编程的方式进行定时。利用微处理器执行一个延时程序段实现。不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路7.28253/8254定时计数器3个独立的16位计数器通道每个计数器有6种工作方式,按二进制或十进制(BCD码)计数每个计数器在开始工作前必须预制时间常数每个计数器在工作过程中的当前计数值可被CPU读出。(注:时间常数也可在计数过程中更改)8254是8253的改进型8253/8254的内部结构和引脚D7~D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2计数器结构示意图预置寄存器GATECLKOUT减1计数器输出锁存器计数初值存于预置寄存器;在计数过程中,减1计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值1计数器的3个引脚CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号2与处理器接口D0~D7数据线A0~A1地址线RD读信号WR写信号CS片选信号由控制字格式中SC1,SC0位决定属于哪个计数器选中控制寄存器10110读输出锁存器OL当前值01对计数器寄存器CR送初值选中计数器2#10010读输出锁存器OL当前值01对计数器寄存器CR送初值选中计数器1#10100读输出锁存器OL当前值01对计数器寄存器CR送初值选中计数器0#10000功能A0A1CSWRRD8254的工作方式8254有6种工作方式,由方式控制字确定熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式不同工作方式的区分点:输出波形计数过程中门控信号的影响启动触发方式每种工作方式的过程类似:⑴设定工作方式⑵设定计数初值〔⑶硬件启动〕⑷计数初值进入减1计数器⑸每输入一个时钟计数器减1的计数过程⑹计数过程结束方式0计数结束中断(一次有效)写入控制字之后,相应的输出信号OUT就开始变成低电平。计数器写完计数值时,开始计数。当计数器减到零时,OUT立即输出高电平。①②⑤④⑥GATEOUTCLK031244方式0WR①设定工作方式②设定计数初值④计数值送入计数器⑤计数过程⑥计数结束方式0门控信号GATE位高电平时,计数器工作;为低电平时,计数器停止工作,计数值保持不变。在计数器工作期间,如果重新写入新的计数值,计数器将按新写入的计数值重新工作。8254的方式0时序波形n=5CLKOUTWR①543210n=5WRGATEOUT②54321044WROUT③n=998n=443210方式1可编程单稳脉冲写入计数初值后,计数器并不立即开始工作;等待到GATE上升沿,才开始工作,使输出OUT变成低电平;直到计数器值减到零后,输出才变高电平。计数到0,初值自动重置,但要等到下一个GATE上升沿触发才重新计数。[单稳态触发器]只有一个稳态(高电平),一个触发脉冲使触发器进入暂稳态(低电平),经过一段可调的时间间隔后,又回到稳态。所以工作于方式1时相当于一个可重复触发的单稳态触发器。①②⑤④⑥①设定工作方式②设定计数初值③③硬件启动④计数值送入计数器⑤计数过程⑥计数结束GATEOUTCLK031244方式1WR方式1在计数器工作期间,当GATE又出现一个上升沿时,计数器重新装入原计数初值并重新开始计数。如果工作期间对计数器写入新的计数初值,则要等到当前的计数值计满回零且门控信号再次出现上升沿后,才按新写入的计数初值开始工作。8254的1方式时序波形OUT②4321GATE40n=4CLKGATEWROUT①43210n=3WR③n=2OUT3210210GATE方式2频率发生器(分频器)写入控制字之后,输出端OUT变为高电平。计数器写完计数值时,开始计数。当计数器减到1时,OUT变为低电平。完成一次计数过程,输出端OUT又变为高电平,开始一个新的计数过程,周而复始。对于计数初值N,输出端OUT输出的信号的周期是计数值N×时钟CLK的周期T,N-1个时钟周期为高,1个时钟周期为低,为负脉冲。输出负脉冲的周期为时钟周期的N倍,频率是1/N,称为分频器,可以用来给自动控制中的实时检测,实时控制提供时钟信号。WRCLKGATEOUTCWn=3重新记数321321重新记数方式3方波发生器与2方式基本相同,也具有自动装入时间常数(计数初值)的功能,不同之处在于:工作在3方式,引脚OUT输出的不是一个时钟周期的负脉冲,而是占空比为1:1或近似1:1的方波;当计数初值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平。由于3方式输出的波形是方波,并且具有自动重装计数初值的功能,因此,8254一旦计数开始,就会在输出端OUT输出连续不断的方波。3124GATEOUTCLK4方式3312431243124WR方式3当计数值为奇数时,在前(N+1)/2计数期间,OUT输出高电平,而后(N-1)/2个计数期间,OUT输出为低电平。54321543CWn=5WRCLKGATEOUT方式4软件触发选通信号控制字写入8254后,计数器输出OUT为高电平在写入计数初值后,而且GATE为高电平时,开始计数,计数到0后输出一个时钟周期的低电平脉冲。门控信号GATE=1时允许计数,GATE=0禁止计数。软件触发选通体现在当GATE为高电平时,写入计数初值后开始计数。D0--D7STB锁存器8254OUTCPU送数据同时输出一数据选通信号,锁存数据。方式4可编程控制选通信号发出时间。GATEOUTCLK31244方式4223331WR方式4和方式2的区别:(1)方式2的负脉冲是在计数到1时产生一个T的负脉冲,而方式4是在计数到0时产生一个T的负脉冲。(2)在计数过程中,写入新的初值时,方式2是从下一次开始从新的初值计数,而方式4是从下一个脉冲就开始以新的值计数,因为方式4不能重复计数。方式5硬件触发选通信号工作特点是由GATE上升沿触发计数器开始工作。当写入计数初值后,计数器并不立即开始计数,而要由门控信号的上升沿启动计数。在计数过程中(或者计数结束后),如果门控再次出现上升沿,计数器将从原装入的计数初值重新计数。硬件触发选通:GATE信号一般由硬件产生。GATEOUTCLK31244方式52233311WR计数开始的时刻需要注意•当控制字写入8254时,所有的控制逻辑电路自动复位,这时输出端OUT进入初始状态。•处理器写入8254的计数初值只是写入了预置寄存器,要到时钟下降沿,减法计数器才开始工作。•方式0、方式4——GATE信号为电平触发方式1、方式5——GATE信号为上升沿触发方式2、方式3——两种皆可7.38254的编程8254加电后的工作方式不确定8254必须初始化编程,才能正常工作写入方式控制字写入计数初值读取计数值8254新增读回命令1方式控制字(A1A0=11)计数器读写格式工作方式BCDD7D6D5D4D3D2D1D000计数器001计数器110计数器211非法00计数器锁存命令01只读写低字节10只读写高字节11先读写低字节后读写高字节000方式0001方式1X10方式2X11方式3100方式4101方式50二进制1BCD码示例2写入计数值计数值写入计数器各自的I/O地址示例选择二进制时计数值范围:0000H~FFFFH0000H是最大值,代表65536选择十进制(BCD码)计数值范围:0000~99990000代表最大值100003读取计数值8位数据线,读取16位计数值需分两次计数在不断进行,应该将当前计数值先行锁存,然后读取:向控制字I/O地址:给8254写入锁存命令从计数器I/O地址:读取锁存的计数值读取计数值,要注意读写格式和计数数制7.48254在PC机上的应用A0A1———A0—A1—D0~D7D0~D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2DQCLK+5V接至DMA控制器接至扬声器驱动器PB0PB1IRQ0DRQ08254+5V1.19318MHzDACK0BRDIORIOWRDWRCST/CCS定时中断和定时刷新将计数器1作为定时刷新看如何编写初始化程序段从阅读初始化程序段看计数器0作为定时中断的作用8254初始化(定时中断)moval,00110110B;计数器0为方式3,采用二进制计数,;先低后高写入计数值out43h,al;写入方式控制字moval,0;计数值为0out40h,al;写入低字节计数值out40h,al;写入高字节计数值计数器0:定时中断计数器0:方式3,计数值:65536,输出频率为1.19318MHz÷65536=18.206Hz的方波门控为常启状态,这个方波信号不断产生OUT0端接8259的IRQ0,用作中断请求信号每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能计数器1:定时刷新门控总为高,选择方式2或32ms内刷新128次,即15.6s刷新一次计数初值为18需要重复不断提出刷新请求8254初始化(定时刷新)moval,01010100B;计数器1为方式2,;采用二进制计数,只写低8位计数值out43h,al;写入方式控制字moval,18;计数初值为18out41h,al;写入计数值扬声器控制计数器2的输出控制扬声器的发声音调计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声扬声器还受控于并行接口(8255芯片)必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音扬声器控制(频率设置)speakerprocpushaxmoval,10110110B;0b6hout43h,al;写入控制字popaxout42h,al;写入低8位计数值moval,ahout42h,al;写入高8位计数值retspeakerendp扬声器控制(扬声器开)speakonprocpushaxinal,61horal,03h;D1D0=PB1PB0=11B,其他位不变out61h,alpopaxretspeakonendp扬声器控制(扬声器关)speakoffprocpushaxinal,61handal,0fch;D1D0=PB1PB0=00B,其他位不变out61h,alpopaxretspeakoffendp扬声器控制(主程序);数据段freqdw1193180/600;代码段movax,freqcallspeaker;设置扬声器音调callspeakon;打
本文标题:可编程接口芯片8254及应用
链接地址:https://www.777doc.com/doc-3263656 .html