计数器和定时器电路8253•基本概念•计数器/定时器8253的初始化•时钟程序•音乐程序基本概念一.定时与计数二.微机中的定时方法1.软件定时-----延时程序2.硬件定时定时器在时钟信号作用下,进行定时的减“1”计数,定时时间到(减“1”计数回零),从输出端输出周期均匀、频率恒定的脉冲信号由上述可知,定时器强调的是精确的时间。例:软件延时的例子:编写一个软件延时程序,要求定时20ms.假设:8086的时钟=8MHz,一个时钟周期T=1/8MHz=0.125us延时20ms,执行PUSHF,POPF指令需要循环次数=20000/[(12+14)*0.125]=15384注:PUSHF时钟数:14TPOPF时钟数:12T(MOVCX,15384:时钟数:4T)延时程序段:MOVCX,15384LP:PUSHFPOPFLOOPLP可编程计数器/定时器8253PIT(ProgrammableIntervalTimer)8253的主要功能1、一个芯片上有三个独立的16位计数器通道2、每个计数器的内部结构相同,可通过编程手段设置为6种不同的工作方式来进行定时/计数3、每个计数器在工作过程中的当前计数值可被CPU读出外部特性8253内部编程结构1、计数器/定时器8253特点:三个通道,可单独使用2、片内寻址A1A0=00、01、10、11对应:通道0、1、2和控制口地址3、工作方式:6种8253的内部结构1、数据总线缓冲器往计数器设置计数初值;从计数器读取计数值;往控制寄存器设置控制字。2、读/写逻辑电路A1A0:端口选择00:通道0(0号计数器)01:通道1(1号计数器)10:通道2(2号计数器)11:控制字寄存器3、控制命令寄存器(8位)4、计数器:三个独立通道:计数器0,计数器1,计数器2每个通道包含:计数初值寄存器(16位)减一寄存器(16位)当前计数初值锁存器(16位)8253工作原理数据线D7~D0,读RD,写WR,片选CS,地址线A0,A18253GATE0OUT0CLK05V8088CPU1KHzD0~78253工作原理图译码地址M/IOCSWRRDA0A1A0A1WRRD8253工作原理16位当前计数值锁存器16位减一计数器16位计数初值寄存器&CLKGATEOUT(减1至0时)装入/读出初值读出当前值8253的内部的各计数器的结构8253初始化方法:1、设置控制字控制字格式SC1SC0RW1RW0M2M1M0BCD1--计数值为BCD码格式0--计数值为二进制格式M2M1M0模式选择000模式0001模式1/10模式2/11模式3100模式4101模式500----对计数器进行锁存01----只读/写低8位字节10----只读/写高8位字节11----先写低8位字节,再写高8位字节.00----选计数器001----选计数器110----选计数器211----无意义2、计数初值计数初值n=时钟频率fc/输出频率fout=定时时间Tout/时钟脉冲周期Tc8253初始化的工作有两个内容:(1)一是向命令寄存器写入方式命令,以选择计数器(3个计数器之一),确定工作方式(6种方式之一),指定计数器计数初值的长度和装入顺序以及计数值的码制(BCD或二进制码)。(2)二是向已选定的计数器按方式命令的要求写入计数初值。例:使2号定时器,工作在方式3,计数初值=533h,二进制计数,试写出8253初始化程序段。8253端口地址:40H,41H,42H,43HMOVAL,10000110B;2号定时器,方式3OUT43H,ALMOVAX,0533HOUT42H,AL;2号数据口MOVAL,AHOUT42H,AL三.8253的工作模式1.方式0——计数结束产生中断一次定时或计数,重写初值,启动新一轮的计数2方式1——可编程的单脉冲(单稳)触发器GATE边沿触发,启动新一轮计数3方式2——分频器(速度波发生器)具有计数初值重装能力4方式3——方波发生器具有计数初值重装能力5方式4——软件触发的选通信号发生器一次定时,重写初值,启动新一轮的计数6方式5——硬件触发的选通信号发生器GATE边沿触发新一轮计数1.方式0——计数结束产生中断(一次定时或计数,重写初值,启动新一轮的计数)例3:使1号定时器,工作在方式0,计数初值=0FF5h,二进制计数.试写出8253初始化程序段.8253端口地址:40H,41H,42H,43H•MOVAL,01000000B;1号定时器,方00•OUT43H,AL•MOVAX,0FF5H•OUT41H,AL;1号数据口•MOVAL,AH•OUT41H,AL高2.单脉冲触发器(GATE边沿触发,启动新一轮计数)3.分频器(具有计数初值重装能力)4.方波发生器(具有计数初值重装能力)例4:使0号定时器,工作在方式3,计数初值N=1000,二进制计数.试写出8253初始化程序段.8253端口地址:40H,41H,42H,43H•MOVAL,10000110B;2号定时器,方式3•OUT43H,AL•MOVAX,1000•OUT40H,AL;0号数据口•MOVAL,AH•OUT40H,AL4.软件触发的选通信号发生器5.硬件触发的选通信号发生器8253初始化方法:•控制字•计数初值:已知:CLK的频率fc与定时的时间t.计数初值:n=fct例1:设8253:fc=1MHZ,最大计数初值:N=65536一个定时器最大定时时间:Tmax=N/fc=65536/106=0.065536s5-38253应用举例例5:设定时器0、定时器1工作于方式2,外部提供一个时钟,频率f=2MHZ。要求定时器1每5ms产生一个脉冲,定时器0每5s产生一个脉冲。1).一个定时器的最大定时时间:65536/(2*106)=0.032768s=32.768ms2).将定时器1的CLK1接2MHZ时钟,计数初值:3).将定时器1的OUT1端接到定时器0的CLK0端,定时器0的计数初值:10005200520010510030sfnHZmsf1000010256111msftn思考题:l.微机中实现定时控制的主要方法是什么?2.8088CPU最小模式,8253端口I/O地址依次为0F8H~0FBH,试设计8088与8253的接口线路.3.8253每个通道有___种工作方式可供选择。若设定某通道为方式0后,其输出引脚为电平;当____后通道开始计数,信号端每来一个脉冲就减1;当__则输出引脚输出电平,表示计数结束。8253的CLK0接1.5MHZ的时钟,欲使OUT0产生频率为300KHZ的方波信号,则8253的计数初值应为__,应选用的工作方式是_____.