Download presentation
Presentation is loading. Please wait.
1
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠
2
1.5 单片机内部定时/计数器 1.5.1定时/计数器概述 学习情景1: 汽车空调系统的单片机控制
学习情景1: 汽车空调系统的单片机控制 1.5 单片机内部定时/计数器 1.5.1定时/计数器概述 (1)MCS-51单片机有两个16位的可编程定时/计数器,称为定时器T0和定时器T1。可编程选择其作为定时器用或作为计数器用。 图1-7 单片机定时/计数器结构框图
3
学习情景1: 汽车空调系统的单片机控制 (2)本质上讲都是计数器。 1.5.2 与定时/计数器有关的SFR(定时计数器的控制)
学习情景1: 汽车空调系统的单片机控制 (2)本质上讲都是计数器。 对外部事件脉冲计数就作为计数器使用对内部的机器周期计数就作为定时器使用。(对外部脉冲计数时,信号脉冲应加到相应的外引脚上T0(P3.4),T1(P3.5))他们都是加法计数器,计满后就会溢出(Overflow),溢出时产生中断标志。 1.5.2 与定时/计数器有关的SFR(定时计数器的控制) 1.定时/计数器工作方式控制寄存器TMOD(T:Timer,M:Mode)(89H)高4位控制T1,低4位控制T0 GATE C/T M1 M0
4
学习情景1: 汽车空调系统的单片机控制 TMOD不可位寻址,高4位和低4位分别控制T1和T0。 (1)M1M0——工作方式选择位。 M1M0 方式 功能 00 方式0 13位的计数器 01 方式1 16位的计数器 10 方式2 8位的计数器,初值自动重装 11 方式3 两个8位的计数器,仅适用T0 (2)C/T——计数/定时方式选择位。 C/T=1,为计数工作方式,对外部事件脉冲计数,作为计数器用(负跳变有效)。 C/T=0,为定时工作方式,对内部机器脉冲计数,作定时器用。 (3)GATE——门控位。 一般取GATE=0,在后面的定时器工作方式结构中分析原因。
5
TCON可位寻址。低4位用于控制外部中断。高4位的功能与定时器有关,含义如下:
学习情景1: 汽车空调系统的单片机控制 2.TCON:定时/计数器控制寄存器(88H) TCON可位寻址。低4位用于控制外部中断。高4位的功能与定时器有关,含义如下: TF0:定时/计数器T0溢出标志。 (T:Timer,F:Flag) TR0:定时/计数器T0运行控制位。(T:Timer,R:Run) TR0=1,T0运行 TR0=0,T0停 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
6
3.计数寄存器 学习情景1: 汽车空调系统的单片机控制 TF1:功能与TF0相同。 TR1:功能与TR0相同。
学习情景1: 汽车空调系统的单片机控制 TF1:功能与TF0相同。 TR1:功能与TR0相同。 3.计数寄存器 TH0、TL0是T0的两个8位计数器,TH1、TL1是T1的两个8位计数器,并且高8位数存放在TH中,低8位数存放在TL中。
7
1.5.3.定时/计数器的工作方式 学习情景1: 汽车空调系统的单片机控制 (1)方式0
学习情景1: 汽车空调系统的单片机控制 1.5.3.定时/计数器的工作方式 (1)方式0 当TMOD中的M1M0=00时,定时/计数器工作在方式1下,为13位定时/计数器。与方式1不同的是,方式0使用了TL0或TL1的低5位。图1-8是以TL0为例的方式0结构图。 图1-8 工作在方式0下的定时/计数器0的结构
8
学习情景1: 汽车空调系统的单片机控制 有一点特别需要注意,在给定时/计数器赋初始值时,是将初始值a的低五位付给TL0或TL1将初始值化为16进制数,然后赋给TH0和TL0即可。在此基础上定时,50mS到时,则会产生溢出。 方式0下的定时时间为:: 由此可以得到方式1时的初始值计算公式: 图1-9 方式1逻辑结构
9
学习情景1: 汽车空调系统的单片机控制 (2)方式1 当M1M0=01时,定时/计数器工作在方式1,逻辑结构如上图1-9所示。内部为16位计数器,有TL0作低8位和TH0 作8位,16位计满溢出,溢出置位TF0。最大计数值为216=65536。 原理分析总结: GATE=0,TR0=1,控制开关闭合,开始计数。 GATE=1,同时 TR=1 INT0=1时,才开始运行。 总上分析,得出取GATE=0 (3)方式2 图1-10 方式2,逻辑结构
10
学习情景1: 汽车空调系统的单片机控制 当M1M0=10时,定时/计数器工作在方式2,逻辑结构如上图1-10所示。定时/计数器工作为8位,能自动恢复定时/计数器初值。即用TL0计数,计满溢出时自动将TH0中的值送入TL0,自动恢复初值。计数的最大值为256。 (4)方式3 方式3只适用于TC0。在方式3下,TC0分成了两个独立的定时/计数器TL0和TH0,均为8位的T/C。此时,TC1一般作波特率发生器时,可以设置成方式0、1或2,用在任何不需要中断控制的场合。一般T1作波特率发生器时,常设置成方式2的自动重装模式。
11
学习情景1: 汽车空调系统的单片机控制 1.5.4初值的计算方法 例: 用定时器T0产生1ms的定时,系统的fosc=12MHZ
学习情景1: 汽车空调系统的单片机控制 1.5.4初值的计算方法 例: 用定时器T0产生1ms的定时,系统的fosc=12MHZ 分析:机器周期=1us要产生1ms的定时,要数1ms/1us=1000个机器周期的脉冲,那么数机器周期的方法有两种方法 (1)从0开始计数,计到1000即可,但是总要去看什么时候到1000? (2)从某个平台(初值)开始计数,计满刚好溢出,产生中断标志,请求中断, 具体计算: ms/1us= =64536 转换后存到计数寄存器中即可。
12
学习情景1: 汽车空调系统的单片机控制 1.5.5定时/计数器的应用步骤 1、初始化 选择工作模式 MOV TMOD, ……..
学习情景1: 汽车空调系统的单片机控制 1.5.5定时/计数器的应用步骤 1、初始化 选择工作模式 MOV TMOD, …….. 计数器付初值 MOV TH0, …….. MOV TL0, ……….. 启动计数器 SETB TR0 开中断 SETB ET0 SETB EA 2、提供中断入口地址 3、编写中断服务程序
13
学习情景1: 汽车空调系统的单片机控制 (1)保护现场、恢复现场 (2)重新赋初值(方式2除外) 例:设计一程序,在P1.0引脚上输出周期为2ms方波。fOSC=6MHz. 分析:要在P1.0引脚上输出方波,只要在P1.0引脚上交替输出高电平和低电平即可,用定时/计数器产生1ms定时,定时到改变输出信号。 计算1ms定时的计数初值,1ms需要数500机器周期。 初值= = /256 得整数部分为254,余数为12。
14
学习情景1: 汽车空调系统的单片机控制 程序如下: ORG 0000H LJMP SETUP ORG 000BH ② LJMP INET0P ORG 0030H SETUP: MOV TMOD,#01 MOV TH0,#254 ① MOV TL0,#12 SETB TR0 SETB ET0 SETB EA
15
学习情景1: 汽车空调系统的单片机控制 MAIN: SJMP $ INET0P: CLR TR0 MOV TH0,#254
学习情景1: 汽车空调系统的单片机控制 MAIN: SJMP $ INET0P: CLR TR0 MOV TH0,#254 MOV TL0,#12 ③ SETB TR0 CPL P1.0 RETI END 从方式0和方式1的应用看,方式1比方式0有优点,计数范围大,初值计算不须换算,使用方便,建议采用。
16
学习情景1: 汽车空调系统的单片机控制 例:设计一程序,在P1.0引脚上输出400us方波。fOSC=6MHz. 用方式2实现
学习情景1: 汽车空调系统的单片机控制 例:设计一程序,在P1.0引脚上输出400us方波。fOSC=6MHz. 用方式2实现 分析:由于400us需要计数200个机器脉冲数,而8位计数器就能计数256,因此用方式2可以实现。 初值= =56
17
学习情景1: 汽车空调系统的单片机控制 程序如下: ORG 0000H LJMP SETUP ORG 000BH LJMP INET0P
学习情景1: 汽车空调系统的单片机控制 程序如下: ORG 0000H LJMP SETUP ORG 000BH LJMP INET0P ORG 0030H SETUP: MOV TMOD,#02 MOV TH0,#56 MOV TL0,#56 SETB TR0 SETB ET0 SETB EA MAIN: SJMP MAIN INET0P: CPL P1.0 RETI END
18
学习情景1: 汽车空调系统的单片机控制 1.5.5定时/计数器的应用步骤 1、初始化 选择工作模式 MOV TMOD, ……..
学习情景1: 汽车空调系统的单片机控制 1.5.5定时/计数器的应用步骤 1、初始化 选择工作模式 MOV TMOD, …….. 计数器付初值 MOV TH0, …….. MOV TL0, ……….. 启动计数器 SETB TR0 开中断 SETB ET0 SETB EA 2、提供中断入口地址 3、编写中断服务程序。 (1)保护现场、恢复现场 (2)重新赋初值(方式2除外)
19
学习情景1: 汽车空调系统的单片机控制 例:设计一程序,在P1.0引脚上输出周期为2ms方波。fOSC=6MHz. 分析:要在P1.0引脚上输出方波,只要在P1.0引脚上交替输出高电平和低电平即可,用定时/计数器产生1ms定时,定时到改变输出信号。 计算1ms定时的计数初值,1ms需要数500机器周期。 初值= = /256 得整数部分为254,余数为12。 程序如下: ORG 0000H LJMP SETUP ORG 000BH ② LJMP INET0P ORG 0030H SETUP: MOV TMOD,#01
20
学习情景1: 汽车空调系统的单片机控制 ① MOV TL0,#12 SETB TR0 SETB ET0 SETB EA
学习情景1: 汽车空调系统的单片机控制 ① MOV TL0,#12 SETB TR0 SETB ET0 SETB EA MAIN: SJMP $ INET0P: CLR TR0 MOV TH0,#254 MOV TL0,#12 ③ SETB TR0 CPL P1.0 RETI END
21
学习情景1: 汽车空调系统的单片机控制 从方式0和方式1的应用看,方式1比方式0有优点,计数范围大,初值计算不须换算,使用方便,建议采用。 例:设计一程序,在P1.0引脚上输出400us方波。fOSC=6MHz. 用方式2实现 分析:由于400us需要计数200个机器脉冲数,而8位计数器就能计数256,因此用方式2可以实现。 初值= =56 程序如下: ORG 0000H LJMP SETUP ORG 000BH LJMP INET0P ORG 0030H SETUP: MOV TMOD,#02
22
学习情景1: 汽车空调系统的单片机控制 MOV TH0,#56 MOV TL0,#56 SETB TR0 SETB ET0 SETB EA
学习情景1: 汽车空调系统的单片机控制 MOV TH0,#56 MOV TL0,#56 SETB TR0 SETB ET0 SETB EA MAIN: SJMP MAIN INET0P: CPL P1.0 RETI END
Similar presentations