第八章可编程计数器定时器及其应用优秀文档_第1页
第八章可编程计数器定时器及其应用优秀文档_第2页
第八章可编程计数器定时器及其应用优秀文档_第3页
第八章可编程计数器定时器及其应用优秀文档_第4页
第八章可编程计数器定时器及其应用优秀文档_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第八章可编程定时/计数器8253实现定时或延时控制有三种方法:软件定时:即让CPU执行一段不完成任何其他功能的程序段,由于执行每条指令都需要时间,则执行一个程序段就需要一定的时间,通过改变指令执行的循环次数来控制定时时间不可编程硬件定时器:采用中小规模器件,外接定时元件——电阻和电容构成。可编程硬件定时器:就是其工作方式、定时值和定时范围可以很容易由软件来确定和改变。计数器一旦开始工作后,CPU就可以去做别的工作了,等计数器计到预定时间,便自动形成一个输出信号,用来向CPU提出中断请求。这种方法不但显著提高了CPU的利用率,而且定时时间由软件设置,使用十分灵活,加上定时时间精确,使用十分广泛。可编程定时器/计数器8253一、8253的内部结构和功能二、8253的引脚功能三、8253的工作方式四、8253应用举例8253可编程定时器/计数器的主要性能:有3个独立的16位计数器工作方式可编程控制计数脉冲频率0~2MHz可以按二进制或BCD码计数使用单一+5V电源012一、8253的内部结构和功能在初始化编程时用于寄存在CPU写入的控制字以决定各通道的工作方式。此寄存器只能写入不能读出。当用8253作外部事件计数器时,在CLK脚上所加的计数脉冲是由外部事件产生的,这些脉冲的间隔可以是不相等的。如果用它作定时器,则CLK引脚上应数入精确的时钟脉冲,这时8253所能实现的定时时间=计数脉冲周期×预置的计数初值读写逻辑接收来自系统总线的控制信号,以产生控制整个器件工作的控制信号。这个八位的三态、双向缓冲器用于将8253与系统总线相连,接收CPU输出的方式控制字或计数初值,发送CPU从计数器读出的计数值。二、8253的引脚功能D7~D0:双向三态数据线,CPU用输入、输出指令对8253进行读/写操作的信息都经8位数据总线传送。CLK0~CLK2:计数输入,要求加在CLK引脚的时钟脉冲频率不大于2MHz。GATE0~GATE2:门控输入,当GATE引脚为低时,禁止计数器工作;只有GATE引脚为高时,才允许计数器工作OUT0~OUT2:计数器0~2的输出,其输出波形取决于工作方式A1、A0:寻址3个计数器和控制寄存器(三个计数器的控制寄存器共用一个端口地址)RD、WR和CS:分别为读、写和片选信号,均为低电平有效A1A0寄存器选择及其操作01000对计数器0置计数初值01001对计数器1置计数初值01010对计数器2置计数初值01011对控制寄存器设置控制字00100从计数器0读出计数值00101从计数器1读出计数值00110从计数器2读出计数值00111无操作(D7~D0三态)1禁止(D7~D0三态)011无操作(D7~D0三态)RDWRCS8253的端口选择三、8253的工作方式1、控制字寄存器2、工作方式方式0——计数结束中断方式方式1——可重复触发的单稳态触发器方式2——频率发生器(n分频器)方式3——方波发生器方式4——软件触发的选通信号发生器方式5——硬件触发的选通信号发生器1.8253控制字寄存器D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCDBCD=1时,采用BCD码计数,写入计数器的初值用BCD码表示,初值范围为0000~9999H,其中0000表示最大值10000,即104。如预制初值n=1200H时,表示一个十进制数1200。BCD=0时,采用BCD码计数,写入计数器的初值用二进制数表示,初值范围为0000~FFFFH,其中0000表示最大值65536,即216。如预制初值n=1200H时,表示一个十进制数4608。方式0:计数结束中断43210nCLKOUTGATE(n=4)INTR方式0的工作特点:计数到零后,不能自动恢复计数初值,OUT输出端保持高电平。计数过程中,如果GATE=0,则暂停计数,直到GATE变高后再接着计数。在计数过程中可改变计数值。若是8位计数,写入新的计数值后,计数器按新值开始计数;若是16位计数,写入第一个字节后,计数器停止计数,在写入第二个字节后,按新的初值计数。(m=5)321045INTRAB方式1:可重复触发的单稳态触发器43210CLKOUTGATE(n=4)(m=5)5432453210单脉冲宽度单脉冲宽度方式1的工作特点:可重复触发。计数到零后,不用再次送计数值,只要给它触发脉冲,即可产生一个同样宽度的单稳脉冲。计数过程中,若装入新的计数初值,则当前输出不受影响。只有再次触发后,计数才开始按新值输出脉冲宽度。计数过程中,外部的GATE触发沿提前到来,则下一个CLK脉冲下降沿,计数器开始重新计数,这将使输出单稳脉冲比原先设定的计数值加宽了。例方式2:频率发生器(n分频器)方式2的工作特点:计数器写入控制字和计数初值后,如GATE一直处于高电平,那么,在下一个脉冲开始计数器计数。不用重复置数。计数器能够连续工作,输出OUT是输入CLK的n(初值)分频。

