您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 3.2 8253定时器_计数器
PC机接口芯片的连接图3.2定时/计数器3.2.1定时技术概述定时器:事先设定一个时间长度,当“定时时间到”时,向CPU输出触发信号计数器:统计某事件发生的次数。当累计的次数达到事先设定的次数时,输出触发信号。计算机定时控制的应用场合①定时数据采集:对被控参数的瞬间值进行检测,并输入计算机;②实时决策:对采集到的参数进行比较分析,并按相应的控制规律决定下一步的控制过程;③实时控制:根据决策,适时地对控制机构发出控制信号。计算机中采用的定时方式(1)软件定时(2)硬件定时:单稳态定时器(RC电路)(3)可编程定时/计数器:Intel8253定时/计数器3.2.28253工作原理1.8253主要功能①一片上有3个独立的16位计数器通道,最大计数范围为0~65535;②每个计数器都可以按照二进制或二-十进制(BCD码)计数;③每个计数器的计数速度可高达2MHz;④每个通道有6种工作方式,可通过程序设置来改变;⑤所有的输入和输出都与TTL兼容。2.内部结构及引脚功能8253内部可分为6个模块,如图所示。计数器0#计数器1#计数器2#数据缓冲读/写逻辑控制字寄存器DB7~DB0A0A1WRRDCSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2内部总线与CPU接口的信号16位计数初值寄存器16位减1计数器16位当前计数值锁存器&CLKGATEOUTMSBLSBLSBMSB(减1至0时)装入/读出初值锁存后读出当前值计数器内部结构计数初值存于初值寄存器;在计数过程中,减1计数器的值不断递减,而初值寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值(1)8253的内部寄存器计数器8253有3个计数通道,每个通道有一个16位计数器;工作前,CPU先将一个初值写入;工作时,每来一个CLKx脉冲,对应的计数值-1;当计数值减到0时,OUTx发出信号脉冲。控制字寄存器8253的各计数通道都可按6种方式工作;控制字用于选择工作方式,初始化时由CPU写入;地址A1A0寄存器操作说明00计数器0#读、写初值01计数器1#读、写初值10计数器2#读、写初值11控制寄存器写控制字D7~D0OUT0GATE0A0A1OUT1GATE1CSOUT2GATE2WRRD地址译码D7~D0A0A1A2~A9IO/MIOWIOR8088CPU8253CKL0CKL1CKL21.19MHz+5V+5V来自一个控制电路放大蜂鸣器至8259的IRQ055ms方波至DRAM刷新40H~43H(2)PC/XT机中8253与8088的连接I/O地址:控制寄存器43H计数器0~2#的初值寄存器40H~42H3.8253的控制寄存器控制字寄存器存储的信息控制每个计数器的工作方式和计数方式,控制字寄存器的信息只能写入,不能读出。3.2.38253的工作方式两个周期:时钟周期:CLK周期输出周期:OUT输出波形周期6种工作方式的区别:启动计数方式不同(软件、硬件)计数结束方式不同Gate的作用不同方式0WR启动,单次计数写入初值,立即开始计数;计数期间,GATE=0暂停;再次写入初值又开始计数。在计数过程中,若改变初值,计数器将重新开始计数;CLKWRN=5OUT54321GATE0N=443210WR的上升沿启动计数计数完成,停止计数再次启动计数GATE=0,暂停计数GATE=1,恢复计数MOVAL,00010001BOUT43H,ALMOVAL,5OUT40H,AL……MOVAL,4OUT40H,AL单次计数方式1GATE启动,单次计数写入初值,由GATE=1启动计数;计数期间,GATE=0不会停止;GATE上升沿,从初值开始重新计数在计数过程中,若改变初值,计数器不受影响。若再次由GATE触发,则以新的计数值开始计数(即计数值是下次有效)。CLKWRN=5GATEOUT54321054321启动计数再次启动计数MOVAL,00010010BOUT43H,ALMOVAL,5OUT40H,AL程序可控单拍脉冲方式2WR启动,自动重复计数写入初值,启动计数;计数完成,又重新从初值开始计数;GATE=0,暂停计数不用重新设置计数初值,就能够连续计数,输出固定频率的脉冲;MOVAL,00010100BOUT43H,ALMOVAL,5OUT40H,ALCLKWRN=5GATEOUT5432154321启动计数再次启动计数54暂停计数速率发生器方式3WR启动,自动重复方波计数写入初值,启动计数;计数完成,又重新从初值开始计数,计数期间,前半期OUT=1,后半期OUT=0;计数期间,GATE=0暂停计数MOVAL,00010110BOUT43H,ALMOVAL,5OUT40H,ALCLKWRN=5GATEOUT5432154321启动计数再次启动计数54暂停计数方波速率发生器方式4WR启动,单次计数(一次性,不重载)写入初值,启动计数;计数完成,停止计数,OUT一直为高,除非重新送初值计数期间,GATE=0,暂停计数。GATE=1,从初值开始计数(不是恢复计数)MOVAL,00011000BOUT43H,ALMOVAL,4OUT40H,AL软件触发选通方式5GATE启动,单次计数写入初值,暂不计数;GATE上升沿启动计数;计数完成,OUT变低1CLK后又变为高电平,停止计数计数期间,由GATE上升沿加载初值新的GATE上升沿启动新一次计数。MOVAL,00011010BOUT43H,ALMOVAL,4OUT40H,AL硬件触发选通6种工作方式的比较方式功能输出波形输出波形0单次计数写入初值后,OUT端变低,经过N+1个CLK后,OUT变高(单次)软件触发的单次负脉冲1可编程单稳态触发器输出宽度为N个时钟周期的负脉冲(单次)硬件触发的单次负脉冲2频率发生器输出宽度为1个时钟周期的负脉冲(重复波形)自动触发连续的脉冲波3方波发生器N为偶数时占空比为1/2;N为奇数时输出(N+1)/2个正脉冲,(N-1)/2个负脉冲(重复波形)自动触发连续的方波4软件触发选通写入初值后,经过N个时钟周期,OUT端变低1个时钟周期(单次)软件触发的单次单拍负脉冲5硬件触发选通门控触发后,经过N个时钟周期,OUT端变低1个时钟周期(单次)硬件触发的单次单拍负脉冲6种工作方式的比较返回触发方式:输出波形:方式1和方式5为硬件触发;其余为软件触发方式2和方式3输出重复波形其余为单次波形方式0、1基本相同方式4、5相同四、8253初始化•分2步:(1)向命令寄存器写入方式命令–以选择计数器(3个计数器之一)–确定工作方式(6种方式之一)–指定计数器计数初值的长度和装入顺序以及计数值的码制(BCD或二进制码)。(2)向已选定的计数器按方式命令的要求写入计数初值。计数初值n=时钟频率fc/输出频率fout=定时时间Tout/时钟脉冲周期Tc五、8253的编程举例•1)初始化1)写入控制字2)按控制字要求写入计数初值例1:设三个计数器的端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器0,工作模式2,仅使用低8位,初值为100,计数值使用二进制MOVAL,14HOUT73H,AL;设定方式MOVAL,100OUT70H,AL;置初值例2:设三个计数器的端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器1,工作模式1,使用16位,初值为1234,计数值使用BCD。MOVAL,73HOUT73H,AL;设定方式MOVAX,1234HOUT71H,AL;置初值低位MOVAL,AHOUT71H,AL;置初值高位8253的编程命令•2)读计数器命令1)发出锁存命令,使当前计数值锁存在OL中2)读OL,获得当前计数值例:设8253三个计数器的端口地址为70H、71H、72H,控制寄存器端口地址73H。读出计数器0的当前计数值,放在BX中MOVAL,0HOUT73H,AL;发锁存命令INAL,70HMOVBL,AL;读低位INAL,70HMOVBH,AL;读高位六、8253的应用1.PC机中8253的应用计数器0:向系统日历时钟提供定时中断模式3,控制字36H,计数器初始值0计数器1:动态RAM刷新模式2,控制字54H,计数器初始值18(12H)计数器2:控制扬声器发声模式3,控制字B6H,计数器初始值1331(533H)PC机中,8253的端口地址为40H~43H2.扬声器控制设计一个程序,使扬声器发出600Hz频率的声音,按下任意键声音停止PC机的发声系统以计数器2为核心。CLK2的输入频率1.19MHz,改变计数器初值可以由OUT2得到不同频率的方波输出对于600Hz,计数初值1.19MHz/600Hz=1983发声系统受8255芯片B口的两个输出端线PB0、PB1的控制:PB0为1,使GATE2为1,计数器2能正常计数PB1为1,打开输出控制门PC机扬声器发声控制代码CODESEGMENTASSUMECS:CODESTART:INAL,61H;PB0,1置1ORAL,03HOUT61H,ALMOVAL,0B7H;初始化定时器2OUT43H,ALMOVAX,1983;写计数初值OUT42H,ALMOVAL,AHOUT42,ALMOVAH,01H;等待按键INT21HINAl,61H;恢复PB0,1ANDAL,0FCHOUT61H,ALMOVAH,4CH;退出INT21HCODEENDSENDSTARTvoidmain(){_asm{inal,0x61oral,03out0x61,almoval,0xb7out0x43,almovax,1983out0x42,almoval,ahout0x42,almovah,01int0x21inal,0x61andal,0xfcout0x61,al}}3PC机在启动时,对8253的设置程序如下:MOVAL,00110110BOUT43H,ALMOVAL,OOUT40H,ALOUT40H,AL试分析8253的工作情况。控制字分析:00110110B设置计数器0写入16位初值方式3,方波发生初值为二进制数初值分析:0000H,写入后,减1得0FFFFH,再减65535次才输出一次方波。方波周期:高、低电平期均为32768次CLK,CLK的周期=1/(1.19×106)秒∴方波周期=65536×CLK的周期=55.072毫秒≈55毫秒4已知PC机中,8253的OUT0接到8259的IRQ0,即:每55ms发出一次中断。试编程,截取此中断,得到一个秒计数器。注:IRQ0的中断类型号为9.5Windows定时器m_nTimer=SetTimer(1,1000,0);KillTimer(m_nTimer)voidCTimerView::OnTimer(UINTnIDEvent){switch(nIDEvent){case1:MessageBeep(0xFFFFFFFF);//Beepbreak;}CView::OnTimer(nIDEvent);}
本文标题:3.2 8253定时器_计数器
链接地址:https://www.777doc.com/doc-3123782 .html