您好,欢迎访问三七文档
15.4可编程定时/计数器8253掌握:引线功能及计数启动方法6种工作方式及其输出波形8253的使用:–芯片与系统的连接–芯片的初始化编程2如何实现定时?软件方法:用一段程序实现延时•利用程序循环延迟指定的时间•缺点:CPU占用率?延时精度?兼容?硬件方法:定时/计数器电路•利用脉冲计数在设定的时间输出定时信号●8253是一种硬件定时/计数器芯片3一、外部引线及内部结构8253概貌–3个16位的定时/计数器(通道)–24引脚双列直插式–最高计数频率2.6MHz–TTL电平兼容–单电源+5V供电4外部引线及内部结构DBD7-D08253A1A0WRRDCS通道2通道1通道0CLK0GATE0OUT0CLK1GATE1OUT1CLK1GATE1OUT1A1A0IOWIOR片选信号5外部引线及内部结构连接系统端的主要引线:D7~D0CSRDWRA1,A0–用于选择四个编址部件之一A1A0选择00计数通道001计数通道110计数通道211控制寄存器6外部引线及内部结构计数通道的主要引线(每通道均相同):CLKn时钟脉冲输入,计数器的计时基准。GATEn门控信号输入,控制计数器的启停。OUTn计数器输出信号,不同工作方式下产生不同波形。(n=0~2)78253的内部结构WRA0A1CS数据总线缓冲器读/写逻辑控制寄存器计数器0计数器1计数器2GATE1D0D7~RDCLK1OUT1CLK2GATE2OUT2CLK0GATE0OUT0片内总线编址部件0编址部件1编址部件2编址部件38二、计数启动方式软件启动过程硬件启动过程GATE端保持为高电平写入计数初值后的第2个CLK脉冲的下降沿开始计数GATE端有一个上升沿对应CLK脉冲的下降沿开始计数程序指令启动————软件启动外部电路信号启动——硬件启动9二、编程结构计数器(3个)——包括控制寄存器——存放控制命令字(只写)占用4个地址—3个计数器,1个控制寄存器16位初值寄存器16位计数寄存器(减法计数器)10控制字用于确定各计数器的工作方式。8253必须先初始化才能正常工作。每个计数器都必须初始化一次。CPU通过OUT指令把控制字写入控制寄存器。118253的控制字格式数制选择SC1SC0M2RW1RW0BCDM0M1D7D6D5D4D3D2D1D0工作方式000方式0…101方式500计数器锁存命令10只读/写高八位01只读/写低八位11先读/写低八位再读/写高八位00选择计数器001选择计数器110选择计数器2读/写指示计数器选择0选择二进制计数1选择十进制计数12关于的控制字说明:1、8253只有一个工作方式控制字,但是对每个计数器而言,它们的工作方式控制字内容一定各不相同(前两位不同),所用各计数器的控制字需要分别设置,先后不计。2、8253的工作方式控制字的特殊形式可用于对计数器的当前计数值进行锁存。3、在工作方式控制字被设置之后,随后必须紧接着给计数器预设置计数初值,计数器方可开始工作。13定时/计数的工作过程1.设置8253的工作方式2.设置计数初值到初值寄存器3.第一个CLK信号使初值寄存器的内容置入计数寄存器4.以后每来一个CLK信号,计数寄存器减15.减到0时,OUT端输出一特殊波形的信号注:以上计数过程中还受到GATE信号的控制14三、工作方式方式0——计数结束中断方式1——可重复触发的单稳态触发器方式2——频率发生器方式3——方波发生器方式4——软件触发选通方式5——硬件触发选通15工作方式方式0软件启动,不自动重复计数。装入控制字后OUT端变低电平,计数结束OUT输出高电平。(计数结束中断)16方式0(计数结束中断)计数过程中,GATE端应保持高电平。每写入一次初值计数一个周期,然后停止计数。OUT端输出是一个约(N+1)TCLK宽度的负脉冲。计数过程中可随时修改初值重新开始计数。17工作方式方式1硬件启动,不自动重复计数。装入控制字后OUT端变高电平。计数开始OUT端变为低电平,计数结束后又变高。(单稳态触发器)18方式1(单稳态触发器)门控信号GATE端的跳变触发计数,可重复触发。若下一次GATE上升沿提前到达,则OUT端负脉冲拉宽为两次计数过程之和。计数过程中写入新初值不影响本次计数。19工作方式方式2软、硬件启动,自动重复计数。装入控制字后OUT端变高电平,计数到最后一个CLK时OUT输出负脉冲,并连续重复此过程。(频率发生器)20方式2(频率发生器)–GATE为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。–每个计数周期结束时(减到1时),OUT端输出一个TCLK宽度的负脉冲。–计数过程自动重复进行。–计数过程中修改初值不影响本轮计数过程。21方式3软、硬件启动,自动重复计数。装入控制字后OUT端变高电平,然后OUT连续输出对称方波:(方波发生器)前N/2或(N+1)/2个CLK,OUT为高,后N/2或(N-1)/2个CLK,OUT为低。工作方式22方式3(方波发生器)–OUT输出方波,前半周期为高,后半周期为低。–计数过程中修改初值不影响本半周期计数过程。–GATE可以作为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。23工作方式方式4软件启动,不自动重复计数。装入控制字后输出端变高电平,计数结束输出一个CLK宽度的负脉冲(软件触发选通)24方式4(软件触发选通)–计数过程中,GATE端应保持高电平。–每写入一次初值,计数一个周期,然后停止计数。–每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。–计数过程中修改初值不影响本轮计数过程。25工作方式方式5硬件启动,不自动重复计数。OUT端波形与方式4相同(硬件触发选通)26方式5(硬件触发选通)–写入初值时,GATE端应保持低电平。–GATE每出现一次正脉冲,计数一个周期,然后停止计数。–每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。–计数过程中修改初值不影响本轮计数过程。278253的6种工作方式的输出波形•由软件触发计数(送新的计数值)——方式0、方式4•由硬件触发计数(由GATE触发)——方式1、方式5•分频计数器输出(产生序列脉冲)——方式2、方式3方式2OUT43210(4)3210方式0方式1方式3方式5方式4OUT43210OUT(n=4)4321042424242OUT43210OUTOUT43210软件触发产生选通脉冲硬件触发产生选通脉冲方波发生器可编程单稳态方式计数结束产生中断序列脉冲发生器28四、8253的应用与系统的连接设置工作方式置计数初值编程29与系统的连接示意图CLKGATEOUTD0~D7WRRDA1A0CSDBIOWIORA1A0译码器高位地址A15-A28253共三组8253占用4个接口地址:计数器0计数器1计数器2控制寄存器(决定8253的基地址)30初始化程序流程写控制字写计数值低8位写计数值高8位*非必须写入顺序:可按计数器分别写入控制字和初值。也可先写所有计数器控制字,再写入它们的初值318253应用举例采用8253作定时/计数器,其接口地址为40H~43H。输入8253的时钟频率为1.19MHz。计数器0:每秒18.2次输出信号。计数器1:每15微秒输出信号。计数器2:产生连续方波信号。328253应用举例(续)确定计数初值:计数初值与输入时钟(CLK)频率及输出波形(OUT)频率之间的关系为:Ci=CLK/OUTCNT0:1.19MHz/118.2Hz=65385CNT1:1.19MHz*15=18CNT2:1.19MHz/1kHz=119033确定控制字:CNT0:方式3,16位计数值00110110CNT1:方式2,低8位计数值01010100CNT2:方式3,16位计数值10110110348253应用举例初始化程序CNT0:MOVAL,36HOUT43H,ALMOVAL,0OUT40,ALOUT40,ALCNT1:MOVAL,54HOUT43H,ALMOVAL,18OUT41,ALCNT2:……35*扩展定时/计数范围当定时长度不够时,可把2个或3个计数通道串联起来使用,甚至可把多个8253串联起来使用。例如:CLK频率为1MHz,要求在OUT1端产生频率1Hz的脉冲。这时可将计数器0、1串联,工作方式都均为方式3,计数初值均为1000。连接方法见下页。36扩展定时/计数范围1MHz1KHz1Hz37*如何读出当前计数值第1种方法——在计数过程中读计数值–先锁存当前计数值,再用两条输入指令将16位计数值读出。第2种方法——停止计数器再读–用GATE信号使计数器停止,再规定RL1和RL0的读写格式,然后读出。38例读取其某一通道的当前计数值。设8253四个端口地址分别为40H、41H、42H、43H,今要读取通道0的16位计数值,其程序如下:MOVAL,00H;计数器0的锁存命令送ALOUT43H,AL;写入8253的控制字寄存器INAL,41H;读计数器0的低8位数据MOVAH,AL;暂存入AHINAL,41H;读计数器0的高8位数据XCHGAL,AH;利用交换指令使计数值低8位到;AL,高8位到AH中
本文标题:第五章(8253)
链接地址:https://www.777doc.com/doc-4451342 .html