资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,微机原理及应用第,9,章 计数器与定时电路,*,微机原理及应用,第九章 计数器与定时电路,2024/11/27,1,学习目的,通过对本章的学习,,您应该能够达到下列要求:,了解定时基本概念,熟悉可编程计数器,/,定时器,8253,的外部特性,熟悉可编程计数器,/,定时器,8253,工作模式,熟悉可编程计数器,/,定时器,8253,初始化,2,8253,的外部特性,8253,工作模式,8253,初始化,重 点,3,一、定时与计数,定时中断、定时检测、定时扫描,对外部事件计数,二,.,微机中的定时方法,软件定时,延迟子程序,硬件定时,用计数器,/,定时器,8253,9.1 定时基本概念,4,例,:,软件定时的例子,:,编写一个软件定时程序,要求定时,20ms.,假设,:8086,的时钟,=8MHz,一个时钟周期,T=1/8MHz=0.125us,延时,20ms,执行,PUSHF,POPF,指令,:,需要循环次数:,N=20000/(12+14+17)*0.125,=37209,参考程序:,MOV CX,37209,PUSHF ;,时钟数,:14T,POPF ;,时钟数,:12T,LOOP ;,时钟数,:17,9.1 定时基本概念,5,8253,外部特性与内部编程结构,计数器,/,定时器,8253,特点,三个通道,可单独使用,片内寻址,A1 A0=00,、,01,、,10,、,11,对应:通道,0,、,1,、,2,和控制口地址,工作方式:,6,种,PIT(Programmable Interval Timer),9.2 可编程计数器8253,6,9.2 可编程计数器8253,7,9.2 可编程计数器8253,连接,系统端的,主要引线:,D7,D0,CS,RD,WR,A1,,,A0,用于选择四个编址部件之一,引线结构,A1 A0,选 择,0 0,计数通道,0,0 1,计数通道,1,1 0,计数通道,2,1 1,控制寄存器,8,9.2 可编程计数器8253,计数通道,的主要引线(每通道均相同):,CLK,n,时钟脉冲输入,计数器的计时基准。,GATE,n,门控信号输入,控制计数器的启停。,OUT,n,计数器输出信号,不同工作方式下,产生不同波形,。,(,n=0,2,),9,1.,外部特性,与,CPU,相连的信号,:,数据线,D7D0,读,RD,写,WR,片选,CS,地址线,A0,A1,8253,GATE,0,OUT,0,CLK,0,5V,8088CPU,1KHz,D,07,8253,运行原理图,译码,地址,M/IO,CS,WR,RD,A,0,A,1,A,0,A,1,WR,RD,9.2 可编程计数器8253,10,1).,数据总线缓冲器,往计数器设置计数初值;,从计数器读取计数值;,往控制寄存器设置控制字。,2).,读,/,写逻辑电路,A,1,A,0,:端口选择,0 0,:通道,0,(,0,号计数器),0 1,:通道,1,(,1,号计数器),1 0,:通道,2,(,2,号计数器),1 1,:控制字寄存器,9.2 可编程计数器8253,11,3).,控制命令寄存器,(8,位,),4).,计数器,:,三个独立通道,:,计数器,0,计数器1,计数器2,每个通道包含,:,计数初值寄存器,(16,位,),减一寄存器,(16,位,),当前计数初值锁存器,(16,位,),9.2 可编程计数器8253,12,思考题:,8253,每个计数通道与外设接口有哪些信号线,每个信号的用途是什么?,9.2 可编程计数器8253,13,1,)门脉冲控制时钟输入;,2,)用门脉冲来重新启动计数;,3,)用门脉冲停止计数;,4,)单一计数;,5,)循环计数,.,计数器,/,定时器的工作特点,9.2 可编程计数器8253,14,3.,计数初值,计数初值,n,=,时钟频率,fc/,输出频率,f,out,=,定时时间,T,out,/,时钟脉冲周期,Tc,4.,编程命令,方式命令字,对,8253,初始化,方式命令字的格式,9.2 可编程计数器8253,15,SC,1,SC,0,RW,1,RW,0,M,2,M,1,M,0,BCD,M,2,M,1,M,0,模式选择,0 0 0,模式,0,0 0 1,模式,1,/1 0,模式,2,/1 1,模式,3,1 0 0,模式,4,1 0 1,模式,5,0 0-,对计数器进行锁存,0 1-,只读,/,写低,8,位字节,1 0-,只读,/,写高,8,位字节,1 1-,先读,/,写低,8,位字节,再读,/,写高,8,位字节,.,0 0-,选计数器,0,0 1-,选计数器,1,1 0-,选计数器,2,1 1-,无意义,8253,控制字格式,9.2 可编程计数器8253,16,8253,初始化方法,:,设置控制字;确定计数初值。,例,:,使,2,号定时器,工作在方式,3,计数初值,=533h,二进制计数,.,试写出,8253,初始化程序段,.,8253,端口地址,:40H,41H,42H,43H,MOV AL,10,11,011,0B ;,2,号定时器,方式,3,OUT 43H,AL,MOV AX,0533H,OUT 42H,AL ;2,号数据口,MOV AL,AH,OUT 42H,AL,9.2 可编程计数器8253,17,8253,的工作模式,方式,0,计数结束产生中断,一次定时或计数,重写初值,启动新一轮的计数,方式,1,可编程的单脉冲,(,单稳,),触发器,GATE,边沿触发,启动新一轮计数,方式,2,分频器,(,速度波发生器,),具有计数初值重装能力,方式,3,方波发生器,具有计数初值重装能力,方式,4,软件触发的选通信号发生器,一次定时,重写初值,启动新一轮的计数,方式,5,硬件触发的选通信号发生器,GATE,边沿触发新一轮计数,9.2 可编程计数器8253,18,1.,方式,0,计数结束产生中断,(,一次定时或计数,重写初值,启动新一轮的计数,),19,方式,0,(计数结束中断),计数过程中,,GATE,端应保持,高电平,。,每写入一次初值计数一个周期,然后停止计数。,OUT,端输出是一个约,(N+1)T,CLK,宽度的负脉冲。,计数过程中可随时修改初值重新开始计数。,20,例,:,使,1,号定时器,工作在方式,0,计数初值,=0FF5h,二进制计数,.,试写出,8253,初始化程序段,.,8253,端口地址,:40H,41H,42H,43H,MOV AL,01,11,000,0B ;,0,号定时器,方,30,OUT 43H,AL,MOV AX,0FF5H,OUT 41H,AL ;1,号数据口,MOV AL,AH,OUT 41H,AL,9.2 可编程计数器8253,21,高,2.,方式,1_,单脉冲触发器,(,GATE,边沿触发,启动新一轮计数,),22,方式,1,(单稳态触发器),门控信号,GATE,端的跳变触发计数,可重复触发。,若下一次,GATE,上升沿提前到达,则,OUT,端负脉冲拉宽为两次计数过程之和。,计数过程中写入新初值不影响本次计数。,23,3.,方式,2-,分频器,(,具有计数,初值重装,能力,),24,方式,2,(频率发生器),GATE,为计数的控制信号:,GATE,变低计数停止,再变高时的下一个,CLK,下降沿,从初值开始重新计数。,每个计数周期结束时(减到,1,时),,OUT,端输出一个,T,CLK,宽度的负脉冲。,计数过程,自动重复,进行。,计数过程中修改初值不影响本轮计数过程。,25,4.,方式,3-,方波发生器,(,具有计数,初值重装,能力,),26,方式,3,(方波发生器),OUT,输出方波,前半周期为高,后半周期为低。,计数过程中修改初值不影响,本半轮,计数过程。,其余的与方式,2,类似。,27,例,:,使,0,号定时器,工作在方式,3,计数初值,N=1000,二进制计数,.,试写出,8253,初始化程序段,.,8253,端口地址,:40H,41H,42H,43H,MOV AL,10,11,011,0B ;,2,号定时器,方式,3,OUT 43H,AL,MOV AX,1000,OUT 40H,AL ;0,号数据口,MOV AL,AH,OUT 40H,AL,9.2 可编程计数器8253,28,4.,方式,4-,软件触发的选通信号发生器,29,方式,4,(软件触发选通),计数过程中,,GATE,端应保持,高电平,。,每写入一次初值,计数一个周期,然后停止计数。,每个计数周期结束时(减到,0,时),,OUT,端输出一个,T,CLK,宽度的负脉冲。,计数过程中修改初值不影响本轮计数过程。,30,5.,方式,5-,硬件触发的选通信号发生器,31,方式,5,(硬件触发选通),写入初值时,,GATE,端应保持,低电平,。,GATE,每出现一次正脉冲,计数一个周期,然后停止计数。,每个计数周期结束时(减到,0,时),,OUT,端输出一个,T,CLK,宽度的负脉冲。,计数过程中修改初值不影响本轮计数过程。,32,思考题:,8253,有几种工作方式?,什么是软件触发?什么是硬件触发?,可重装初值的工作方式是哪些?,9.2 可编程计数器8253,33,8253,初始化方法,控制字,计数初值,:,已知,:CLK,的频率,f,c,与,定时的时间,t:,计数初值,:,n=f,clk,t,例,:设8253:,f,c,=1MHZ,,,最大计数初值:,N=65536,一个定时器最大定时时间:,T,max,=N/f,c,=65536/10,6,=0.065536s,9.3 8253应用举例,34,例,:,设定时器,0,、定时器,1,工作于方式,2,,外部提供一个时钟,频率,f=2MHZ,。要求定时器,1,每,5ms,产生一个脉冲,定时器,0,每,5s,产生一个脉冲。,1).,一个定时器的最大定时时间:,65536/,(,2*10,6,),=0.032768 s=32.768ms,2).,将定时器,1,的,CLK,1,接,2MHZ,时钟,计数初值:,3).,将定时器,1,的,OUT,1,端接到定时器,0,的,CLK,0,端,定时器,0,的计数初值,:,9.3 8253应用举例,35,地址,译码,CPU,D,7,D,0,AB,8253,两个定时器串连使用,9.3 8253应用举例,36,8253,初始化程序,:,MOV AL,00,11,010,0B,;,0,号定时器,方式,2,OUT 43H,AL,MOV AX,1000,OUT 40H,AL,MOV AL,AH,OUT 40H,AL,MOV AL,01,11,010,0B ;,1,号定时器,方式,2,OUT 43H,AL,MOV AX,10000,OUT 41H,AL,MOV AL,AH,OUT 41H,AL,9.3 8253应用举例,37,时钟原理,8253,8259,GATE0,OUT0,CLK0,5V,8086,IR,0,1.1931816MHz,INT,INTR,INTA,D,07,D,07,8,号中断,图,2,时钟运行原理图,9.3 8253应用举例,38,思考题:,如何读出当前计数值?,39,在计数过程中读计数值,先,锁存当前计数值,,再用两条输入指令将,16,位计数值读出。,40,
展开阅读全文