计数过程可由GATE信号控制。GATE变低将使计数暂停且OUT立即为高;在GATE变高后的下一个CLK下降沿计数器重新从初值开始计数。计数过程中可改变初值。如果GATE一直处于高电平,则重装计数初值不影响现行计数过程;下一个过程,才按新值计数。CLKOUTGATE43210n=4n=33213432110404320重复周期方式3:方波发生器44CLKOUTGATE42024n=4n=54245200045420重复周期20重复周期54特点:当计数初值n为偶数时,每个CLK脉冲使计数值减2,当计到零时,一方面使输出改变状态,另一方面,又重新装入计数值、开始新的计数。当n为奇数时,且OUT为高时,第一个脉冲使计数减1,然后依次减2;当OUT为低时,先使计数减3,然后依次减2。GATE=1,允许计数;GATE=0,禁止计数。如果在输出为低期间,GATE=0,输出将立即变高,停止计数;当GATE变高后,计数器将重新装入初值并开始计数。例方式5:硬件触发的选通信号发生器在初始化编程时用于寄存在CPU写入的控制字以决定各通道的工作方式。由于计数初值的低8位0,因此采用只读/写高8位的方法,初始化程序如下:①硬件连接:硬件接口示意图如图所示,工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计数通道0的计数脉冲,当通道0计数满100后,由OUT0输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253计数通道1工作,由OUT1连续输出1000HZ的方波,持续6s后停止输出。通道1控制字,只读/写高8位,BCD计数制MOVAL,25H;OUTDX,AL;计数脉冲频率0~2MHz低时,禁止计数器工作;(2)利用命令控制字(SC1SC0000000B)将待读计数值锁存至其锁存器,这种方法不能影响计数过程。GATE=0,禁止计数。例将8253的三个计数器级连,假设时钟输入为1MHz,画出级连图,并求:AX中为计数器0的16位计数值二、8253的引脚功能如果用它作定时器,则CLK引脚上应数入精确的时钟脉冲,这时8253所能实现的定时时间=计数脉冲周期×预置的计数初值GATE0~GATE2:门控输入,当GATE引脚为若是16位计数,写入第一个字节后,计数器停止计数,在写入第二个字节后,按新的初值计数。方式4:软件触发的选通信号发生器CLKOUTGATEOUTn=4n=443210432104特点:只计数一次GATE=1,允许计数;GATE=0,禁止计数。在计数过程中改变计数初值,则按新计数值重新开始计数。如果是二字节数,则在写入第一个字节时停止计数;写入第二个字节后,按新的计数初值开始计数。方式5:硬件触发的选通信号发生器CLKGATEGATEOUT(n=4)OUT(n=4)432104343210写入控制字后,输出为高。写入计数初值后并不立即开始计数,而是由GATE信号的脉冲上升沿触发启动。当计数到零后时,输出一个CLK周期宽度的负脉冲,然后输出变高,停止计数。直至下次GATE脉冲的触发才能计数。在计数过程中,外部的GATE触发沿提前到来,则下一个CLK脉冲下降沿,计数器开始重新计数。例8253工作方式特点:方式0,在写入控制字后,输出端即变低,计数结束后,输 出端由低变高,常用该输出信号作为中断源。方式1,用来产生单脉冲。方式2,用来产生序列负脉冲,每个负脉冲的宽度与CLK脉冲 的周期相同。方式3,用来产生连续的方波。方式2和方式3都实现对时钟 脉冲进行n分频。方式4和方式5的波形相同,都在计数器回0后,从OUT端输出 一个负脉冲,其宽度等于一个时钟周期。方式0、1和4,计数初值装进计数器后,仅一次有效。方式2,3和5,在减1计数到0值后,8253会自动将计数值重装进计数器。启动计数器的触发方式软件触发方式:只要GATE信号为高电平,在写入计数初值后的下一个CLK脉冲的下降沿到来时,计数初值从计数初值寄存器送到减1计数器中,启动计数。硬件触发方式:即写入计数初值后,计数器并不开始计数。而是在GATE信号上升沿到来后的第一个CLK下降沿到来时,才将计数初值从计数初值寄存器送到减1计数器中,启动计数。在六种工作方式中属于软件触发方式的有方式0和方式4,属于硬件触发方式的有方式1和方式5。注意:方式2和方式3既可用于软件触发,也可用于硬件触发。具体地讲,在计数过程中,若GATE变为低电平,计数器停止计数。在GATE正跳变后,重新启动计数并从计数初值开始,因此当计数通道用作对外部事件计数时,GATE正跳变可用作对外部事件的同步控制信号四、8253应用举例1.初始化编程2.读取8253的计数值3.应用举例1.初始化编程初始化编程:刚接通电源时,诸如8253之类的可编程外围接口芯片通常都处于未定义状态,在使用之前,必须用程序把他们初始化为所需的特定模式,这个过程称为初始化编程。初始化步骤:(1)写入控制字用输出指令向控制字寄存器写入一个控制字,以选定计数器通道,规定该计数器的工作方式和计数格式。写入控制字还起到复位作用,使输出端out变为规定的初始状态,并使计数器清0(2)写入计数初值用输出指令向选中的计数器端口地址中写入一个计数初值,初值设置时要符合控制字中有关格式的规定。初值可以是8位数据,也可以是16位数据。控制LED的点亮或熄灭例8253通道2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,8253各通道端口地址分别为40H、42H、44H、46H,其电路硬件图如图10.MOVAL,32H;当OUT为低时,先使计数减3,然后依次减2。计数脉冲频率0~2MHz例:对计数器0初始化。②控制字设置:通道0计数器工作于方式2,采用BCD计数,因计数初值为100,采用RL1RL0=10(读/写计数器的高8位),则方式控制字为00100101B。计数到零后,不能自动恢复计数初值,OUT输出端保持高电平。例将8253的三个计数器级连,假设时钟输入为1MHz,画出级连图,并求:8253的通道1工作于方式2,其输出端OUT1的输出为相对于1MHZ频率的分频脉冲,若选定OUT1输出脉冲周期为4ms,则通道1的计数初值应为4000。禁止(D7~D0三态)方式3,用来产生连续的方波。对控制寄存器设置控制字01001100D7D6D5D4D3D2D1D0计数器0先写低8位再写高8位方式1二进制计数例:对计数器0初始化。工作与方式1,按二进制计数,计数值为5080H。确定控制字:计数值低8位为80H,高8位为50H。设端口地址为2A0H~2A3H,则初始化程序为:MOVDX,2A3H;控制端口地址为2A3HMOVAL,32H;00110010BOUTDX,AL;送方式控制字到控制寄存器MOVDX,2A0H;计数器0端口地址为2A0HMOVAL,80HOUTDX,AL;先写低8位计数值到计数器MOVAL,50HOUTDX,AL;再写高8位计数值到计数器02.读取8253的计数值;命令控制字送控制口;读取计数器0低8位数据当8253计数值是16位时,CPU要分两次读入,通常做法有两种:(1)利用GATE信号使计数过程暂停(2)利用命令控制字(SC1SC0000000B)将待读计数值锁存至其锁存器,这种方法不能影响计数过程。注意,控制字应写入控制端口。CPU读取此锁存器后,锁存自动解除。例:读取计数器0的16位计数值,采用锁存器锁存方式,其程序为:MOVAL,00HMOVDX,2A3HOUTDX,ALMOVDX,2A0HINAL,DXXCHGAL,AH;暂存AHINAL,DX;读取计数器0高8位数据XCHGAL,AH;AX中为计数器0的16位计数值3、应用举例用8253产生各种定时波形控制LED的点亮或熄灭8253初始化方法:控制字计数初值:n=定时时间t时钟频率fc=定时时间t/时钟脉冲周期Tc如:fc=1MHZ,最大计数初值:65536一个定时器最大定时时间:N/fc=65536/106在某个以8086为CPU的系统中使用了一块8253芯片,8253的4个端口地址分别为310H、312H、314H、和316H,所用的时钟脉冲频率为1MHZ。要求3个计数通道分别完成以下功能:(1)通道0工作于方式3,输出频率为2KHZ的方波;(2)通道1产成宽度为480us的单脉冲;(3)通道2用硬件方式触发,输出单脉冲,时间常数为26。用8253产生各种定时波形;通道0初始化程序MOVDX,316H;控制口地址MOVAL,00110111B;通道0控制字,先读写低字节,后高字节,方式3,BCD计数OUTDX,AL;写入方式字MOVDX,310H;通道0口地址MOVAL,00H;低字节OUTDX,AL;先写入低字节MOVAL,05H;高字节OUTDX,AL;后写入高字节对三个通道的初始化程序;通道1初始化程序MOVDX,316HMOVAL,01110011B;通道1方式字,先读写低字节,后高字节,方式1,BCD计数OUTDX,ALMOVDX,312H;通道1口地址MOVAL,80H;低字节OUTDX,ALMOVAL,04H;高字节OUTDX,AL;通道2初始化程序MOVDX,316HMOVAL,10011011B;通道2方式字,只读写低字节,方式5,BCD计数OUTDX,ALMOVDX,314H;通道2口地址MOVAL,26H;低字节OUTDX,AL;只写入低字节控制LED的点亮或熄灭例:用8253来控制一个LED发光二极管的点亮和熄灭,要求点亮10秒钟后再让它熄灭10秒钟,8253的各端口地址为81H、83H、85H和87H。初始化程序MOVAL,00110101B;通道0控制字,先读写低字节,后高字节,方式3,BCD计数OUT87H,ALMOVAL,00H;计数初值低字节OUT81H,ALMOVAL,50H;计数初值高字节OUT81H,ALMOVAL,01110111B;通道1控制字,先读写低字节,后高字节,方式3,BCD计数OUT87H,ALMOVAL,00H;计数初值低字节OUT83H,ALMOVAL,80H;计数初值高字节OUT83H,AL例用8253监视一个生产流水线,每通过100个工件。蜂鸣器响6s。频率为1000HZ。①硬件连接:硬件接口示意图如图所示,工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计数通道0的计数脉冲,当通道0计数满100后,由OUT0输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253计数通道1工作,由OUT1连续输出1000HZ的方波,持续6s后停止输出。②控制字设置:通道0计数器工作于方式2,采用BCD计数,因计数初值为100,采用RL1RL0=10(读/写计数器的高8位),则方式控制字为00100101B。通道1计数器工作于方式3,CLK1接2MHZ时钟,要求产生1000HZ的方波,则计数初值应为2000000÷1000=2000,采用RL1RL0=10(只读/写高8位),BCD计数,则方式控制字为01100111B。③程序编制:假设8253通道0的地址为40H,通道1的地址为42H,控制口地址为46H。8255A的A口地址为80H,工作于方式0输出。

