定时定义:提供的时间基准。分类:内部定时、外部定时。2.计数定时与计数本质上是一致的。计数的信号随机,定时的信号具有周期性。3.应用软件定时通过软件指令周期方法定时,如执行循环程序。增加CPU负担,通用性差,一般用于短延时。2.不可编程硬件定时采用中小规模IC构成。不增加CPU负担,成本低,定时值不可改变。3.可编程硬件定时采用可编程计数器完成,软件可改变计数值。可编程定时/计数器:实质上定时和计数本质上都是脉冲计数器,定时计的是内部基准时钟源产生的脉冲,计数是计外部脉冲。定时/计数器基本原理1.内部逻辑CPU接口:译码、操作外设接口:时钟信号、控制、输出内部逻辑:REG2.工作过程设初值、控制、输出→8254→82801BA。6.2.18254-2基本功能3个独立的16位定时/计数器(T/C);每个T/C功能:可按二、十进制(BCD)计数;有6种不同的工作方式;最高频率10MHz;(82801BA为14.31818MHz)有读回状态功能。(8253没有)内部逻辑总线缓冲器[8位R/W]:写工作方式、计数初值、当前计数值(减1至0时)MSBLSB锁存后读出当前值MSBLSB装入/读出初值&CLKGATECR:16位写入[两次]、清零CE:16位写入、计数、输出OL:16位先锁存再读出状态REG:8位先锁存再读出注意:GATE信号的作用与应用,重写CR的效果。计数初值:N=fCLKi/fOUTi,在不同工作方式及定时/计数时的应用不同。外部引脚(1)译码:CS与A1A0:(2)读/写:RD、WR;端口地址:8254提供四个端口(使用A1A0);命令:初始化—设置工作方式、设置计数器初值;操作—重写计数器初值、取状态命令。状态:当前计数值、工作方式及当前状态。I/O端口操作冲突时解决方法:写工作方式与写读取状态命令采用特征位方法;读取当前计数值或读取状态采取时序方法。8254命令关系表:计数器**无01001计数初值写入1#计数器**无01010计数初值写入2#计数器**无01011向控制字REG写控制字00~10无写“读计数值/状态”命令11无00100读0#计数器当前计数值无前一命令A1A0=11时,D7D6为11且D5为0或D7D6为非11且D5D4为00时,读取的是当前计数值;D7D6为11且D4为0读取的是状态。读0#计数器状态无00101读1#计数器当前计数值无读1#计数器状态无00110读2#计数器当前计数值无读2#计数器状态无00111无操作1****禁止使用011**无操作CSRDWRA1A0工作方式控制字(A1A0=11)特征位:D7D6=00~10、D5D4=01~11;D7D6选择计数器:00-T/C0;01-T/C1;10-T/C2D5D4选择读/写方式:01-只写低字节;10-只写高字节;11-先写低字节再写高字节(16位)D3D2D1选择工作方式:000~101六种工作方式,X10-方式2,X11-方式3例:MOVAL,01110100B;T/C1,先低后高字节OUT43H,AL;方式2,二进制方式计数初值(1)不同通道的计数初值写到不同地址中;A1A0=00~10(2)每次写入一个字节;(3)根据控制字定义,决定高、低字节写入方法。(4)初始值的范围是:•二进制为65536(0000H)~1(0001H)。•十进制为10000(0000H)~1(00001H)。初始化(1)写工作方式控制字(2)设置计数初值例:MOVAL,01110101B;T/C1,先低后高字节,方式2,BCDOUT43H,ALMOVAX,2000H;计数初值为2000OUT41H,AL;MOVAL,AHOUT41H,AL;MOVAL,00010110B;T/C0,只低字节,方式3,二进制OUT43H,ALOUT40H,50H;计数初值为50H(80)注意:(1)每个使用的T/C均要初始化;(2)计数初值的设置与T/C的CLK密切相关;(3)计数初值的设置方法由控制字决定。数据读取(1)读取当前计数值方法1工作方式控制字(A1A0=11)D7D6=00~01,D5D4=00(a)锁存当前计数值或禁止计数(b)读取当前计数值例:MOVAL,01000101B;T/C1,锁存;先低后高字节,方式2,BCDOUT43H,ALINAL,41HMOVAH,ALINAL,41HXCHGAH,AL;AX为T/C1当前计数值(2)读取当前计数值方法2—使用读回命令特征位:D7D6=11。(A1A0=11)功能选择:锁存状态-D5D4=10;锁存计数值-D5D4=01;锁存状态与计数值-D5D4=00。(先读状态再读计数值)计数器选择:D1=1—T/C0,D2=1—T/C1,D3=1—T/C2特点:控制字同时只能锁存单个通道,读回命令可同时锁存多个通道。例:MOVAL,11010100B;T/C1,锁存计数值OUT43H,ALINAL,41H;MOVAH,ALINAL,41HXCHGAH,AL;AX为当前计数值MOVAL,11011010B;T/C0、T/C2锁存计数值OUT43H,ALINAL,40H;MOVAH,ALINAL,40HXCHGAH,AL;AX为T/C0当前计数值INAL,42H;MOVAH,ALINAL,42HXCHGAH,AL;AX为T/C2当前计数值(3)读取计数器当前状态—使用读回命令例:MOVAL,11100100B;T/C1,锁存状态值OUT43H,ALINAL,41H;若AL=00110101,表示T/C1;为方式2,BCD码,先低后高;读/写,当前OUT为低电平MOVAL,11100010B;T/C0,锁存状态值OUT43H,ALINAL,40H;若AL=00010110,表示T/C0;为方式3,二进制码,只有低;字节,当前OUT为低电平读出的状态字格式:—计数结束时中断特点:一次计数;GATE高允许、下降暂停、低禁止、上升继续计数;WR#写[重写]后下一脉冲下降沿重新计数;OUT在控制字或计数初值写完时变低、计数值为0时变高(N+1个低)。—硬件可重触发单稳特点:一次计数;GATE上升重新、高与下降和低不影响计数;WR#写[重写]在下次GATE从0到1的跳变时有效;OUT在写入控制字后变高,开始计数时变低、计数值为0时变高(N个低)。—频率发生器特点:多次计数;GATE上升重新、高允许、下降停止、低禁止计数;WR#写[重写]在下次计数时有效;OUT在计数值为1时输出宽度为1个CLK的负脉冲(周期为N,频率为1/N)。—方波发生器特点:多次计数;GATE上升重新、高允许、下降停止、低禁止计数;WR#写[重写]在下次计数时有效;OUT在写入控制字后变高,计数开始后,采用每脉冲计数减2:当计数初值为偶数时,计数到0时反向。脉冲宽度T×n/2当计数初值为奇数时,OUT变高的第一CLK减1后装入CE,其余每个脉冲计数减2。OUT正脉冲时,计数到0的下一个CLK时OUT反向OUT正脉冲宽度为T×(n+1)/2;OUT负脉冲时在计数到0时反向。负脉冲宽度为T×(n-1)/2特点:一次计数;GATE上升重新、高允许、下降停止、低禁止计数;WR#写[重写]会立即重新计数(软件触发);OUT在写入控制字及计数当中为高电平,计数值为0时输出1个CLK的负脉冲。5.方式4—软件触发选通—硬件触发选通特点:一次计数;GATE上升重新、高与下降和低不影响计数;WR#写[重写]在下次GATE从0到1的跳变时有效;OUT在计数值为0时输出1个CLK的负脉冲。,计数结束变1,并维持至重写控制字或计数初值写入控制字后变1,GATE上升沿触发变0,开始计数,计数结束变1写入控制字后变1,计数到1变0,维持一个Tclk变1写入控制字后变1,装入初值且GATE=1则OUT变1,计数到变0,重装初值继续计数,计数到则反向写入控制字后变1,计数结束变0,维持一个Tclk变1写入控制字后变1,GATE上升沿触发开始计数,计数结束输出一个CLK的负脉冲初值自动重装无无计数到0重装根据初值奇偶分别重装;无无计数过程中改变初值立即有效GATE触发后有效计数到1或GATE触发后有效计数结束或GATE触发后有效立即有效GATE触发后有效GATE0禁止计数无影响禁止计数禁止计数禁止计数无影响下降沿暂停计数无影响停止计数停止计数停止计数无影响上升沿继续计数从初值开始重新计数从初值开始重新计数从初值开始重新计数从初值开始重新计数从初值开始重新计数1允许计数无影响允许计数允许计数允许计数无影响(地址40H~43H)将5MHz的脉冲变为1Hz的脉冲。初值=fCLK/fOUT=5×106>65536,怎么办?CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D0~D7A1A0RDWRCS5MHz1HzMOVAL,00110111B;T/C0OUT43H,ALMOVAX,5000HOUT40H,ALMOVAL,AHOUT40H,ALMOVAL,01110101B;T/C1MOVAX,1000HOUT41H,ALMOVAL,AHOUT41H,AL需要2个T/C级联,T/C0采用方式3产生连续分频方波,做T/C1的CLK,T/C1采用方式2产生1Hz脉冲。两个T/C的GATE统一控制。现代微机