310 likes | 470 Views
控制理论基础 (II). 课程负责人:杨汝清 教授 曹其新教授. 顾问: 王显正 教授. 交 通 大 学 精 品 课 程 系 列. 2007. 13.1 定时器 / 计数器介绍. 13.2 程序分析. 13.3 加法定时器 / 计数器. 13.4 方式寄存器 TMOD. 13.5 TCON 控制寄存器. 13.6 定时器 / 计数器逻辑结构框图. 13.7 定时器 / 计数器的定时 / 计数范围. 13.8 例子. 13.1 定时器 / 计数器介绍. 作用:定时、计数、波特率发生器;
E N D
控制理论基础(II) 课程负责人:杨汝清 教授 曹其新教授 顾问: 王显正 教授 交通大学精品课程系列 2007
13.1 定时器/计数器介绍 13.2 程序分析 13.3 加法定时器/计数器 13.4 方式寄存器TMOD 13.5 TCON 控制寄存器 13.6 定时器/计数器逻辑结构框图 13.7 定时器/计数器的定时/计数范围 13.8 例子
13.1 定时器/计数器介绍 作用:定时、计数、波特率发生器; 主要特性: • 具有两个可编程的定时/计数器T0/C0 T1/C1; • 每个定时器/计数器都有4种工作方式; • 任一定时器/计数器在定时/计数到后可由程序安排产生中断。 结构: • 加法计数器TL(低8位)、TH(高8位)寄存器; • TMOD方式寄存器 • TCON控制寄存器
13.2 程序分析 • MAIN: MOV P1,#0FFH • LCALL DELAY • MOV P1,#00H • LCALL DELAY • LJMP MAIN • DELAY:MOV R7,#250 • D1: MOV R6,#250 • D2: DJNZ R6,D2 • DJNZ R7,D1 • RET • END
这段程序和前面做过的程序比较,只有两处不一样:这段程序和前面做过的程序比较,只有两处不一样: • 第1:原来是SETB P1.0,现在改为MOV P1,#0FFH,第2:原来是CLR P1.0,现在改为MOV P1.0,#00H。 • 从中可以看出,P1是P1.0…7的全体的代表,一个P1就表示了所有的这八个管脚了。当然用的指令也不一样了,是用MOV指令。为什么用这条指令? • 我们把P1作为一个整体,就把它当作是一个存储器的单元,对一个单元送进一个数可以用MOV指令。 • 如果在上述延时期间有中断产生, 定时将不准确,因此必须用定时器中断.
13.3 加法定时器/计数器 • 作为定时器时,加法器对内部机器周期脉冲计数; • 作为计数器时,加法器对芯片引脚P3.3/P3.4输入的外部脉冲计数(下降沿),加法器的初始值可由程序设定,设置不同值,定时/计数值就不同并加法器的内容可用程序读到CPU中。
13.4 方式寄存器TMOD • 作用:用来选择定时器/计数器的工作方式;格式: 0方式13位定时/计数 1方式 16位定时计数 2方式 8位自动装载 计数定时 3方式 T0分为两个 8位的定时计数 功能选择 工作方式选择 M0 M1 GATE C0/T0 门控位
13.5 TCON 控制寄存器 • 作用:控制T0/C0、T1/C1的运行; • 格式: 当计数溢出后TF1(0)就由0变为1。 TR0(1)要为1,开关才能合上,脉冲才能过来。 可用指令SETB来置位以启动计数器/定时器运行, 用指令CLR来复位。
13.7 定时器/计数器的定时/计数范围 0工作方式: 1、由TL的低5位与TH高8位构成13位T/C; 可用程序将0~8191的某一数据送入TL、TH作为初始值,加法器溢出后,必须重新对TL/TH赋初始值。 2、作为计数器时,外部计数脉冲的频率小于1/24fosc并且高、低电平的宽度大于一个机器周期; 3、定时时间由T=(8192-X)Tcy决定,计数值由C=(8192-X)决定;
工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。 • 预置值计算:用最大计数量减去需要的计数次数即可。 • 工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。
13.8 例子 • 例1 :流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置多大的值呢? 8192-12=8180
例2若GATE=1,此时仅当TR=1并且P3.2或P3.3=1,T/C才能工作。利用此特点可用来测量P3.3或P3.2引脚上出现的正脉冲宽度。例2若GATE=1,此时仅当TR=1并且P3.2或P3.3=1,T/C才能工作。利用此特点可用来测量P3.3或P3.2引脚上出现的正脉冲宽度。
例3 假设单片机晶振的频率Fosc为6MHz,使用定时器1以方式0产生周期为500微妙的等宽正方波脉冲,并由P1.0输出。以查询方式完成。
分析 • 1)计算记数初值X • (2^13-X)*一个机器周期=250*10^-6 • X=8067 ->1111110000011 • TH1=FCH TL1=03H • 2) TMOD初始化 • 方式0: M0M1=00 • 定时:C/T=0 • GATE=0 • TMOD=00H
程序 • MOV TOMD,#00H • MOV TH1,#0FCH • MOV TL1, #03H • MOV IE, #00H ; 中断系统处于禁止状态 • SETB TR1 • LOOP : JBC TF1, LOOP1
AJMP LOOP LOOP1: MOV TH1,#FCH MOV TL1,#03H CLR TF1 CPL P1.0 AJMP LOOP
例4 定时/计数器的应用 +5V P1.7 P1.0 T1 P1.7 1S 1S
定时器工作方式的选择 当fosc为6MHz时,Tcy=2us则各工作方式的最大的定时时间为: 8位:2的8次方×2=512us; 13位: T=16.384ms 16位: T=131.072ms
采用复合方式。即T0设成定时时间为100毫秒,当定时时间到后将P1.0取反,再加到T1作为计数脉冲。一个脉冲周期为100ms+100ms故计数5个脉冲即为1秒,此时将P1.7取反一次。采用复合方式。即T0设成定时时间为100毫秒,当定时时间到后将P1.0取反,再加到T1作为计数脉冲。一个脉冲周期为100ms+100ms故计数5个脉冲即为1秒,此时将P1.7取反一次。 1 1 0 0 0 0 0 1 TMOD 计数 定时 方式1 方式2
回忆一下TMOD 功能选择 工作方式选择 M0 M1 GATE C0/T0 门控位 0方式13位定时/计数 1方式 16位定时计数 2方式 8位自动装载 计数定时 3方式 T0分为两个 8位的定时计数
定时/计数初始值的计算与装入 T0、T1的初始值按补码计算; 对于T0的初始值X1的公式 (2的16次方-X1)*2us=100ms X1=15536=3CB0H TL=B0H TH=3CH 对于C1的初始值X2的公式 (2的8次方-X2)=5 X2=251=FBH TL1=TH1=FBH
习题: • 1 写出例4程序.