单片机第17讲
其中: 其中: 200ML: 200ML:最大值 N:计数值 :
N
X: 初值 :
200ML X
方式0 16位的计数器(THO和TL0)只用了13 方式0:16位的计数器(THO和TL0)只用了13 位的计数器(THO 只用了 构成13位定时器/计数器.TL0的高 位未用, 13位定时器 的高3 位构成13位定时器/计数器.TL0的高3位未用, TL0的低 位计满时, TH0进位 的低5 进位, TH0溢出后 当TL0的低5位计满时,向TH0进位,而TH0溢出后 对中断标志位TF0 TF0置 并向CPU申请中断. CPU申请中断 对中断标志位TF0置1,并向CPU申请中断. T0是否溢出也可用软件查TF0是否为 是否溢出也可用软件查TF0是否为1 T0是否溢出也可用软件查TF0是否为1. 1,初值 ,
工作方式寄存器 TMOD
TMOD用于控制T0和T1的工作方式,其各位定义如下: TMOD用于控制T0和T1的工作方式,其各位定义如下: 用于控制T0 的工作方式
控制寄存器TCON 控制寄存器TCON
TCON用于控制定时器的启动, TCON用于控制定时器的启动,停止以及标明定时器的 用于控制定时器的启动 溢出和中断情况.各位的含义如下: 溢出和中断情况.各位的含义如下:
工作方式2 工作方式2
T0在工作方式2的逻辑结构如下图所示. T0在工作方式2的逻辑结构如下图所示. 在工作方式
定时器/计数器构成一个能重复置初值 定时器 计数器构成一个能重复置初值 位计数器. 的8位计数器.在工作方式 ,工作方式 , 位计数器 在工作方式0,工作方式1, 若用于重复定时计数,则每次计满溢出后, 若用于重复定时计数,则每次计满溢出后, 计数器变为全0,故还得重新装入初值. 计数器变为全 ,故还得重新装入初值.而 工作方式2可在计数器计满溢出时自动装入 工作方式 可在计数器计满溢出时自动装入 初值,工作方式2把 位的计数器拆成两个 初值,工作方式 把16位的计数器拆成两个 8位计数器.TL0用作 位计数器,TH0用来 位计数器. 用作8位计数器 位计数器 用作 位计数器, 用来 保存初值,每当TL0计满溢出时,可自动将 计满溢出时, 保存初值,每当 计满溢出时 TH0的初值再装入 的初值再装入TL0中.工作方式 的定 的初值再装入 中 工作方式2的定 时时间为: 时时间为: t=(28—T0初值)×机器周期 初值) ( 初值
÷12
C/T=0 / 中断 加1计数器 计数器 TFX
TX端 端 当C/T=1时,开 / 时 关向下接通, 关向下接通,TX 端的外部信号至此
C/T=1 / 起/停 控制信号 加1计数器对 计数器对 当计数器计满时, 在起/ 当计数器计满时, 在起/停控制 1MHz的脉冲进行 置"1", 的脉冲进行 自动将TFX置 自动将 , 信号中" 信号中"起"信号 自动计数, 自动计数,直至计 作为向单片机中断 作用下开关接通 数器计满 请求信号. 请求信号.
工作方式3 工作方式3
工作方式3的逻辑结构图如下图所示. 工作方式3的逻辑结构图如下图所示.
该工作方式只适用于定时器/计数器T0. 该工作方式只适用于定时器/计数器 .T0 在工作方式3被拆成两个相互独立的计数器 其中, 被拆成两个相互独立的计数器, 在工作方式 被拆成两个相互独立的计数器,其中, TL0使用原 的各控制位,引脚和中断源 /T , 使用原T0的各控制位 使用原 的各控制位,引脚和中断源C/ GATE,TR0,INT0 和TF0; , , ; 则只能作为定时器使用, 而TH0则只能作为定时器使用,但它占用 则只能作为定时器使用 但它占用T1 的TR1和TF1,即占用了 的中断标志和运行控 和 ,即占用了T1的中断标志和运行控 制位. 制位. 一般在系统需增加一个额外的8位定时器时 位定时器时, 一般在系统需增加一个额外的 位定时器时, 可设置为工作方式3,此时, 虽仍可定义为工 可设置为工作方式 ,此时,T1虽仍可定义为工 作方式0,工作方式1和工作方式 和工作方式2, 作方式 ,工作方式 和工作方式 ,但只能用在 不需中断控制的场合. 不需中断控制的场合.
当初值为0736H,应该是TL0=16H,TH0=39H ,应该是 当初值为 ,
13位计数器的最大计数值为2 13位计数器的最大计数值为213=8192 位计数器的最大计数值为 用作计数时,每计满8192个外部脉冲后TF0=1, 8192个外部脉冲后TF0=1,向 用作计数时,每计满8192个外部脉冲后TF0=1,向CPU 发出中断请求. 发出中断请求. 计数初值=8192 =8192计数初值=8192-计数值 用作定时时,每计满8192个机器周期后TF0=1, 8192个机器周期后TF0=1,向 用作定时时,每计满8192个机器周期后TF0=1,向CPU 发出中断请求. 发出中断请求. 定时初值=8192 =8192- 定时值/机器周期) 定时初值=8192-(定时值/机器周期) 例如:要求计满129个外部脉冲后溢出中断, 129个外部脉冲后溢出中断 例如:要求计满129个外部脉冲后溢出中断,则计数初 值为8192 8192值为8192-129=8063=1F7FH TLO=1FH, 即TLO=1FH,TH0=FBH 又如:已知单片机的机器周期为1μs 1μs, 又如:已知单片机的机器周期为1μs,要求定时值到 5000μs时溢出中断 则定时初值为8192 时溢出中断, 8192- 5000μs/ 达5000μs时溢出中断,则定时初值为8192-(5000μs/ μs) 1μs) = 3192=0C78H TLO=18H, 即TLO=18H,TH0=63H
2,控制
工作方式1 工作方式1 T0工作在方式 的逻辑结构如下图所示.由 工作在方式1的逻辑结构如下图所示 工作在方式 的逻辑结构如下图所示. 图可见,它与工作方式0的差别仅在于工作方式 的差别仅在于工作方式1 图可见,它与工作方式 的差别仅在于工作方式 是以16位计数器参加计数 且定时时间为: 位计数器参加计数, 是以 位计数器参加计数,且定时时间为: 初值)× t=(216-T0初值 ×机器周期 初值
TH0 0 0 0 0 0 0 0 1 0 0 0 0 TL0 0 0 0 0 0
输入
TL0,TL1,TH0,TH1的地址顺序依次是8AH,8BH,8CH,8DH. TL0,TL1,TH0,TH1的地址顺序依次是8AH,8BH,8CH,8DH.这 的地址顺序依次是8AH 些寄存器用来存放定时或计数初值, 些寄存器用来存放定时或计数初值,每个定时器都可以由软件设置成定时工 作方式或计数工作方式. 作方式或计数工作方式. 定时器/计数器可工作在定时方式或计数方式,由方式寄存器TMOD TMOD确 定时器/计数器可工作在定时方式或计数方式,由方式寄存器TMOD确 由控制寄存器TCON控制. TCON控制 定,由控制寄存器TCON控制.
定时器/ 定时器/计数器工作 方式及控制
定时器/计数器是一种可编程的部件, 定时器/计数器是一种可编程的部件,在 其工作之前必须做三件事: 其工作之前必须做三件事: 1,将方式字写入 ,将方式字写入TMOD 2,将控制字写入 ,将控制字写入TCON 3,将计数初值写入相应计数器 , 这个过程称为定时器/ 这个过程称为定时器/计数器的初始化
由此可见:定时器/计数器的核心是一个加1计数器. 由此可见:定时器/计数器的核心是一个加1计数器. 16位的定时器 计数器分别由两个8 位的定时器/ 16位的定时器/计数器分别由两个8位的专用寄存 器组成,即T0由TH0和TL0构成,T1由THl和TLl构成. 器组成, T0由TH0和TL0构成,T1由THl和TLl构成. 构成 构成 T0
注意: 注意:
当定时器工作在计数方式时,外部输人信号是加到T0(P3 4)或 T0(P3. 1,当定时器工作在计数方式时,外部输人信号是加到T0(P3.4)或 T1(P3.5)端 T1(P3.5)端. 一个外部输入信号的下降沿触发加1计数器加1 直至计满溢出. 一个外部输入信号的下降沿触发加1计数器加1,直至计满溢出. 外部输入信号的高电平与低电平保持时间均需大于一个机器周期. 外部输入信号的高电平与低电平保持时间均需大于一个机器周期. 当定时/计数器工作在定时方式时, 计数器每一个机器周期加1 2,当定时/计数器工作在定时方式时,加1计数器每一个机器周期加1, 直至计满溢出. 直至计满溢出. 一旦定时器/计数器被设置成某种工作方式后, 一旦定时器/计数器被设置成某种工作方式后,它就会按设定的工 作方式独立运行,不再占用CPU的操作时间,直到加1计数器计满溢出, CPU的操作时间 作方式独立运行,不再占用CPU的操作时间,直到加1计数器计满溢出, 才向CPU申请中断. CPU申请中断 才向CPU申请中断.
工作方式0 工作方式0
在单片机中定时/计数的原理是对其寄存器的内容完成对机器周 在单片机中定时/计数的原理是对其寄存器的内容完成对机器周 定时 外部脉冲进行+1计数直至溢出.为了获取不同时间 不同脉冲个数, +1计数直至溢出 不同时间/ 期/外部脉冲进行+1计数直至溢出.为了获取不同时间/不同脉冲个数, 只要对寄存器预先写入一个数据就可以实现.这个数据称为初值 初值. 只要对寄存器预先写入一个数据就可以实现.这个数据称为初值.
当计数器计满时, 当计数器计满时, MCS-51单片机片内有两个16位的定时器 置 计数 单片机片内有两个16位的定时器/ , MCS-51单片机片内有两个16位的定时器/"1", 自动将TFX置 自动将 经过除以12变成 经过除以 变成 作为向单片机中断 定时器0(T0 和定时器1(T1 器 , 定时器 0(T0) 和定时器 1(T1) . 它们均可用作定 1MHz的脉冲 的脉冲 请求信号. 请求信号. 当外部晶体振 记住: 记住:此时脉冲的周期 时控制,延时以及对外部事件的计数及检测. 时控制,延时以及对外部事件的计数及检测. 加1计数器对 计数器对 荡器为12MHz时, 荡器为 时 为1/1MHz= 1s / 1MHz的脉冲进行 的脉冲进行 它提供(输出 它提供 输出) 输出 在起/ 在起/停控制 ,直至计 自动计数, 自动计数 12MHz的脉冲. 的脉冲. 的脉冲 信号中" 数器计满 信号中"起"信号 当C/T=0 / 作用下开关接通 时,开关接 通 振荡器