第六章:定时计数器B
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/计数器(而不是用延时程序来获得定时),减轻 了CPU的负担。 (2)定时和计数的本质是一样的。当计数器所 计的脉冲是频率不变的信号时,通过计数值就可以 知道时间长短,这时计数器就成了定时器。
MCS51单片机的定时/计数器资源
有2个(8052有3个)16位的定时/计数器,均为加1计数; 4种工作方式(16位/13位/8位/波特率),由TMOD控 制寄存器中的M1、M0位来控制 两个SFR:TMOD定义工作方式,TCON控制有关功 能 定时器的实质为对MCU片内机器周期计数,而计数器 对芯片外部引脚T0、T1上的脉冲信号个数计数。
如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR1= 0。
T0工作在方式3下T1的各种工作方式
一般情况下,当T1用作串行口的波特率发生器 时, T0才工作在方式3。 T0处于方式3时, T1可定为方式0、方式1和方 式2,用来作为串行口的波特率发生器,或不 需要中断的场合。
工作方式2就针对这个问题而设置,它具有自动重装载功能,即自 动加载计数初值,所以也称为自动重加载工作方式。 在这种工作方式中,16位计数器分为两部分,即以TL0为计数器, 以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和 TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干 预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给 计数器TL0重新加载。
高位
TMOD
GATE C/T M1 M0 GATE C/T M1
低位
M0
定时/计数器1
定时/计数器0
TMOD的高4位控制定时/计数器1,低4位控制定时/计数0。 其中M1、M0定义定时/计数器的工作方式。
1)定时器方式寄存器TMOD
D7
GATE
D6
C/T
D5
M1
D4
M0
D3
GATE
D2
C/T
D1
M1
余码均计入高 8 位TH0 的初值, 则 T0
TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1
补充: 定时器/计数器应用举例
计数状态: X=M-计数值
定时状态: X=M-定时时间/Tcy 而 Tcy=12÷
•
每一种工作方式对应的最大计数值:
方式0 方式1 方式2 13位计数器 16位计数器 8位计数器
方式3
•
8位计数器
213 8192 216 65536 28 256 28 256
定时初值: 对机器周期进行计数。T:定时时间,X:初值,N:计数 器位数,f osc:系统时钟(晶振)频率,则: 12 N (2 X ) T f osc X 2N fosc /12 T 计数初值:
定时/计数器0
TMOD的高4位控制定时/计数器1,低4位控制定时/计数0。
其中M1、M0定义定时/计数器的工作方式。
1)方式0 (13位计数器)
Timer
1 0 1 1 0 1 0 0 1
Count
1
当M1、M0位置成00时,工作方式为方式0,由图这时定时/计数器的加 1计数器为13位,即TL的低5位和TH的8位。 计数脉冲源由TMOD的C/T位来决定。TL和TH的计数值由全“1”变为 全“0”时,TCON的中断溢出标志位TF置位,定时/计数器向CPU申请中 断。允许计数脉冲输入的条件是:TR0/1=1且GATE=0或/INT01=1,这些 均由软件设置。
4)方式3 (两个独立8位计数器,仅限T0)
TH0、TL0 被拆作于不 同用途
定时 器模 式 独立!
在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和 TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计 数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式 1完全相同。 TH0就没有那么多“资源”可利用了,只能作为简单的内部定时器使用, 而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数 器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控 制TH0定时的启动和停止。 由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而 不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个 定时器或者一个定时器和一个计数器。 T0工作于方式3时,T1的工作方式就不可避免受到一定的限制,因为 自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或 方式2下,不同的是定时/计数器1不能使用溢出标志和中断!
D0
M0
T1
T0
C/T:定时/计数器功能选择位。 1:计数器功能(对外部脉冲即负跳变计数,允许的最高计数 频率为晶振频率的1/24); 0:定时器功能 GATE:门控制位,用于控制定时/计数器的(启动×)计数是否 受外部中断输入引脚(INT0、INT1脚)电平的影响。 GATE=0,与外部中断无关,以运行控制位TRX来启动; GATE=1,只有在没有外部中断请求信号情况下(即外部中断 引脚INTx=1),才允许计数。 M1、M0:工作方式选择
补充: 定时器/计数器应用举例
一、 方式 0 例 1 利用定时器T0产生1ms定时,并使P1.0输出周期为 2 ms的方波, 设单片机晶振频率为 6 MHz。 选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。 定时 1 ms的初值: 因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次: N= 1 ms÷2 μs = 500
补充: 定时器/计数器应用举例
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为
X=M-N=8 192-500=7 692=1E0CH
但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其
定时/计数器的工作原理
定时 / 计数器中的核心部件为可预置初值计数器。预 置初值后开始计数,直至计数值归 0 或产生溢出,可申 请中断。 计数器有加 1 计数或减1计数两种形式。
内部时钟脉冲 (定时)
K1
K2 计数脉冲 可预置初值计数器
溢出信号 中断 请求
外部输入脉冲
(计数)
功能
选择
启动 控制
2)定时器控制寄存器TCON
SETB TR0;启动 定时器0
软件控制
用于外部中断(中 断系统中已介绍)
使用中断方式,作为中断请求标志位, 进入中断服务程序后硬件自动清零
3)定时器初值的确定? 加法计数器是计满溢出时才申请中断, 所以在给 定时器/计数器赋初值时, 不能直接输入所需的计数值, 而应输入的是计数器计数的最大值与这一计数值的 差值, 设最大值为 M, 初值为 X, 则 X的计算方法如 下:
(1)T1工作在方式0
(2)T1工作在方式1
振荡器
1/12
C/T=0 C/T=1
TL1 TH1 (8位) (8位)
串行口
T1(P3.5)
(3)T1工作在方式2
(3) 定时/计数器的初始化
由于定时/计数器是可编程的,因此在进行定时或计数之前要把程 序进行初始化。初始化一般包括以下几个步骤: S1.确定工作方式—TMOD寄存器赋值。 S2.置定时/计数器的初值—直接将初值写入寄存器TH0、TL0和 TH1、TL1。 S3.根据需要,开放中断—对寄存器IE置初值。 S4.启动—使TCON寄存器中的TR1或TR0置位,置位后,加1计 数器按规定的工作方式和初值开始计数。 初值N的计算可以通过下式求得: 计数方式:N=M-计数值 定时方式时:N=M-定时值×(fosc/12)。 其中:M为加1计数器的最大值(在不同的工作方式中,M可以为 213、216或28),fosc为振荡器频率(即主振频率)。
当定时/计数器工作于定时功能且选为方式0时,应 按照定时的时间选择一个时间常数作为计数器的初值, 需要连续定时时,应在每次溢出产生中断后,在程序 (ISR)中为TL和TH 装入初值。
方式0的计数长度M为2的13次方。初值也是13位二进 制数,但要注意是高8位赋值给THx,低5位前面补足 3 个 0 凑成 8 位赋给TLx。 举例:如要求T0的计数值为1000,则初值为 x=M-1000=8192-1000 =1C18H=1 1100 0001 1000B 则赋初值时, TH0= 1 1100 000B=0E0H, TL0= 0001 1000B =18H。
•
对外部脉冲进行计数,计数值根据要求确定。X:初值,N: 计数器位数,则 N
X 2 计数值
2
定时器/计数器的4种工作方式
SFR: 定时器方式寄存器TMOD
TMOD用于定义工作方式以及操作方式。其格式为:
高位 TMOD
GATE C/T M1 M0 GATE C/T M1
低位
M0
定时/计数器1
计数初值
说明: ①当用作定时器功能时,加1计数器每经过一个机器周 期的时间加1 ,所以定时器可看作计算机器周期的计数器。 由于每个机器周期包含12个振荡信号周期,所以加1计数 器的计数脉冲频率为振荡器信号的1/12,当振荡器频率为 6MHz时计数脉冲的最高频率为500KHz,或周期为2µs。
②当用作计数器功能时,加1计数器的计数脉冲取自外 部输入引脚T0、T1(8052还有T2),只要这些引脚上有 一个从“1”到“0”的负跳变,加1计数器就加1。CPU在每 个机器周期对外部输入状态进行采样。计数器加1的执行 是在检测到跳变后的那个机器周期时刻。由于需要两个机 器周期(24个振荡信号周期)来识别一个从“1”到“0”的 负跳变,所以最大计数速率为振荡信号频率的1/24。显而 易见,为了保障外部输入状态在改变之前至少采样一次, 因此,信号必须至少保持一个完整的机器周期。
单片机与控制技术
电气学院:王欣
第6章:MCS-51的定时器/计数器
RE:
硬件编程结构及引脚[已介绍] CPU主要部件与特殊功能寄存器(SFR)[已介绍] 片内外存储器的组织结构和编址[已介绍] 并行I/O口[已介绍] 中断及中断系统[已介绍] 定时/计数器(外设) 【本次课内容!】 串行口(外设)
由M1、M0决定的定时/计数器的工作方式
M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 13位定时/计数器 16位定时/计数器 具有自动重装入的8位定时/计数器 定时器0(T0)分为2个独立的8位定时器, T1在方式3时停止工作 说明
举例:设置T1为16位的计数器对外部脉冲计数,T1启动不受 外部中断影响。则 MOV TMOD,#50H;(0101 0000B)
2)方式1 (16位计数器)
方式1和方式0的工作原理基本相同,唯一不同是T0和T1工作 在方式1时是16位的计数/定时器 方式1时的计数长度M是2的16次方。16位的初值直接拆成高 低字节,分别送入THx和TLx即可。
3)方式2 (8位计数器,初始值自动重装)
作为计数器
保存计数初值
工作方式0和工作方式1的最大特点就是计数溢出后,计数器为 全0,因而循环定时或循环计数应用时就存在反复设置初值的问 题,这给程序设计带来许多不便,同时也会影响计时精度。
1
定时/计数器的结构
T1
T0
TF1
TF0
设定4种工作状态
图6-1 MCS-51定时器/计数器逻辑结构框图
51系列单片机中有两个特殊功能寄存器(TMOD/TCON),用于 定义定时/计数器的工作方式和控制定时/计数器的有关功能.
1)定时器方式寄存器TMOD(只能按字节地址访问!) TMOD用于定义工作方式以及操作方式。其格式为:
定时/计数器的应用
生产线上产品计数。每个产品通过得到一个脉冲信号, 计数器记录脉冲个数,当计数值与设定值相等,启动包装 机器。
检测转速。电机转动一圈发出一个脉冲,计数器记录一
秒时间内脉冲个数,显示转速。
பைடு நூலகம்
定时/计数器的作用:
(1)获取一定的时间间隔信号(即定时),或
对外部的脉冲个数进行计数。采用专用的硬件定时
MCS51单片机的定时/计数器资源
有2个(8052有3个)16位的定时/计数器,均为加1计数; 4种工作方式(16位/13位/8位/波特率),由TMOD控 制寄存器中的M1、M0位来控制 两个SFR:TMOD定义工作方式,TCON控制有关功 能 定时器的实质为对MCU片内机器周期计数,而计数器 对芯片外部引脚T0、T1上的脉冲信号个数计数。
如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR1= 0。
T0工作在方式3下T1的各种工作方式
一般情况下,当T1用作串行口的波特率发生器 时, T0才工作在方式3。 T0处于方式3时, T1可定为方式0、方式1和方 式2,用来作为串行口的波特率发生器,或不 需要中断的场合。
工作方式2就针对这个问题而设置,它具有自动重装载功能,即自 动加载计数初值,所以也称为自动重加载工作方式。 在这种工作方式中,16位计数器分为两部分,即以TL0为计数器, 以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和 TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干 预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给 计数器TL0重新加载。
高位
TMOD
GATE C/T M1 M0 GATE C/T M1
低位
M0
定时/计数器1
定时/计数器0
TMOD的高4位控制定时/计数器1,低4位控制定时/计数0。 其中M1、M0定义定时/计数器的工作方式。
1)定时器方式寄存器TMOD
D7
GATE
D6
C/T
D5
M1
D4
M0
D3
GATE
D2
C/T
D1
M1
余码均计入高 8 位TH0 的初值, 则 T0
TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1
补充: 定时器/计数器应用举例
计数状态: X=M-计数值
定时状态: X=M-定时时间/Tcy 而 Tcy=12÷
•
每一种工作方式对应的最大计数值:
方式0 方式1 方式2 13位计数器 16位计数器 8位计数器
方式3
•
8位计数器
213 8192 216 65536 28 256 28 256
定时初值: 对机器周期进行计数。T:定时时间,X:初值,N:计数 器位数,f osc:系统时钟(晶振)频率,则: 12 N (2 X ) T f osc X 2N fosc /12 T 计数初值:
定时/计数器0
TMOD的高4位控制定时/计数器1,低4位控制定时/计数0。
其中M1、M0定义定时/计数器的工作方式。
1)方式0 (13位计数器)
Timer
1 0 1 1 0 1 0 0 1
Count
1
当M1、M0位置成00时,工作方式为方式0,由图这时定时/计数器的加 1计数器为13位,即TL的低5位和TH的8位。 计数脉冲源由TMOD的C/T位来决定。TL和TH的计数值由全“1”变为 全“0”时,TCON的中断溢出标志位TF置位,定时/计数器向CPU申请中 断。允许计数脉冲输入的条件是:TR0/1=1且GATE=0或/INT01=1,这些 均由软件设置。
4)方式3 (两个独立8位计数器,仅限T0)
TH0、TL0 被拆作于不 同用途
定时 器模 式 独立!
在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和 TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计 数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式 1完全相同。 TH0就没有那么多“资源”可利用了,只能作为简单的内部定时器使用, 而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数 器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控 制TH0定时的启动和停止。 由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而 不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个 定时器或者一个定时器和一个计数器。 T0工作于方式3时,T1的工作方式就不可避免受到一定的限制,因为 自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或 方式2下,不同的是定时/计数器1不能使用溢出标志和中断!
D0
M0
T1
T0
C/T:定时/计数器功能选择位。 1:计数器功能(对外部脉冲即负跳变计数,允许的最高计数 频率为晶振频率的1/24); 0:定时器功能 GATE:门控制位,用于控制定时/计数器的(启动×)计数是否 受外部中断输入引脚(INT0、INT1脚)电平的影响。 GATE=0,与外部中断无关,以运行控制位TRX来启动; GATE=1,只有在没有外部中断请求信号情况下(即外部中断 引脚INTx=1),才允许计数。 M1、M0:工作方式选择
补充: 定时器/计数器应用举例
一、 方式 0 例 1 利用定时器T0产生1ms定时,并使P1.0输出周期为 2 ms的方波, 设单片机晶振频率为 6 MHz。 选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。 定时 1 ms的初值: 因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次: N= 1 ms÷2 μs = 500
补充: 定时器/计数器应用举例
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为
X=M-N=8 192-500=7 692=1E0CH
但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其
定时/计数器的工作原理
定时 / 计数器中的核心部件为可预置初值计数器。预 置初值后开始计数,直至计数值归 0 或产生溢出,可申 请中断。 计数器有加 1 计数或减1计数两种形式。
内部时钟脉冲 (定时)
K1
K2 计数脉冲 可预置初值计数器
溢出信号 中断 请求
外部输入脉冲
(计数)
功能
选择
启动 控制
2)定时器控制寄存器TCON
SETB TR0;启动 定时器0
软件控制
用于外部中断(中 断系统中已介绍)
使用中断方式,作为中断请求标志位, 进入中断服务程序后硬件自动清零
3)定时器初值的确定? 加法计数器是计满溢出时才申请中断, 所以在给 定时器/计数器赋初值时, 不能直接输入所需的计数值, 而应输入的是计数器计数的最大值与这一计数值的 差值, 设最大值为 M, 初值为 X, 则 X的计算方法如 下:
(1)T1工作在方式0
(2)T1工作在方式1
振荡器
1/12
C/T=0 C/T=1
TL1 TH1 (8位) (8位)
串行口
T1(P3.5)
(3)T1工作在方式2
(3) 定时/计数器的初始化
由于定时/计数器是可编程的,因此在进行定时或计数之前要把程 序进行初始化。初始化一般包括以下几个步骤: S1.确定工作方式—TMOD寄存器赋值。 S2.置定时/计数器的初值—直接将初值写入寄存器TH0、TL0和 TH1、TL1。 S3.根据需要,开放中断—对寄存器IE置初值。 S4.启动—使TCON寄存器中的TR1或TR0置位,置位后,加1计 数器按规定的工作方式和初值开始计数。 初值N的计算可以通过下式求得: 计数方式:N=M-计数值 定时方式时:N=M-定时值×(fosc/12)。 其中:M为加1计数器的最大值(在不同的工作方式中,M可以为 213、216或28),fosc为振荡器频率(即主振频率)。
当定时/计数器工作于定时功能且选为方式0时,应 按照定时的时间选择一个时间常数作为计数器的初值, 需要连续定时时,应在每次溢出产生中断后,在程序 (ISR)中为TL和TH 装入初值。
方式0的计数长度M为2的13次方。初值也是13位二进 制数,但要注意是高8位赋值给THx,低5位前面补足 3 个 0 凑成 8 位赋给TLx。 举例:如要求T0的计数值为1000,则初值为 x=M-1000=8192-1000 =1C18H=1 1100 0001 1000B 则赋初值时, TH0= 1 1100 000B=0E0H, TL0= 0001 1000B =18H。
•
对外部脉冲进行计数,计数值根据要求确定。X:初值,N: 计数器位数,则 N
X 2 计数值
2
定时器/计数器的4种工作方式
SFR: 定时器方式寄存器TMOD
TMOD用于定义工作方式以及操作方式。其格式为:
高位 TMOD
GATE C/T M1 M0 GATE C/T M1
低位
M0
定时/计数器1
计数初值
说明: ①当用作定时器功能时,加1计数器每经过一个机器周 期的时间加1 ,所以定时器可看作计算机器周期的计数器。 由于每个机器周期包含12个振荡信号周期,所以加1计数 器的计数脉冲频率为振荡器信号的1/12,当振荡器频率为 6MHz时计数脉冲的最高频率为500KHz,或周期为2µs。
②当用作计数器功能时,加1计数器的计数脉冲取自外 部输入引脚T0、T1(8052还有T2),只要这些引脚上有 一个从“1”到“0”的负跳变,加1计数器就加1。CPU在每 个机器周期对外部输入状态进行采样。计数器加1的执行 是在检测到跳变后的那个机器周期时刻。由于需要两个机 器周期(24个振荡信号周期)来识别一个从“1”到“0”的 负跳变,所以最大计数速率为振荡信号频率的1/24。显而 易见,为了保障外部输入状态在改变之前至少采样一次, 因此,信号必须至少保持一个完整的机器周期。
单片机与控制技术
电气学院:王欣
第6章:MCS-51的定时器/计数器
RE:
硬件编程结构及引脚[已介绍] CPU主要部件与特殊功能寄存器(SFR)[已介绍] 片内外存储器的组织结构和编址[已介绍] 并行I/O口[已介绍] 中断及中断系统[已介绍] 定时/计数器(外设) 【本次课内容!】 串行口(外设)
由M1、M0决定的定时/计数器的工作方式
M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 13位定时/计数器 16位定时/计数器 具有自动重装入的8位定时/计数器 定时器0(T0)分为2个独立的8位定时器, T1在方式3时停止工作 说明
举例:设置T1为16位的计数器对外部脉冲计数,T1启动不受 外部中断影响。则 MOV TMOD,#50H;(0101 0000B)
2)方式1 (16位计数器)
方式1和方式0的工作原理基本相同,唯一不同是T0和T1工作 在方式1时是16位的计数/定时器 方式1时的计数长度M是2的16次方。16位的初值直接拆成高 低字节,分别送入THx和TLx即可。
3)方式2 (8位计数器,初始值自动重装)
作为计数器
保存计数初值
工作方式0和工作方式1的最大特点就是计数溢出后,计数器为 全0,因而循环定时或循环计数应用时就存在反复设置初值的问 题,这给程序设计带来许多不便,同时也会影响计时精度。
1
定时/计数器的结构
T1
T0
TF1
TF0
设定4种工作状态
图6-1 MCS-51定时器/计数器逻辑结构框图
51系列单片机中有两个特殊功能寄存器(TMOD/TCON),用于 定义定时/计数器的工作方式和控制定时/计数器的有关功能.
1)定时器方式寄存器TMOD(只能按字节地址访问!) TMOD用于定义工作方式以及操作方式。其格式为:
定时/计数器的应用
生产线上产品计数。每个产品通过得到一个脉冲信号, 计数器记录脉冲个数,当计数值与设定值相等,启动包装 机器。
检测转速。电机转动一圈发出一个脉冲,计数器记录一
秒时间内脉冲个数,显示转速。
பைடு நூலகம்
定时/计数器的作用:
(1)获取一定的时间间隔信号(即定时),或
对外部的脉冲个数进行计数。采用专用的硬件定时