则主程序为:MOVAL,25H;通道0初始化OUT46H,ALMOVAL,01H;计数初值高8位,低8位自动清零OUT40H,ALSTI;开中断LOP:HLT;等待中断JMPLOP

中断服务程序为:MOVAL,01H;通道1的GATE1置1,启动计数OUT80H,ALMOVAL,67H;通道1初始化OUT46H,ALMOVAL,20H;计数初值高8位,低8位自动清零OUT42H,ALCALLDL6s;延时6sMOVAL,00H;通道1的GATE1置0,停止计数OUT80H,AL┇;向8259A发中断结束命令IRET例8253通道2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,8253各通道端口地址分别为40H、42H、44H、46H,其电路硬件图如图10.21所示,试编程完成以上工作。

根据要求8253通道2输出一个周期为4s的方波。从图10.21可知通道1的CLK1输入时钟周期为1μs,若通道1工作为定时,其输出最大定时时间为1×65536μs,仅为65.5ms,因而使用一个通道达不到定时时间4s的要求。此时,采用通道级连的办法,将通道1的输出OUT1作为通道2的输入脉冲。

8253的通道1工作于方式2,其输出端OUT1的输出为相对于1MHZ频率的分频脉冲,若选定OUT1输出脉冲周期为4ms,则通道1的计数初值应为4000。周期为4ms的脉冲作为通道2的输入,要求输出端OUT2的波形为方波且周期为4s,因此通道2应工作于方式3,计数初值为1000。通道1的控制字为01100101B,通道2的控制字为10100111B。由于计数初值的低8位0,因此采用只读/写高8位的方法,初始化程序如下:┇MOVAL,65H;通道1控制字,只读/写高8位,BCD计数制OUT46H,ALMOVAL,0A7H;通道2控制字,只读/写高8位,BCD计数制OUT46H,ALMOVAL,40H;通道1计数初值高8位,低8位自动置0OUT42H,ALMOVAL,10H;通道2计数初值高8位,低8位自动置0OUT44H,AL┇

例某系统利用8253-5定时器/计数器通道0产生1KHz的重复方波,问通道0应工作在什么工作方式?若CLK0=2MHz,试写出通道0的初始化程序。设8253-

温馨提示

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

评论

0/150

提交评论