资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
微机原理与接口技术第7章控制器接口ppt课件Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望7.3 定时定时/计数器计数器7.3.1 定时定时/计数器工作原理计数器工作原理 7.3.2 可编程定时可编程定时/计数器计数器82537.3.3 8253应用例应用例计数器计数器/定时器工作原理定时器工作原理 计数器计数器/定时器定时器是一个具有可编程计数功能的专用芯片。是一个具有可编程计数功能的专用芯片。计数器计数器/定时器的结构定时器的结构:D7 D0触发触发脉冲信号脉冲信号(CLK)门控信号门控信号(GATE)计数状态信号计数状态信号(OUT)计数初值寄存器计数初值寄存器D7 D0减减1计数器计数器计数值锁存器计数值锁存器“写写”“读读”计数功能实现过程计数功能实现过程: 在在预预先先设设置置好好计计数数初初值值后后, 可可以以对对外外部部给给的的触触发发脉脉冲冲做做减减“1”计计数数, 当计数值减为当计数值减为“0”时时, 输出一个输出一个“计数到计数到”的信号。的信号。定时定时/计数器的特点计数器的特点触发计数减触发计数减1功能的信号必须是功能的信号必须是触发脉冲信号触发脉冲信号。计计数数器器的的触触发发脉脉冲冲信信号号可可以以是是周周期期恒恒定定, 也也可可以以是是周周期期随随意意, 仅仅当当计计数数值减到值减到“0”时时, 输出一个输出一个计数结束信号计数结束信号。定定时时器器的的触触发发脉脉冲冲信信号号必必须须是是周周期期恒恒定定的的时时钟钟信信号号, 在在计计数数值值减减到到“0”时时, 输输出出一一个个计计数数为为“0”的的信信号号;并并把把计计数数初初值值自自动动重重新新装装入入, 再继续重复做减再继续重复做减“1”计数计数, 从而输出一个恒定的从而输出一个恒定的周期性信号周期性信号。定时定时/计数器的应用:计数器的应用:在在多任务系统多任务系统中产生定时中断信号中产生定时中断信号, 实现多任务程序的实现多任务程序的分时切换分时切换;在在定定时时数数据据采采集集, 或或者者实实时时控控制制系系统统中中, 产产生生精精确确的的对对外外部部事事件件的的计计数数信号信号, 或或定时控制信号定时控制信号; 常做一个可编程的常做一个可编程的波特率波特率(时钟)(时钟)发生器发生器使用。使用。定时定时/ /计数器计数器8253Intel 8253是一个广泛用于微机控制的是一个广泛用于微机控制的可编程定时可编程定时/计数器计数器。8253有有3个个独独立立的的16位位计计数数器器通通道道, 既既可可以以做做16位位计计数数器器, 也可以做也可以做8位计数器位计数器使用。使用。8253的每个计数器可以选择的每个计数器可以选择 2#, 或者或者10# (BCD码)计数。码)计数。8253的每个计数器都可以编程设定的每个计数器都可以编程设定6种工作方式种工作方式之一。之一。8253的计数器最高计数速率可达的计数器最高计数速率可达2.6MHz。8253的内部结构的内部结构数据总线数据总线缓冲器缓冲器D7D0计数器计数器0控制寄存器控制寄存器计数器计数器1计数器计数器2初值寄存器初值寄存器输出锁存器输出锁存器减减1计数器计数器CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2读读/写写控制控制逻辑逻辑RDWRCSA1A08253的引脚性能的引脚性能 D7D0:8位、双向、三态数据线位、双向、三态数据线, 直接和系统数据总线连接。直接和系统数据总线连接。 CS:片选信号:片选信号, 低电平有效。低电平有效。 RD, WR:读信号:读信号, 写信号写信号, 低电平时有效。低电平时有效。 A1, A0:8253端口选择线。端口选择线。0010分别选择计数器分别选择计数器02, 11选择控制选择控制端口。端口。 CLK0CLK2:分别是计数器:分别是计数器02的计数脉冲输入端的计数脉冲输入端, 做计数速率的做计数速率的控制。控制。 GATE0GATE2:分别是计数器:分别是计数器02门控输入端门控输入端, 做计数允许做计数允许/禁止禁止的控制的控制 。 OUT0OUT2:分别是计数器:分别是计数器02的输出端的输出端, 做计数器计数状态的输做计数器计数状态的输出。出。8253操作的控制逻辑操作的控制逻辑CSRDWRA1A0操作说明操作说明00100读计数器读计数器0(计数值)(计数值)00101读计数器读计数器1(计数值)(计数值)00110读计数器读计数器2(计数值)(计数值)00111非法状态非法状态01000写计数器写计数器0(计数初值)(计数初值)01001写计数器写计数器1(计数初值)(计数初值)01010写计数器写计数器2 (计数初值)(计数初值)01011写控制字写控制字8253的控制字的控制字 D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RW1 RW0 M2 M1 M0 BCD计数器选择计数器选择0 0: 计数器计数器00 1: 计数器计数器11 0: 计数器计数器21 1: 无意义无意义读读/写方法写方法 0 0:锁存计数值:锁存计数值 0 1:只读:只读/写低写低8位位 1 0:只读:只读/写高写高8位位 1 1:读:读/写写16位位 ( 先低先低8位后高位后高8位位) 工作方式选择工作方式选择0 0 0:方式:方式00 0 1:方式:方式11 0:方式:方式21 1:方式:方式31 0 0:方式:方式41 0 1:方式:方式5数制选择数制选择0:二进制:二进制1:BCD码码8253的初始化设置的初始化设置8253计数器的初始化设置:计数器的初始化设置:1. 设置设置控制字控制字2. 设置设置计数初值计数初值N8253的的计计数数器器设设置置之之后后, 当当检检测测到到门门控控(GATE)信信号号有效时有效时, 计数器按照其计数器按照其设置设置工作。工作。控制字控制字“写写”到控制端口到控制端口计数初值计数初值N “写写”到对应的计数器端口到对应的计数器端口8253的计数初值的计数初值8253计数初值计数初值N的计算:的计算: N = CLK输入频率输入频率/OUT输出频率输出频率设置计数初值设置计数初值N要符合控制字的计数器位数规定。要符合控制字的计数器位数规定。若用低位字节若用低位字节, 或高位字节计数或高位字节计数, 8位计数初值一次写。位计数初值一次写。若若用用高高、低低位位字字节节计计数数, 16位位计计数数初初值值分分两两次次写写入入, 先先写写低低字字节节, 后后写高字节。写高字节。计数初值计数初值0是计数器所能容纳的是计数器所能容纳的最大计数值最大计数值。8位位计计数数初初值值0, 若若做做2#计计数数值值是是256(100H), 若若做做10#(BCD码码)计计数值是数值是100;16位位计计数数初初值值0, 若若做做2#计计数数值值是是65536(10000H), 若若做做10#(BCD码)计数值是码)计数值是10000 。 8253的读操作编程的读操作编程读取计数器的当前值读取计数器的当前值, 可以可以动态动态了解计数情况。了解计数情况。 8253计数器的读操作有计数器的读操作有直接读直接读和和锁存读锁存读两种。两种。直直接接读读操操作作:计计数数输输出出寄寄存存器器随随减减1计计数数寄寄存存器器一一直直在在动动态态变变化化, 直直接接读得不到稳定值读得不到稳定值, 不太可靠(一般不用)。不太可靠(一般不用)。锁锁存存读读操操作作:先先用用锁锁存存命命令令(控控制制字字D5D4为为00)把把计计数数值值锁锁存存到到计计数数输出寄存器输出寄存器, 然后再读。当计数值读走后然后再读。当计数值读走后, 锁存功能自动失锁。锁存功能自动失锁。 例如例如, (8253端口地址端口地址40H43H)MOVAL, 40H;计数器计数器1的锁存命令的锁存命令OUT43H, ALINAL, 41H;读低;读低8位计数值位计数值MOVCL, ALINAL, 41H;读高;读高8位计数值位计数值MOVCH, AL ;CX中为读取的中为读取的16位计数值位计数值8253的工作方式的工作方式 8253有六种工作方式:有六种工作方式:方式方式0 计数结束产生中断计数结束产生中断 方式方式1 可重复触发的单稳态(脉冲)触发器可重复触发的单稳态(脉冲)触发器 方式方式2 频率发生器(分频器)频率发生器(分频器) 方式方式3 方波频率发生器方波频率发生器 方式方式4 软件触发选通信号发生器软件触发选通信号发生器 方式方式5 硬件(硬件(GATE)触发的选通信号发生器)触发的选通信号发生器六种工作方式的主要区别:六种工作方式的主要区别:输出波形不同;输出波形不同;启动计数的触发方式不同;启动计数的触发方式不同;门控(门控(GATE)信号对计数过程的影响不同;)信号对计数过程的影响不同;计数过程中计数过程中, 修改计数初值对计数过程的影响不同。修改计数初值对计数过程的影响不同。8253方式方式0方式方式5 的输出波形的输出波形 (正常计数的(正常计数的OUT状态)状态) 未定态未定态 计数初态计数初态 计数态计数态 结束态结束态/计数态计数态方式方式0 OUT 减减1计数器的值计数器的值CLK写控制字写控制字 写写N=4WR 4 3 2 1 。方式方式1 OUT方式方式2 OUT方式方式3 OUT方式方式4/5 OUT每一种工作方式不仅与每一种工作方式不仅与计数初值计数初值有关有关, 而且受而且受CLK信号和信号和GATE信号信号控制。控制。CLK信号确定信号确定计数减计数减1速率速率, GATE信号信号允许允许/禁止计数禁止计数,或者,或者启动计数启动计数。 写写计计数数初初值值之之后后, 并并不不马马上上开开始始计计数数, 只只有有检检测测到到GATE信信号号有有效效, 经经过一个过一个CLK周期周期, 把计数初值送到减把计数初值送到减1计数器计数器, 才开始做减才开始做减1操作。操作。OUT端端随随着着工工作作方方式式的的不不同同和和当当前前计计数数状状态态的的不不同同, 一一定定有有电电平平输输出出变变化化。OUT的的输输出出波波形形在在写写控控制制字字之之前前为为未未定定态态, 在在写写了了控控制制字字之之后后到计数之前为到计数之前为计数初态计数初态, 再之后有再之后有计数态计数态、暂停态暂停态、结束态结束态等。等。对对于于给给定定的的工工作作方方式式, 门门控控信信号号GATE的的触触发发条条件件是是有有具具体体规规定定的的, 或或电平触发电平触发, 或或边沿触发边沿触发, 或两者均可。或两者均可。8253六种方式的共同点六种方式的共同点门控信号门控信号GATE的功能的功能 方式方式低电平或下降沿低电平或下降沿上升沿上升沿高电平高电平方式方式0 禁止计数禁止计数 允许计数允许计数方式方式1 开始计数开始计数 方式方式2 禁止计数禁止计数 开始计数开始计数 允许计数允许计数方式方式3 禁止计数禁止计数 开始计数开始计数 允许计数允许计数方式方式4 禁止计数禁止计数 允许计数允许计数方式方式5 开始计数开始计数 8253六种方式的不同点六种方式的不同点方式方式0和方式和方式4软件触发软件触发(写入计数初值)启动计数(写入计数初值)启动计数, 无自动重装计数值功能。它们无自动重装计数值功能。它们的区别:的区别:方式方式0在计数过程中输出在计数过程中输出低电平低电平, 计数结束时变为计数结束时变为高电平高电平, 并并一直保持;一直保持;方式方式4在计数过程中输出为在计数过程中输出为高电平高电平, 计数结束时输出一个宽计数结束时输出一个宽度为度为一个一个TCLK的负脉冲的负脉冲, 以后又保持以后又保持高电平高电平。方式方式1和方式和方式5硬件触发硬件触发(GATE上升沿)启动计数。它们的区别:上升沿)启动计数。它们的区别:方式方式1在在计数过程计数过程中中输出一个宽度为输出一个宽度为计数初值乘以计数初值乘以TCLK的单相负脉冲;的单相负脉冲;方式方式5在在计数结束计数结束后后输出一个宽度为输出一个宽度为一个一个TCLK的负脉冲。的负脉冲。方式方式2和方式和方式3具有具有自动重装计数值自动重装计数值的能力的能力, 是频率发生器是频率发生器(分频器分频器)。它们的区别:。它们的区别:方式方式2输出占空比为输出占空比为(n-1):1的矩形波信号;的矩形波信号;方式方式3输出占空比为输出占空比为(n/2) : (n/2)的的方波方波信号。信号。8253应用例应用例1【例【例7.8】 8253的的2个计数器的串接应用。个计数器的串接应用。计数脉冲源为计数脉冲源为200kHz。计数器计数器0的输出为的输出为连续方波连续方波,方式方式3。计数器计数器1的输出为的输出为连续单拍负脉冲连续单拍负脉冲, 方式方式2。计数器计数器0计数初值:计数初值:200000 /400=500(01F4H)。计数器计数器1计数器初值:计数器初值:400 /20=20(14H)。 8253端口地址为端口地址为30H33H。CLK0GATE08253 GATE1OUT0CLK1OUT1(200KHz)计数脉冲源计数脉冲源+5V(20Hz)(400Hz)例例7.8 程序程序 MOVAL, 36H;计数器计数器0方式方式3, 16位二进制计数位二进制计数OUT33H, ALMOVAL, 54H ;计数器计数器1方式方式2, 8位二进制计数位二进制计数OUT33H, ALMOVAX, 500 ;计数器;计数器0计数初值计数初值500OUT30H , AL ;写计数器;写计数器0计数初值计数初值低低8位位MOVAL, AHOUT30H, AL ;写计数器;写计数器0计数初值计数初值高高8位位MOVAL, 20 ;计数器;计数器1计数初值计数初值20OUT31H, AL;写计数器;写计数器1计数初值计数初值8253应用例应用例2 【例【例7.9】IBM PC/XT系统系统板上板上8253的的3个计数器的应用。个计数器的应用。IR 0 (8259) QD+5VDREQ0 (8237)(8284)PCLKQ DQ (DB)IORIOW+5V地址地址译码译码(AB) D7D0 CLK0 RD CLK1 WR CLK28253 CS OUT0 A1 OUT1 A0 GATE1 GATE0 例例7.9 编程要点编程要点 PCLK来自频率发生器来自频率发生器8284A的输出时钟(的输出时钟(2.38MHz),经),经D触发器触发器2分频,做计数器的输入时钟(分频,做计数器的输入时钟(1.19318MHz)。)。计计数数器器0为为方方式式3,OUT0输输出出作作为为中中断断请请求求接接8259的的IR0,用用于于系系统统时时钟和磁盘驱动器马达的(钟和磁盘驱动器马达的(约约55ms)定时中断。)定时中断。计计数数器器1为为方方式式2,OUT1输输出出作作为为对对8237通通道道0的的DMA请请求求DREQ0,用用于于动动态态存存储储器器刷刷新新的的(约约15s)定定时时启启动动信信号号(在在2ms内内刷刷新新132次次)。 计数器计数器2为方式为方式3, OUT2输出约输出约1KHz的方波到扬声器发声。的方波到扬声器发声。(GATE2由由8255的的PB0控制,控制,OUT2输出经过与门放大发声。输出经过与门放大发声。与门与门的的允许允许/禁止禁止由由8255的的PB1控制。)控制。) 8253端口地址:端口地址:40H43H。例例7.9 程序程序 计数器计数器0 产生(产生(55 ms)定时中断)定时中断IR0MOVAL,36H;方式;方式3,16位二进制计数位二进制计数OUT43H,ALMOVAL,0;计数值;计数值0(最大值(最大值65536)OUT40H,AL;1/1.19318 MHz840 nsOUT40H,AL;840 ns6553655 ms计数器计数器1 产生(产生(15s)定时)定时DMA请求请求DREQ0MOVAL,54H;方式;方式2,低,低8位二进制计数位二进制计数OUT43H,ALMOVAL,12H;计数值;计数值18OUT41H,AL;840ns1815s计数器计数器2 产生(产生(1KHz)时钟方波)时钟方波MOVAL, 0B6H;方式;方式3, 16位二进制计数位二进制计数OUT43H, ALMOVAX, 0533H;计数值;计数值1331( 0533H )OUT42H, ALMOVAL, AHOUT42H, AL8253应用实验应用实验【实验【实验4】 1. 用用8253 实现事件计数。实现事件计数。 8253端口地址:端口地址:40H43H, 8259端口地址:端口地址:20H, 21H 。 计数器计数器2为为方式方式0, 计数值为计数值为5;手动触发开关引发减手动触发开关引发减1计数;计数值减为计数;计数值减为0, 引发引发8259的的IRQ7中断;中断; IRQ7中断显示中断显示“M ”。 CLK2GATE28253OUT2 KK1 +触发开关触发开关+5V8259IRQ7实验实验4(1)程序)程序 主程序流程:主程序流程:设置设置IRQ7中断向量表中断向量表关中断关中断设置设置8259的的IRQ7中断开放中断开放设置计数器设置计数器2控制字(控制字(90H)设置计数初值设置计数初值5开中断开中断等待指令(等待指令(HLT)无条件转无条件转IRQ7中断子程序:中断子程序:IRQ7: MOVAX, 014DHINT10HMOVAX, 0120HINT10HMOVAL, 20HOUT20H, ALIRETIRQ7中断请求中断请求MOVAX, OFFSET IRQ7MOV003CH, AXMOVAX, 0MOV003EH, AXCLIINAL, 21HANDAL, 7FHOUT21H, ALMOVAL, 90HOUT43H, ALA1:MOVAL, 05HOUT42H, ALSTIHLTJMPA1实验实验4(2)【实验【实验4】 2. 不同频率方波信号发生器的应用。不同频率方波信号发生器的应用。 在在0:3000H中依序存放着以中依序存放着以0为结束的若干个数据。为结束的若干个数据。 计数器计数器2为为方式方式3, 通过给出通过给出不同的计数值不同的计数值, 产生不同频率的方波信号产生不同频率的方波信号, 输输出到扬声器上发出不同的声音。出到扬声器上发出不同的声音。 CLK2GATE28253OUT2 opck计数时钟源计数时钟源(1.19MHz)+5V扬声器扬声器 spk实验实验4(2)程序)程序 程序流程:程序流程:设置数据区首指针设置数据区首指针测试数据为测试数据为0, 转转设置计数器设置计数器2控制字(控制字(0B6H)取数据区一个数据取数据区一个数据计算计数值(乘以计算计数值(乘以25H)设置计数值(设置计数值(AX)发声发声(软件延时)(软件延时)修改数据区指针(修改数据区指针(+1)无条件转无条件转A1:MOVBX, 3000HA2:CMPBYTE PTR BX, 0JZA1MOVAL, 0B6HOUT43H, ALMOVAL, BXMOVDL, 25HMULDLOUT42H, ALMOVAL, AHOUT42H, ALCALLDALLYINCBXJMPA2习题习题7.87.8 某某8253的的端端口口地地址址为为60H63H。按按下下列列要要求求编编写写各各计计数数器器的的初初始始化程序。化程序。 计计数数器器0做做单单稳稳电电路路(方方式式1),输输入入时时钟钟频频率率为为50KHz,单单稳稳延延时时时间时间10 ms。计数器计数器0计数初值:计数初值:N = 50000*0.01 = 500MOV AL,32H;计数器;计数器0:方式:方式1,16位二进制计数位二进制计数OUT 63H,AL ;设置计数器;设置计数器0控制字控制字MOV AX,500;AX取计数初值取计数初值500OUT 60H,ALMOV AL,AHOUT 60H,AL ;先低;先低8位,后高位,后高8位写计数初值位写计数初值500 计计数数器器1做做方方波波发发生生器器(方方式式3),输输入入时时钟钟频频率率为为2MHz,方方波波频频率为率为200Hz,要求用,要求用BCD码计数。码计数。计数器计数器1计数初值:计数初值:N = 2000000/200 = 10000 (16位位BCD码计数最大值码计数最大值0)MOVAL,77H;计数器;计数器1:方式:方式3,16位位BCD码计数码计数OUT63H,AL ;设置计数器;设置计数器1控制字控制字MOVAL,0;AL取取16位位BCD码计数码计数0(最大值)(最大值)OUT61H,ALOUT61H,AL ;先低;先低8位,后高位,后高8位写计数初值位写计数初值0 计计数数器器 2对对外外部部事事件件计计数数(方方式式0),每每计计数数到到100时时产产生生一一个个中中断断请求信号。请求信号。计数器计数器2计数初值:计数初值:N = 100MOVAL,90H;计数器;计数器2:方式:方式0,8位二进制计数位二进制计数OUT63H,AL;设置计数器;设置计数器2控制字控制字MOVAL,100;AL取计数初值取计数初值100OUT62H,AL ;写计数初值;写计数初值100
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号