第五章(8253).ppt
38页5.4 可编程定时/计数器8253掌握掌握:l引线功能及计数启动方法引线功能及计数启动方法l6种工作方式及其输出波形种工作方式及其输出波形l8253的使用的使用:–芯片与系统的连接芯片与系统的连接–芯片的初始化编程芯片的初始化编程1如何实现定时?l软件方法:用一段程序实现延时软件方法:用一段程序实现延时•利用利用利用利用程序循环程序循环程序循环程序循环延迟指定的时间延迟指定的时间延迟指定的时间延迟指定的时间•缺点:缺点:缺点:缺点:CPUCPU占用率?延时精度?兼容?占用率?延时精度?兼容?占用率?延时精度?兼容?占用率?延时精度?兼容?l硬件方法:定时硬件方法:定时/计数器电路计数器电路•利用利用利用利用脉冲计数脉冲计数脉冲计数脉冲计数在设定的时间输出定时信号在设定的时间输出定时信号在设定的时间输出定时信号在设定的时间输出定时信号● ● 8253是一种硬件定时是一种硬件定时/计数器芯片计数器芯片2一、外部引线及内部结构l8253概貌概貌–3个个16位的定时位的定时/计数器(通道)计数器(通道)–24引脚双列直插式引脚双列直插式–最高计数频率最高计数频率2.6MHz–TTL电平兼容电平兼容–单电源单电源+5V供电供电3外部引线及内部结构DBD7-D08253A1A0WRRDCS通道通道2通道通道1通道通道0CLK0GATE0OUT0CLK1GATE1OUT1CLK1GATE1OUT1A1A0IOWIOR片选信号片选信号4外部引线及内部结构连接系统端系统端的主要引线:lD7~~D0lCSlRDlWRlA1,,A0 –用于选择四个编址部件之一用于选择四个编址部件之一A1 A0 选选 择择0 0 计数通道计数通道00 1 计数通道计数通道11 0 计数通道计数通道21 1 控制寄存器控制寄存器5外部引线及内部结构计数通道计数通道的主要引线(每通道均相同):(每通道均相同):lCLKn 时钟脉冲输入,计数器的计时基准。
时钟脉冲输入,计数器的计时基准lGATEn 门控信号输入,控制计数器的启停门控信号输入,控制计数器的启停lOUTn 计数器输出信号,不同工作方式下计数器输出信号,不同工作方式下 产生不同波形产生不同波形n = 0~~2)) 68253的内部结构编址部件0编址部件1编址部件2编址部件37二、计数启动方式软件启动过程软件启动过程硬件启动过程硬件启动过程GATE端保持为高电平端保持为高电平写入计数初值写入计数初值后的第后的第2个个 CLK脉冲的下降沿开始计数脉冲的下降沿开始计数GATE端有一个上升沿端有一个上升沿对应对应CLK脉冲的下降沿开始计数脉冲的下降沿开始计数程序指令启动程序指令启动————软件启动软件启动外部电路信号启动外部电路信号启动——硬件启动硬件启动8二、编程结构l计数器计数器(3个个)——包括包括l控制寄存器控制寄存器—— 存放控制命令字(只写)存放控制命令字(只写)l占用占用4个地址个地址— 3个计数器,个计数器,1个控制寄存器个控制寄存器16位初值寄存器位初值寄存器16位计数寄存器位计数寄存器(减法计数器)(减法计数器)9控制字l用于确定各计数器的工作方式。
用于确定各计数器的工作方式l l82538253必须先必须先必须先必须先初始化初始化初始化初始化才能正常工作才能正常工作才能正常工作才能正常工作l l每个计数器都必须初始化一次每个计数器都必须初始化一次每个计数器都必须初始化一次每个计数器都必须初始化一次l lCPUCPU通过通过通过通过OUTOUT指令把控制字写入控制寄存器指令把控制字写入控制寄存器指令把控制字写入控制寄存器指令把控制字写入控制寄存器10l 8253 的控制字格式数制选择数制选择SC1SC0M2RW1RW0 BCDM0M1D7 D6 D5 D4 D3 D2 D1 D0工作方式工作方式000 方式方式0…101 方式方式500 计数器锁存命令计数器锁存命令10 只读只读/写高八位写高八位01 只读只读/写低八位写低八位11 先读先读/写低八位写低八位再读再读/写高八位写高八位00 选择计数器选择计数器001选择计数器选择计数器110 选择计数器选择计数器2读读/写指示写指示计数器选计数器选择择0 选选择择二二进进制制计计数数1 选选择择十十进进制制计计数数11关于的控制字说明:l 1、、8253只有一个工作方式控制字,但是对每个计只有一个工作方式控制字,但是对每个计数器而言,它们的工作方式控制字内容一定各不相同数器而言,它们的工作方式控制字内容一定各不相同(前两位不同),所用各计数器的控制字需要分别设(前两位不同),所用各计数器的控制字需要分别设置,先后不计。
置,先后不计l 2、、8253的工作方式控制字的特殊形式可用于对的工作方式控制字的特殊形式可用于对计数器的当前计数值进行锁存计数器的当前计数值进行锁存l 3、在工作方式控制字被设置之后,随后必须紧、在工作方式控制字被设置之后,随后必须紧接着给计数器预设置计数初值,计数器方可开始工作接着给计数器预设置计数初值,计数器方可开始工作12定时/计数的工作过程 1. 设置设置8253的工作方式的工作方式 2. 设置计数初值到初值寄存器设置计数初值到初值寄存器 3. 第一个第一个CLK信号使初值寄存器的内容置入信号使初值寄存器的内容置入 计数寄存器计数寄存器 4. 以后每来一个以后每来一个CLK信号,计数寄存器减信号,计数寄存器减1 5. 减到减到0时,时,OUT端输出一特殊波形的信号端输出一特殊波形的信号注:以上计数过程中还受到注:以上计数过程中还受到GATE信号的控制信号的控制13三、工作方式l l方式方式0——计数结束中断计数结束中断l l方式方式1——可重复触发的单稳态触发器可重复触发的单稳态触发器l l方式方式2——频率发生器频率发生器l l方式方式3——方波发生器方波发生器l l方式方式4——软件触发选通软件触发选通l l方式方式5——硬件触发选通硬件触发选通14工作方式方式方式0软件启动,不自动重复计数。
软件启动,不自动重复计数装入控制字后装入控制字后OUT端变低电平,端变低电平,计数结束计数结束OUT输出高电平输出高电平 (计数结束中断计数结束中断计数结束中断计数结束中断) )15方式方式0(计数结束中断)(计数结束中断)计数过程中,计数过程中,计数过程中,计数过程中,GATEGATE端应保持端应保持端应保持端应保持高电平高电平高电平高电平每写入一次初值计数一个周期,然后停止计数每写入一次初值计数一个周期,然后停止计数每写入一次初值计数一个周期,然后停止计数每写入一次初值计数一个周期,然后停止计数OUTOUT端输出是一个约端输出是一个约端输出是一个约端输出是一个约(N+1)T(N+1)TCLKCLK宽度的负脉冲宽度的负脉冲宽度的负脉冲宽度的负脉冲计数过程中可随时修改初值重新开始计数计数过程中可随时修改初值重新开始计数计数过程中可随时修改初值重新开始计数计数过程中可随时修改初值重新开始计数16工作方式l方式方式1 硬件启动,不自动重复计数硬件启动,不自动重复计数装入控制字后装入控制字后OUT端变高电平端变高电平计数开始计数开始OUT端变为低电平,计数端变为低电平,计数结束后又变高。
结束后又变高 (单稳态触发器单稳态触发器单稳态触发器单稳态触发器) )17方式方式1(单稳态触发器)(单稳态触发器)门控信号门控信号门控信号门控信号GATEGATE端的跳变触发计数,可重复触发端的跳变触发计数,可重复触发端的跳变触发计数,可重复触发端的跳变触发计数,可重复触发若下一次若下一次若下一次若下一次GATEGATE上升沿提前到达,则上升沿提前到达,则上升沿提前到达,则上升沿提前到达,则OUTOUT端负脉冲端负脉冲端负脉冲端负脉冲拉宽为两次计数过程之和拉宽为两次计数过程之和拉宽为两次计数过程之和拉宽为两次计数过程之和计数过程中写入新初值不影响本次计数计数过程中写入新初值不影响本次计数计数过程中写入新初值不影响本次计数计数过程中写入新初值不影响本次计数18工作方式方式方式2软、硬件启动,软、硬件启动,自动重复计数自动重复计数装入控制字后装入控制字后OUT端变高电平,计数端变高电平,计数到最后一个到最后一个CLK时时OUT输出负脉冲,输出负脉冲,并连续重复此过程并连续重复此过程 (频率发生器频率发生器频率发生器频率发生器) )19l方式方式2(频率发生器)(频率发生器)–GATEGATE为计数的控制信号:为计数的控制信号:为计数的控制信号:为计数的控制信号:GATEGATE变低计数变低计数变低计数变低计数停止,再变高时的下一个停止,再变高时的下一个停止,再变高时的下一个停止,再变高时的下一个CLKCLK下降沿,从初下降沿,从初下降沿,从初下降沿,从初值开始重新计数。
值开始重新计数值开始重新计数值开始重新计数–每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到1 1时),时),时),时),OUTOUT端端端端输出一个输出一个输出一个输出一个T TCLKCLK宽度的负脉冲宽度的负脉冲宽度的负脉冲宽度的负脉冲–计数过程计数过程计数过程计数过程自动重复自动重复自动重复自动重复进行–计数过程中修改初值不影响本轮计数过程计数过程中修改初值不影响本轮计数过程计数过程中修改初值不影响本轮计数过程计数过程中修改初值不影响本轮计数过程20方式方式3软、硬件启动,软、硬件启动,自动重复计数自动重复计数装入控制字后装入控制字后OUT端变高电平,端变高电平,然后然后OUT连续输出对称方波:连续输出对称方波:( (方波发生器方波发生器方波发生器方波发生器) )前前前前 N/2N/2或(或(或(或(N+1N+1))))/2 /2 个个个个CLKCLK,,,,OUTOUT为高,为高,为高,为高,后后后后N/2N/2或(或(或(或(N-1N-1))))/2 /2 个个个个CLKCLK,,,, OUTOUT为低工作方式21l方式方式3(方波发生器)(方波发生器)–OUT输出方波,前半周期为高,后半周输出方波,前半周期为高,后半周期为低。
期为低–计数过程中修改初值不影响计数过程中修改初值不影响本半周期本半周期计计数过程–GATE可以作为计数的控制信号:可以作为计数的控制信号:GATE变低计数停止,再变高时的下一变低计数停止,再变高时的下一个个CLK下降沿,从初值开始重新计数下降沿,从初值开始重新计数22工作方式方式方式4软件启动,不自动重复计数软件启动,不自动重复计数装入控制字后输出端变高电平,装入控制字后输出端变高电平,计数结束输出一个计数结束输出一个CLK宽度的负脉冲宽度的负脉冲( (软件触发选通软件触发选通软件触发选通软件触发选通) )23l方式方式4(软件触发选通)(软件触发选通)–计数过程中,计数过程中,GATE端应保持端应保持高电平高电平–每写入一次初值,计数一个周期,然后每写入一次初值,计数一个周期,然后停止计数停止计数–每个计数周期结束时(减到每个计数周期结束时(减到0时),时),OUT端输出一个端输出一个TCLK宽度的负脉冲宽度的负脉冲–计数过程中修改初值不影响本轮计数过计数过程中修改初值不影响本轮计数过程24工作方式l方式方式5 硬件启动,不自动重复计数硬件启动,不自动重复计数。
OUT端波形与方式端波形与方式4相同相同( (硬件触发选通硬件触发选通硬件触发选通硬件触发选通) )25l方式方式5(硬件触发选通)(硬件触发选通)–写入初值时,写入初值时,写入初值时,写入初值时,GATEGATE端应保持端应保持端应保持端应保持低电平低电平低电平低电平–GATEGATE每出现一次正脉冲,计数一个周期,每出现一次正脉冲,计数一个周期,每出现一次正脉冲,计数一个周期,每出现一次正脉冲,计数一个周期,然后停止计数然后停止计数然后停止计数然后停止计数–每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到每个计数周期结束时(减到0 0时),时),时),时),OUTOUT端端端端输出一个输出一个输出一个输出一个T TCLKCLK宽度的负脉冲宽度的负脉冲宽度的负脉冲宽度的负脉冲–计数过程中修改初值不影响本轮计数过程计数过程中修改初值不影响本轮计数过程计数过程中修改初值不影响本轮计数过程计数过程中修改初值不影响本轮计数过程268253的6种工作方式的输出波形•由软件触发计数由软件触发计数 (送新的计数值送新的计数值)—— 方式方式0、方式、方式4•由硬件触发计数由硬件触发计数 (由由GATE触发触发) —— 方式方式1、方式、方式5•分频计数器输出分频计数器输出(产生序列脉冲产生序列脉冲) —— 方式方式2、方式、方式327四、8253的应用l与系统的连接与系统的连接l设置工作方式设置工作方式l置计数初值置计数初值编程编程28与系统的连接示意图CLKGATEOUTD0~D7WRRDA1A0CSDBIOWIORA1A0译码器译码器高位地址高位地址A15-A28253共三组共三组82538253占用占用占用占用4 4个接口个接口个接口个接口地址:地址:地址:地址: 计数器计数器计数器计数器0 0 计数器计数器计数器计数器1 1 计数器计数器计数器计数器2 2 控制寄存器控制寄存器控制寄存器控制寄存器( (决定决定决定决定82538253的基地址的基地址的基地址的基地址) )29初始化程序流程写控制字写控制字写计数值低写计数值低8位位写计数值高写计数值高8位位*非必须非必须写入顺序:写入顺序: 可按计数器分别写可按计数器分别写入控制字和初值。
入控制字和初值 也可先写所有计数也可先写所有计数器控制字,再写入器控制字,再写入它们的初值它们的初值308253应用举例l采用采用8253作定时作定时/计数器,其接口地址为计数器,其接口地址为40H~43Hl输入输入8253的时钟频率为的时钟频率为1.19MHzl计数器计数器0: 每秒每秒18.2次输出信号次输出信号l计数器计数器1: 每每15微秒输出信号微秒输出信号l计数器计数器2: 产生连续方波信号产生连续方波信号 318253应用举例(续)l确定计数初值:确定计数初值: 计数初值与输入时钟(计数初值与输入时钟(CLK))频率及频率及输出波形(输出波形(OUT))频率之间的关系为:频率之间的关系为: Ci=CLK/OUT CNT0:: 1.19MHz / 118.2Hz = 65385 CNT1:: 1.19MHz*15 = 18 CNT2:: 1.19MHz/1kHz= 119032l确定控制字:确定控制字: CNT0::方式方式3,,16位计数值位计数值 00 11 011 0 CNT1::方式方式2,低,低8位计数值位计数值 01 01 010 0 CNT2::方式方式3,, 16位计数值位计数值 10 11 011 0338253应用举例 初始化程序初始化程序CNT0::MOV AL, 36HOUT 43H, ALMOV AL, 0OUT 40, ALOUT 40, ALCNT1:: MOV AL, 54HOUT 43H, ALMOV AL, 18OUT 41, ALCNT2:: ……34*扩展定时/计数范围 当定时长度不够时,可把当定时长度不够时,可把2个或个或3个计数个计数通道通道串联串联起来使用,甚至可把多个起来使用,甚至可把多个8253串串联起来使用。
联起来使用 例如:例如:CLK频率为频率为1MHz,要求在,要求在OUT1端产生频率端产生频率1Hz的脉冲 这时可将计数器这时可将计数器0、、1串联,工作方式都串联,工作方式都均为方式均为方式3,计数初值均为,计数初值均为1000连接方法连接方法见下页35扩展定时/计数范围1MHz1KHz1Hz36*如何读出当前计数值如何读出当前计数值l l第第1种方法种方法——在计数过程中读计数值在计数过程中读计数值–先先锁存当前计数值锁存当前计数值,再用两条输入指,再用两条输入指令将令将16位计数值读出位计数值读出l l第第2种方法种方法——停止计数器再读停止计数器再读–用用GATE信号信号使计数器停止,再规定使计数器停止,再规定RL1和和RL0的读写格式,然后读出的读写格式,然后读出37l l例例例例 读取其某一通道的当前计数值读取其某一通道的当前计数值读取其某一通道的当前计数值读取其某一通道的当前计数值设设设设82538253四个端口地址分别为四个端口地址分别为四个端口地址分别为四个端口地址分别为40H40H、、、、41H41H、、、、42H42H、、、、43H43H,,,,今要读取通道今要读取通道今要读取通道今要读取通道0 0的的的的1616位计数值,其程序如下:位计数值,其程序如下:位计数值,其程序如下:位计数值,其程序如下:MOV ALMOV AL,,,,00H 00H ;;;;计数器计数器计数器计数器0 0的锁存命令送的锁存命令送的锁存命令送的锁存命令送ALALOUT 43HOUT 43H,,,,AL AL ;;;;写入写入写入写入82538253的控制字寄存器的控制字寄存器的控制字寄存器的控制字寄存器IN ALIN AL,,,,41H 41H ;;;;读计数器读计数器读计数器读计数器0 0的低的低的低的低8 8位数据位数据位数据位数据MOV AHMOV AH,,,,AL AL ;;;;暂存入暂存入暂存入暂存入AHAHIN ALIN AL,,,,41H 41H ;;;;读计数器读计数器读计数器读计数器0 0的高的高的高的高8 8位数据位数据位数据位数据XCHG ALXCHG AL,,,,AH AH ;;;;利用交换指令使计数值低利用交换指令使计数值低利用交换指令使计数值低利用交换指令使计数值低8 8位到位到位到位到 ;;;; ALAL,,,,高高高高8 8位到位到位到位到AHAH中中中中38。





