《第八章计数器定时器PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第八章计数器定时器PPT讲稿.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章计数器定时器第1页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器u 80X86系统常用接口芯片系统常用接口芯片(一)并行接口芯片u Intel 8255,有三个8位端口A,B,Cu Intel 8155,有三个端口,内带256字节RAM,两个定时器。(二)串行接口芯片u Intel 8251,同步异步串行接口。u Intel 8250,异步串行接口芯片。(三)计数定时器u Intel 8253/8254,三个通道16位定时计数器。(四)直接存取控制器(DMAC)u Intel 8237u上述接口芯片功能可由程序改变,称为可编程接口芯片。第2页,共26页,编
2、辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器82538253主要功能:主要功能:以均匀分布的时间间隔中断中断操作系统,以便切换程序;向I/O设备输出精确的定时信号,信号的周期可由程序控制;用来作为可编程波特率发生器;检测外部事件发生的频率或周期;统计外部事件发生的次数,计数结果送至计算机;在定时或计数达到编程规定的值以后,向CPU申请中断。8.1 8.1 计数器计数器/定时器概述定时器概述 微机应用系统的重要应用之一是如何用好定时/计数器。即常常需要实时钟实时钟或延时延时或对外部事件计数对外部事件计数。实现定时或延时控制的常用方法:(1)软件延时软件延时:用一个不完成任何功
3、能的程序段实现;(2)常用数字电路定时常用数字电路定时:555 (3)可编程硬件定时可编程硬件定时:8253,其定时值和定时范围可以通过 软件来确定和改变。第3页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器Intel 8253_ 三个通道三个通道 16 16位位 可设置定时计数器可设置定时计数器,可由软件设定6种工作方式。8.2 8253 8.2 8253内部结构内部结构第4页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器8253内部由三个独立通道组成,结构与工作原理完全相同。每个通道是16位计数器 可对外输入CLK进行二进制或
4、十进制(BCD)减1计数 是否计数由外引脚GATE控制。CLK 已知频率的时钟信号 外部事件发生源 16位减法计数器位减法计数器 2#最大216(0000H0000H)最小1(0001H)10#最大104(0000H0000H)最小1(0001H)每个通道有6种工作方式,由控制寄存器选择。计数器归0时由OUT引脚输出信号。控制字寄存器只能写不能读,写入的控制字将控制通道的工作方式。数据总线缓冲器用于与CPU间的信息通道。第5页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器 1.1.D7D7D0D0:数据总线,双向,三态,直接与计算机数据总线相连。2.2.CLK0
5、CLK0CLK2CLK2:计数时钟输入端,下降沿使通道减1。3.3.GATE0GATE0GATE2GATE2:门控制,输入,高电平有效或上升沿有效,有效时允许计数器对输入时钟计数。4.4.OUT0OUT0OUT2OUT2:通道输出信号,计数器到“0”时由此输出一信号,输出波形形式取决于工作方式。5.5.A1A1、A0A0:寻址3个通道的计数器 和控制寄存器(3个通道的控制寄 存器共用一个端口地址).6.RD6.RD、WRWR和和CSCS:8253的读、写 和片选信号,均为低电平有效。8.3 8253 8.3 8253的引脚功能的引脚功能第6页,共26页,编辑于2022年,星期三第第8 8章章
6、计数器计数器/定时器定时器 8253 8253与与80868086系统计算机连接系统计算机连接u说明:说明:u1.8253的数据线D7D0接8086的数据总线的低8位。u2.8253的A1和A0分别接系统的A2和A1,使用偶地址使用偶地址传递信息。u3.由74LS138,74LS30和74LS04译码选中8253。u4.8253的三个通道输入时钟由系统PCLK分频得到,频率为:2.38636/2=1.1931816MHz.u5.在IBM-PC/XT微机系统中,通道0定时OUT0接8259的IR0,通道1刷新动态存储器,通道2控制扬声器发声.第7页,共26页,编辑于2022年,星期三第第8 8章
7、章 计数器计数器/定时器定时器uM2M1M0:计数器工作方式选择计数器工作方式选择 0 0 0 方式0 0 0 1 方式1 x 1 0 方式2 x 1 1 方式3 1 0 0 方式4 1 0 1 方式5uBCD:计数器进制选择计数器进制选择 0 16位二进制计数器 1 BCD码计数器uSC1 SC0:计数器通道选择计数器通道选择 0 0 通道0 0 1 通道1 1 0 通道2 1 1 非法uRW1 RW0:计数器读写选择计数器读写选择 0 0 计数器锁存 0 1 只读写低8位 1 0 只读写高8位 1 1 先读写低8位,再读写高8位u控制字写入控制端口,各位含义如下:D0SC1D7SC0BCD
8、RW1RW0M2M1M0 8.4 8253 8.4 8253的控制字的控制字第8页,共26页,编辑于2022年,星期三82538253初始化:初始化:对一个通道对一个通道 先写入控制字先写入控制字 再写入时间常数(计数初值)再写入时间常数(计数初值)第第8 8章章 计数器计数器/定时器定时器注:注:写入控制字写入控制字后,所有控制逻辑电路复位,输出端OUT进入初始状态进入初始状态。CPU向8253写入的计数初值,要在CLK端输入一个正脉冲()后后才能被真正装入指定通道(若在此CLK下降沿之前读计数器,则其值是不定的)。之后再再次次输入时钟脉冲(CLK)才开始计数,且每次在脉冲的下降沿减1计数。
9、即:写入计数初值后,经过一个即:写入计数初值后,经过一个CLKCLK,82538253才开始计数。才开始计数。第9页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器(1)方式)方式0计数结束产生中断计数结束产生中断(2 2)方式)方式11可重复触发单稳触发器可重复触发单稳触发器(3 3)方式)方式22分频器分频器(频率发生器)频率发生器)(4 4)方式)方式33方波发生器方波发生器(连续)(连续)(5 5)方式)方式44软件触发选通软件触发选通(6 6)方式)方式55硬件触发选通硬件触发选通 8.5 8253 8.5 8253的工作方式的工作方式第10页,共26页
10、,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器(1)方式0计数结束产生中断 控制字(CW)写入后OUT即变为低电平,当计数器为0时,输出OUT变为高电平。计数初值写入后在下一个CLK下降沿才送入计数器,因此计数值为N+1。当GATE变为低电平时计数停止,再变为高电平时计数继续进行。若计数过程中重新送入初值,则按新值重新计数。计数到零后,不能自动恢复计数初值,OUT端保持高电平。再次写入计数初值,才又开始计数。第11页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器例:例:若8253的地址为04H07H,要使计数器工作在方式0,仅用8位二进制数
11、,计数初值为128,初始化程序为:MOV MOVAL AL,50H50H OUT OUT07H07H,ALAL MOV MOVAL AL,80H80H OUT OUT05H05H,ALALD0SC1D7SC0BCDRW1RW0M2M1M0D01D70001000第12页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器(2)方式1可重复触发单稳触发器 写入CW后OUT变为高电平,GATE上升沿触发后,OUT变为低并开始计数,归零时OUT变为高电平。GATE再来一次上升沿使OUT为低,计数器以初值重新计数。计数过程中,再次给通道写入时间常数,不影响现行操作过程,GAT
12、E再次触发后才按新的时间常数操作。计数过程中,GATE触发沿提前到来,在下一个CLK的下降沿,计数器开始重新计数,这将使输出单稳脉冲比原先设定的计数值加宽。可重复触发可重复触发 当计数归零后,不用再次送计数值,只要给它触发脉冲,即可产生一个同样宽度的单稳脉冲输出。第13页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器(3)方式2分频器(频率发生器)写入CW后OUT为高电平,写入时间常数后,下一CLK开始计数,减减到到1时OUT变低,经过一个CLK后 OUT变高,计数重新开始。GATE=1计数进行,GATE=0计数停止,且下一个CLK计数器重新赋初值,GATE变为
13、高电平,计数重新开始。计数期间送入新值,本周期继续进行,下一个周期按新值计数操作。不用重复置数。计数器能够不用重复置数。计数器能够连续连续工作,输出工作,输出OUTOUT是输入是输入CLKCLK的的n(n(初值)分频。初值)分频。第14页,共26页,编辑于2022年,星期三软件同步:软件同步:计数器写入控制字和计数初值后,如GATE一直处于高电平,那么,在下一个脉冲开始计数器计数。通过写入计数初值使计数器同步,称为。硬件同步:硬件同步:由前述知,门控信号可实现计数器的同步,称为硬件同步第第8 8章章 计数器计数器/定时器定时器第15页,共26页,编辑于2022年,星期三第第8 8章章 计数器计
14、数器/定时器定时器(4)方式3方波发生器(连续)(连续)写入CW后OUT变为高电平,输入时间常数后,下一个时钟开始计数,计到一半时输出变为低电平,计到终值时重新变为高电平,并开始下一次计数过程。并开始下一次计数过程。若N为偶数,高低电平持续时间相等;若为奇数,则高电平持续时间为(N+1)/2,低电平持续时间为(N-1)/2。GATE=1计数进行。在计数过程中若GATE=0,计数停止且OUT为高,计数器重新赋初值,GATE回到高时计数重新开始。计数期间送入新值,本周期继续进行,下一个周期按新值计数。第16页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器(5)方式4
15、软件触发选通写入CW后OUT为高电平,输入时间常数后,下一个CLK开始计数,计数器为0时,输出一个周期负脉冲,并停止操作。GATE=1允许计数,GATE=0禁止计数。计数期间送入新的时间常数,则下一个时钟按新值重新计数。(6)方式5硬件触发选通 写入CW后OUT为高电平,输入时间常数后由GATE上升沿启动计数。计数为0时输出一个时钟的负脉冲,并停止操作。计数过程中,若GATE又来一个上升沿,则下一个时钟计数器重新赋值计数。计数过程中写入时间常数,当前周期不受影响,在下一个 GATE上升沿启动新值计数。计数过程由软件将计数初值装入通道来触发计数过程由软件将计数初值装入通道来触发第17页,共26页
16、,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器 8253 8253有有6 6种不同的工作方式。小结如下:种不同的工作方式。小结如下:方式方式0 0 写入写入CWCW后,输出即变低,计数结束输出为高,常用该输出信号作为中断源。其余后,输出即变低,计数结束输出为高,常用该输出信号作为中断源。其余5 5种方式写入种方式写入CWCW后,输出均变高。后,输出均变高。方式方式0 0可用来实现定时或对外部事件进行计数。可用来实现定时或对外部事件进行计数。方式方式1 1用来产生单脉冲。用来产生单脉冲。方式方式2 2用来产生序列负脉冲,每个负脉冲的宽度与用来产生序列负脉冲,每个负脉冲的宽度
17、与CLKCLK的周期相同。的周期相同。方式方式3 3用于产生连续的方波。方式用于产生连续的方波。方式2 2和方式和方式3 3都实现对都实现对CLKCLK的的n n分频。分频。方式方式4 4和方式和方式5 5的波形相同,都是计数器归的波形相同,都是计数器归0 0后的后的1 1个负脉冲,宽度为个负脉冲,宽度为1 1个个CLKCLK。方式方式2 2、4 4、5 5的输出波形是相同的,都是宽度为一个的输出波形是相同的,都是宽度为一个CLKCLK周期的负脉冲。周期的负脉冲。但方式2是连续的,方式4是由软件(设置初值)触发启动,而方式5由硬件(门控脉冲)触发启动。方式方式1 1、5 5 触发计数方式相同,
18、但输出波形不同。触发计数方式相同,但输出波形不同。方式1为输出n个CLK脉冲周期的负脉冲(计数过程中输出为低),而方式5输出的是宽度为1个CLK脉冲周期的负脉冲(计数过程输出为高)。任一种方式,只有在写入计数值后才能开始计数,方式0、2、3和4都是在写入计数值后,计数过程就开始了,而方式1和5需要外部触发启动,才开始计数。第18页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器u(一)BIOS对8253初始化u1.对计数器0的初始化uMOV AL,36HuOUT 46H,ALuMOV AL,00HuOUT 40H,ALuOUT 40H,ALu说明:u(1)计数器0
19、工作于方波发生器方式,对CLK(1.1931816MHz)进行65536(216)分频。u(2)计数器0的输出端OUT0接8259的IR0,每次归0产生一次中断请求,中断号由BIOS设置为8。u(3)中断时间间隔为54.925ms,每秒钟来18.2次中断。u(4)通道0的时间间隔是计算机系统时标基础。u2.对计数器1的初始化uMOV AL,54HuOUT 46H,ALuMOV AL,18(18分频)uOUT 42H,ALu(1)通道1给DMA控制器提供时钟。u(2)输出频率为66.288KHz.8.6 8253 8.6 8253应用举例应用举例第19页,共26页,编辑于2022年,星期三第第8
20、 8章章 计数器计数器/定时器定时器u(一)(一)BIOS对对8253初始化初始化u3.对计数器2的初始化和接通喇叭uMOV AL,0B6HuOUT 46H,ALuMOV AX,533HuOUT 44H,ALuMOV AL,AHuOUT 44H,ALuIN AL,62H;读入8255的PB口uMOV AH,AL;保护原值uOR AL,03H;置1 PB1和PB0uOUT 62H,AL;输出。u说明:说明:u(1)定时器定时器2 2工作在方波发生器方式,驱动扬声器发声。工作在方波发生器方式,驱动扬声器发声。u(2 2)发声频率为)发声频率为896896HzHzu(3 3)扬声器发声还受)扬声器发
21、声还受82558255的的PB0PB0和和PB1PB1控制。控制。第20页,共26页,编辑于2022年,星期三u(二)8253的定时功能及其应用u例:将8253的计数器1作为5ms定时器,设输入时钟频率为200kHz,试编写8253的初始化程序。u(1)计数初值计数初值N计算计算已知输入时钟CLK频率为200kHz,则时钟周期为T=1/200kHZ=5us,于是计数初值N为:N=5ms/T=5ms/5s=1000。u(2)确定控制字确定控制字按题意选计数器1,按BCD码计数,工作于方式0,由于计数初值N=1000,控制字D5D4应为11,8253的控制字为:01110001B=71H。u(3)
22、选择选择8253各端口地址各端口地址设计数器1的端口地址为3F82H,控制口地址为3F86H。u(4)初始化程序如下初始化程序如下 MOV AL,71H ;控制字控制字 MOV DX,3F86H ;控制口地址控制口地址 OUT DX,AL ;控制字送控制字送8253 控制寄存器控制寄存器 MOV DX,3F82H ;计数器计数器1地址地址 MOV AL,00 ;计数初值计数初值 N=1000的低的低8位写入计数器位写入计数器1 OUT DX,AL MOV AL,10H ;将将N的高的高8位写位写 入计数器入计数器1 OUT DX,AL第第8 8章章 计数器计数器/定时器定时器第21页,共26页
23、,编辑于2022年,星期三u(三)8253的计数功能及其应用u例:8086系统中有一片8253芯片,利用计数通道2对外部事件计数,计满360次经8259的IR1向CPU发出中断信号,硬件电路如图所示。计数器2口地址为05DH,控制口地址为05FH。试编写8253的初始化程序。u(1)外部事件作为计数脉冲从通道2的CLK2进入,采用方式0工作,计数常数为360D。当计满360次时从OUT2端输出一个正跳变信号作为中断申请信号送入8259A的IR1输入端,由8259向CPU发出中断申请。u(2)初始化编程初始化编程 计数通道2工作于方式0,计数初值为360D=168H,采用二进制计数,则控制字为:
24、10110000B=B0H。u(3)计数通道计数通道2初始化程序初始化程序 MOV AL,0B0H ;通道通道2的控制字的控制字 OUT 5FH,AL ;写入控制器写入控制器 MOV AL,68H ;计数初值的低计数初值的低8位位 OUT 5DH,AL ;写入计数通道写入计数通道2 MOV AL,01H ;计数初值的高计数初值的高8位位 OUT 5DH,AL ;写入计数通道写入计数通道2第第8 8章章 计数器计数器/定时器定时器第22页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器u(四)8253应用例:航空发动机数字控制系统中采用8253测速的实例。硬件电路如
25、下图。对传感器输出的转速信号经过衰减、滤波和光电耦合处理,再经过整形电路送到8253计数器,进行测量。被测转子转速n为011156转/分,发动机每转对应传感器输出300个脉冲。基基本本测测量量原原理理是是:测量D个(D值根据当时实际转速范围选择)传感器输出脉冲CLKCLK1 1所占有的时间为多少个(设为X个,待测)标准时钟周期PCLKPCLK(设为Tr,单位us),从而算出实际转速:即:(转(转/分)分)CLK1D3个计数器工作在:方式方式0 0、1 1、0 0通道1计数D个CLK1时,通道2计数X个PCLK。第23页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时
26、器CLK1D3个计数器工作在:方式方式0 0、1 1、0 0通道1计数D个CLK1时,通道2计数X个PCLK。测量过程时序如下:u 置通道0计数初值为1,通道1计数初值为D,通道2的为0000H(216)。u 用OUTOUT0 0的下降沿(OUTOUT0 0上升沿上升沿)做触发GATEGATE1 1,使通道1开始对CLK1计数;u 同时,OUTOUT1 1反相后使GATEGATE2 2为高电平,允许通道2对PCLKPCLK(周期Tr)计数。u 在通道1计满D个脉冲后,OUTOUT1 1反相后输出低电平,使计数器2停止计数。u 此时CPU可以读出计数器2中的计数值,算出被测信号的转速。第24页,
27、共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器 设设8253端口地址端口地址为为280H、282H、284H和和286H,主要程序片段:主要程序片段:;主程序中对;主程序中对8253初始化初始化INIT_C:MOV DX,286H ;控制端口地址为控制端口地址为286H MOV AL,01010010B ;计数器计数器1:方式:方式1;读;读/写低字节写低字节.OUT DX,AL ;送方式控制字到控制寄存器送方式控制字到控制寄存器 MOV AL,10110000B ;计数器计数器2:方式:方式0;读;读/写双字节写双字节.OUT DX,AL MOV AL,0001
28、0000B ;计数器计数器0:方式:方式0;读;读/写低字节写低字节.OUT DX,ALINIT_D:MOV DX,282H ;计数器计数器1地址地址 MOV AL,20 OUT DX,AL ;写入计数初值写入计数初值D=20到计数器到计数器1 INC DX INC DX ;计数器计数器2地址地址 MOV AL,0 OUT DX,AL ;写入低写入低8位计数值到计数器位计数值到计数器2 OUT DX,AL ;写入高写入高8位计数值到计数器位计数值到计数器2 MOV DX,280H ;计数器计数器0地址地址 MOV AL,01H OUT DX,AL ;写入写入1到计数器到计数器0、启动测量过程、
29、启动测量过程第25页,共26页,编辑于2022年,星期三第第8 8章章 计数器计数器/定时器定时器;中断服务程序中,读取计数器中断服务程序中,读取计数器2的数据,计算转速的数据,计算转速IN_DATA:MOV AL,10000000B MOV DX,286H OUT DX,AL;锁存计数器锁存计数器2 MOV DX,284H ;读计数器读计数器2的内容:的内容:10000H-X IN AL,DX MOV AH,AL IN AL,DX XCHG AL,AH NEG AX;AX=X ;计算转速计算转速nu 通道通道1 1计数计数D D个脉冲后,个脉冲后,OUT1OUT1的上升沿申请中断。的上升沿申请中断。u 当中断到来时,进入中断服务子程序。当中断到来时,进入中断服务子程序。u 可以用可以用CPUCPU暂停来模拟暂停来模拟CPUCPU的主程序,只有中断到来时才脱离暂停。的主程序,只有中断到来时才脱离暂停。AA:HLT MOVAH,4CH INT21H 第26页,共26页,编辑于2022年,星期三
限制150内