您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机接口第08章(定时器).
定时计数控制器第8章12第8章定时计数控制器教学重点8253的引脚和6种工作方式8253的编程8253在IBMPC系列机上的应用3定时器和计数器定时控制在微机系统中极为重要定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,控制产生准确的时间间隔一般,该计数电路也可记录引脚输入的脉冲信号(可随机产生),反映输入脉冲的个数,所以,定时器又常被称为“定时/计数器”4定时功能的实现方法用软件实现延时——利用微处理器执行一个延时程序段来实现用硬件实现定时采用不可编程器件(不灵活)——如分频器、单稳电路、简易定时电路;采用可编程器件(灵活)——采用可编程的定时/计数器芯片来构成定时电路,通过软件设计,可在不同的条件或时段采用不同的定时策略。58.18253/8254定时计数器8253/8254有3个独立的计数器通道,每个计数通道16位,可进行:定时——对引脚上输入的周期性时钟信号进行计数计数——对引脚上输入的非周期性脉冲信号进行计数每个计数器有6种工作方式可按二进制或十进制(BCD码)进行计数8254是8253的改进型二者差别很小68.1.18253/8254的内部结构和引脚78253/8254的地址分配8253/8254有4个I/O端口:A1A0=00数据口(CH0送计数初值,读计数)A1A0=01数据口(CH1送计数初值,读计数)A1A0=10数据口(CH2送计数初值,读计数)A1A0=11控制口(送控制命令)8计数通道的内部结构示意预置寄存器GATECLKOUT减1计数器输出锁存器9计数器工作描述预置寄存器——用于存放计数初值和重装初值,注意:计数初值为0时,计数值最大(65536/10000)计数初值为1时,计数值最小(1/1)预置寄存器中的预置值在计数过程中不会改变。减法计数器——CLK引脚每收到一个脉冲,减法计数器将减1。注意:可采用二进制或十进制(BCD码)进行计数输出锁存器——用于在接到命令时锁存当前计数,这样,CPU在读取时,该值将不再变化10每个计数通道的3个引脚CLK(时钟)——输入引脚,在计数过程中,此引脚上每输入1个时钟信号(下降沿),计数器的计数值将减1GATE(门控)——输入引脚,控制计数器工作:开通/关闭计数——高/低电平时开通/关闭计数通道触发/重触发——上升沿产生触发或重触发OUT(输出)——输出引脚,根据设置工作方式的不同,OUT引脚可输出单个波形或连续的波形。一般是在计数过程结束(计数归0)时,引脚输出发生跳变118.1.28253/8254的工作方式方式0——计数结束中断(阶跃)方式1——可编程单稳(负脉冲,宽度可调)方式2——连续负脉冲发生器(脉宽为1)方式3——连续方波发生器方式4——软件触发选通(单脉冲,脉宽为1)方式5——硬件触发选通(单脉冲,脉宽为1)12方式0计数结束中断①②④③⑤GATEOUTCLK03124写入4写入方式0-WR①设定工作方式②设定计数初值③计数值送入计数器④计数过程⑤计数结束GATE:开关作用计数期间计数器装入新值,重新计数。写入313方式1可编程单稳脉冲①②⑤④⑥③①设定工作方式②设定计数初值③硬件启动④计数值送入计数器⑤计数过程⑥计数结束GATEOUTCLK03124写入4写入方式1-WRGATE:触发作用计数过程写入新值,不影响当前计数;GATE再次触发启动新值计数;计数过程GATE再次触发从头计数。14方式2频率发生器(分频器)03124GATEOUTCLK031240312403124-WRGATE:开关作用计数过程装入新值,不影响现行计数;从下个周期按新值计数;GATE低,禁止计数,输出高;GATE变高,重新装入计数值开始计数写入4写入方式215方式3方波发生器03124GATEOUTCLK写入4写入方式3031240312403124-WRGATE:开关作用初值N为偶数:N/2脉冲数输出高,N/2脉冲数输出低初值N为奇数:(N+1)/2脉冲数输出高,(N-1)/2脉冲数输出低16方式4软件触发选通信号GATEOUTCLK03124写入4写入方式423写入332-WRGATE:开关作用1017方式5硬件触发选通信号GATEOUTCLK03124写入方式52233写入3110-WRGATE:触发/重触发作用重触发:装计数值触发写入4触发18各种工作方式的输出波形方式0方式1方式2方式3方式4方式50N0N0N0/N110NN/2N/20/N0N01N01N01连续波形硬触发198.1.38253/8254的编程加电后8253的工作方式不确定,必须经初始化编程后才能正常工作。初始化编程过程:先写入控制字再写入计数初值方法1:各通道依次进行,方法2:先写所有通道的控制字,再写所有通道的计数初值工作中可随时读取动态的计数值:一般,先用命令将当前计数锁存在通道的锁存器中然后,可分两次读取16位的计数值8254新增的读回命令201写入方式控制字计数器读写格式工作方式数制D7D6D5D4D3D2D1D000计数器001计数器110计数器211非法00计数器锁存命令01只读/写低字节(写时高字节写0)10只读/写高字节(写时低字节写0)11先读/写低字节,后读/写高字节000方式0001方式1010方式2011方式3100方式4101方式50二进制1十进制(BCD)控制字写入控制字I/O地址(A1A0=11)212写入计数初值选择二进制时计数范围:1H~10000H初值写入0时计数最大(65536/10000H)选择十进制(BCD码)时计数范围:1~10000初值写入0时计数最大(10000)•计数初值要写入各计数通道(I/O地址)•控制字要写入同一控制口223读取计数值对8位数据线,读取16位计数值,需分两次进行由于计数随时进行,故应将当前计数先行锁存,然后再从容读取:向控制字I/O地址写入锁存命令从计数器I/O地址读取被锁存的计数值3种读取方式:只读低8位只读高8位先低后高读取计数值时要注意格式和数制238.28253在IBMPC系列机上的应用DQCLKA0A1———A0—A1—D0~D7D0~D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2+5V接至扬声器驱动器(约900Hz)PB0PB1接至8255的IRQ0(#8)(55ms)DRQ0接至DMA控制器(15us)8253+5V1.19318MHzDACK0BRD-IOR-IOWRDWRCS-T/CCS方波连续负脉冲方波248.2.1定时中断和定时刷新阅读初始化程序段,看计数器0触发55ms定时中断的作用将计数器1用作对DRAM定时刷新(15us)的触发信号,考虑如何编写初始化程序段PC机中8253的用法25计数器0:定时中断工作于方式3,计数初值:0,门控端GATE常有效输出方波频率18.206Hz=1.19318MHz/65536,周期约为55ms。OUT0接8259A的IRQ0端,用作中断请求信号。每秒钟产生18.2次中断请求,即每隔55ms(54.925493ms)申请1次中断DOS系统利用计数器0和08号中断实现日时钟的计时功能DOS系统将1CH软中断留给用户使用,即在08号中断服务中安排了1条int1ch指令26CH055mS定时中断moval,36h;计数器0为方式3(连续方波);采用二进制计数,先低后高写入计数值out43h,al;写入方式控制字moval,0;计数值为0out40h,al;写入低字节计数值out40h,al;写入高字节计数值8253初始化PC机上8253地址:40h-43h27计数器1:定时刷新DRAM需要重复不断(15uS)提出刷新请求2ms内必须刷新128次,即每15.6s刷新1次门控端常有效,可选方式2或方式3计数初值为18(频率为1.19318MHz/18周期为15.09us)28CH115uS定时刷新DRAMmoval,54h;计数器1为方式2(连续负脉冲);采用二进制计数,只写低8位计数值out43h,al;写入方式控制字moval,18;计数初值为18out41h,al;写入计数值8253初始化PC机上8253地址:40h-43h298.2.2扬声器的发声及控制计数器2的输出频率控制PC机中扬声器的音调高低,通过初始化设置可加以改变。计数器2工作于方式3(连续方波),经滤波后可得到近似的正弦波,以此驱动扬声器发声(单音)扬声器同时还受控于并行接口(8255芯片),必须使8255的输出端PB0和PB1同时输出高电平,与门才开通,扬声器才能发声,8255B口的地址为61H。inal,61h;读8255B口out61h,al;写8255B口30CH2900Hz频率设置子程序speakerprocpushax;入口参数(发声频率)moval,0b6h;方式3(连续方波)out43h,al;写入控制字popaxout42h,al;写入低8位计数值moval,ahout42h,al;写入高8位计数值retspeakerendp扬声器控制PC机上8253地址:40h-43h31开扬声器子程序speakonproc;无入口参数pushaxinal,61horal,03h;PB1PB0=11B,其他位不变out61h,alpopaxretspeakonendp扬声器控制PC机上8255地址:60h-63h32关扬声器子程序speakonproc;无入口参数pushaxinal,61handal,0fch;PB1PB0=00B,其他位不变out61h,alpopaxretspeakonendp扬声器控制PC机上8255地址:60h-63h33主程序;数据段freqdw1193180/600;600为发声频率(音调);代码段movax,freqcallspeaker;设置扬声器音调callspeakon;打开扬声器开关movah,1;等待按键int21hcallspeakoff;关闭扬声器开关扬声器控制348.2.3可编程硬件延时PC/XT/AT提供的定时中断资源采用8253/8254定时芯片08H号硬中断——8253/8254通道0产生,引向8259的IR0,8253/8254的CLK频率为1.19318MHz,每55ms发生1次INT1AH——BIOS中断功能调用(设置/读取时钟),以55ms为单位INT1CH——报时中断(用户),被嵌在08H号中断服务中PC/AT以后的PC机新增加的定时中断资源采用146818定时芯片并配有后备电池,提供周期中断(976us)和报警中断两个输出.70H号硬中断——146818周期中断输出引向8259(2)的IR9,该中断被称为实时时钟中断,每976us=1/1024s(约1mS)发生1次INT1AH——扩充了操作实时时钟的功能(子功能号2~7)INT15H——BIOS中断功能调用,以976us为单位358.2.3可编程硬件延时日时钟中断(INT1AH)——每隔55ms中断一次。可以利用它编写一段不随系统时钟频率变化的固定延时程序。由于日时钟中断的时间单位是55ms,所以无法实现更短时间的延时实时时钟中断(INT15H)——它的定时单位约为1ms(976s=1/1024s)36日时钟;延时5秒开始movah,0;子功能号,读时钟int1ah;BIOS中断adddx,90;再加5秒(5×18=90)movbx,dx;期望值送bxrepeat:int1ah;再读日时钟cmpbx,dx;与期望值比较jnerepeat;不等,则循环……;相等,延时结束可编程硬件延时每秒发生08h号中断18.2次37实时时钟;延时2ms开始movcx,0;入口参数cx.dx单位us;实际以976us为单位,否则将失败movdx,1952;延时1952us=976s×2;应为976的整数倍mov
本文标题:微机接口第08章(定时器).
链接地址:https://www.777doc.com/doc-2435769 .html