单片机讲义1(第六章定时器计数器)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2. T0工作在方式3下T1的各种工作方式
●一般情况下,当T1用作串行口的波特率发生器时,T0才工作在 方式3。T0处于工作方式3时,T1可定为方式0、方式1和方式2,用来 作为串行口的波特率发生器,或不需要中断的场合。
(1)T1工作在方式0
T1的控制字中M1、 M0=00时,T1工作在方式 0。T1是一个13位的定时 器/计数器。
(4)计数溢出管理
溢出中断请求标志位TFi
6.1.1 工作方式控制寄存器TMOD
TMODE的功能:用于选择定时器/计数器的工作方式和控制模式
格式:
(1)GATE——门控位(控制方式选择) GATE=0时,计数器由内部TRi(i=0,1)位控制启、停。 GATE=1时,计数器由内部TRi位和外中断引脚确 IN Ti (i=0,1)控制启、 停。 (2)C/ T ——计数器模式和定时器模式选择位 C / T =0,为定时器模式。对振荡时钟12分频脉冲计数。 C / T =1,为计数器模式。计数器对外部输入脉冲计数(即:引脚T0 (P3.4)或T1(P3.5)对外部脉冲(负跳变)计数)。
PT0M0:MOV TL0,#0CH MOV TH0,#0FEH SETB TR0 SETB ET0 SETB EA RET IT0P:MOV TL0,#0CH MOV TH0,#0FEH CPL P1.0 RETI
;对T0置定时初值(先低后高) ;启动T0开始计时 ;允许T0计数溢出中断 ;CPU开中断 ;T0中断服务子程序,T0置初值 ;P1.0的状态取反
6.2 定时器/计数器的工作方式
●定时器/计数
器按计数器 的组成不同, 分为4种工 作方式如右 图所示:
方式0:13位计数方式。相当于有5位预分频的8位计数方式。 方式1:16位计数方式。 方式2:计数常数可自动重装的8位计数方式。 方式3:两个8位计数器与波特率发生器的工作方式。
6.2.1 方式 0
6.2.2 方式1
6.2.3 方式 2
6.2.4 方式 3
在方式3下,T1只作 波特率发生器。在这样 情况下,T1将TF1、TR1 资源出借给T0使用。因 此,在方式3下,T0可以 构成两个独立的计数器 结构,如图6-6(a)和 图6-6(b)所示。
TL0构成一个完整的8 位定时器/计数器,而 TH0则是一个仅能对 fOSC/12脉冲计数的8位 定时器。
(2)T1作在方式1
T1的控制字中M1、 M0=01时,T1工作在方式 1。T1是一个16位的定时 器/计数器。
(3)T1工作在方式2
T1的控制字中M1、M0=10 时,T1的工作方式为方式 2。 在这种方式下T1是一 个8位的定时器/计数器。
(4)T1工作在方式3
T1的控制字中M1、M0=11 时,T1停止计数。
(3)M1、M0——计数器的工作方式选择位
M1、M0共有4种编码,对应于4种工作方式的选择,如表 6—1所示。
6.1.2 定时器/计数器控制寄存器 TCON
功能:用于控制计数器的启、停和计数溢出的标志设置
格式:
(l)TF1、TF0——计数溢出标志位 当计数器计数溢出时,该位置1,表示计
数溢出并请求中断。进入中断服务程序后由硬件自动清0,使用查询方式时,查询有 效后,应以软件方法及时将该位清0 (硬件置位软件清零) 。
说明:
●方式3是为了增加1个附加的8位定时器
/计数器而提供的,从而使MCS-51具 有3个定时器/计数器、方式3只适用于 定时器/计数器T0,定时器/计数器T1 不能工作在方式3。T1处于方式3时相当 于TR1=0,停止计数(此时T1可用来作 串行口波特率产生器)。
来自百度文库
1.工作方式3下的T0
●当TMOD的低2位为11时,T0的工作方式被选为方式3,各引
(l)计算初值 初值的计算公式为: X 2 n
设:需要装入T0的初值为X,则有:
t f
osc
12
16
其中:n=13、16、8 (由计数器的的工作方 式来决定n 的取值)
∵X= 2
n
t . f osc 现 n 16 12
t 1 ms
f osc 6 M Hz
∴X= 2
第6章 MCS-51的 定时器/计数器
定时器和计数器两种工作模式
(1)计数器工作模式 (2)定时器工作模式
MCS—5l单片机的定时器/计数器具有4种工作方 式(方式0、方式1、方式2和方式3),其控制字均在 相应的特殊功能寄存器中,通过对它的特殊功能寄存 器的编程,可方便地选择定时器/计数器2种工作模式 和4种工作方式。
脚与T0的逻辑关系框图如下图所示。
定时器/计数器T0分为2 个独立的8位计数器:TL0和 TH0。 TL0使用T0的状态控制位 C/ T GATE、TR0、 INT0 ,而TH0被 固定为1个8位定时器(不能 为外部计数模式),并使用 定时器T1的状态控制位TR1 和TF1,同时占用定时器T1 的中断请求源TF1。
∵ X= 2
n

t . f osc 12
现 n 16 f osc 6 M Hz t 100 ms
所以:X=15 536=3CB0H 因此:TH0=3CH, TL0=B0H
(3)10次计数的实现 对于中断10次计数,可使T0工作在定时方式,采用循环程序的方法实现。 (4)程序设计 ORG 0000H RESET:LJMP MAIN ;上电,转主程序入口MAIN 0RG 000BH ;T0的中断入口地址 LJMP IT0P ;转T0中断处理程序ITOP ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针 M0V B,#0AH ;设循环次数10次
(2)TR1、TR0——计数内部启、停控制位 TR1(TR0)=1,启动定时器/计数器工作 TR1(TR0)=0,停止定时器/计数器工作 该位可由软件置1或清0 。
6.1.3 定时器/计数器的操作
●定时器/计数器的方式设定、启停控制等,都通过对特殊功能寄 存器TMOD和TCON的操作来完成。
【例】设定T0为方式1的计数方式,并由内部TR0控制启 停,其控制字为××××0101B,设 T1为复位状态,故 设定控制字为0000 0101B=05H。使用以下指令完成方 式设定。 MOV TMOD,#05H 或 MOV 89H,#05H TCON可位寻址操作。对T0的启、停控制通过以下位操作 指令完成。 SETB TR0 或 SETB 8CH ;启动T0计数 CLR TR0 或 CLR 8CH ;停止T0计数

1 10
3
6 10
6
12
=65036
将X化为十六进制,即 X=FEOCH=1111 1110 0000 1100B。 所以,T0的初值为: TH0=0FEH TL0=0CH (2)初始化程序设计 初始化程序包括定时器初始化和中断系统初始化, 主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确的设置,并将 计数初值送入定时器中。 (3)程序设计 ORG 0000H RESET:AJMP MAIN ;转主程序 ORG 000BH ;T0的中断入口地址 AJMP IT0P ;转T0中断处理程序IT0P ORG 0100H MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;设置T0为方式1 0000 0 0 01 ACALL PT0M0 ;调用子程序PT0M0 HERE:AJMP HERE ;自身跳转
定时器/计数器T0、T1的逻辑结构
80C51中有两个16 位加计数的定时器/计 数器T0、T1
(l)计数器
两个8位加计数器TLi、 THi组成,在不同的工作 方式下,其组成结构不同。
(2)计数输入
可选择两种计数输入, 由 管理。
C/T (3)控制逻辑
控制逻辑
TR i ( GATE INT i )
6.1 定时器/计数器的结构
定时器/计数器结构
特殊功能寄存器TMOD 用于选择定时器/计数器 T0、T1的工作模式和工作 方式。 特殊功能寄存器TCON 用于控制T0、T1的启动和 停止计数,同时包含了T0、 T1的状态。 TMOD、TCON这两个寄 存器的内容由软件设置。 单片机复位时,两个 寄存器的所有位都被清0。
MOV TMOD,#01H ;设T0工作在方式1 0000 0 0 01 MOV TL0,#0B0H ;给T0设初值(先低后高) MOV TH0,#03CH
LOOP: SETB SETB SETB HERE:SJMP IT0P: MOV
TR0 ;启动T0开始定时 ET0 ;允许T0中断 EA ;CPU开放中断 HERE ;等待中断 TL0,#0B0H ;T0中断服务子程序,
如果CPU不做其它工作,也可以采用查询的
方式进行控制,查询方式的参考程序如下:
MOV TMOD,#01H ;设置T0为方式1 0000 0 0 01 CLR TF0 LOOP:SETB TR0 ;启动T0开始定时 (书中这里有错) MOV TL0,#0CH ;T0置初值 MOV TH0,#0FEH LOOP1:JNB TF0,LOOP1 ;查询TF0标志是否为1,如为1,
6.4 定时器/计数器的编程和应用
6.4.1 方式1的应用
【例 6-1】假设系统时钟频率采用6 MHz, 要在P1.0上输出 1个周期为 2 ms的方波。
【解】方波的周期用定时器T0来确定,即在T0中设置1个初值,在初值的基
础上进行计数,每隔lms计数溢出1次,即T0每隔lms产生1次中断,CPU响应 中断后,在中断服务程序中对P1.0引脚信号取反。T0中断入口地址为000BH。 为此要做如下几步工作:
(2)当定时器/计数器用作计数器时
计数脉冲来自相应的外部输入引脚T0或T1。当输入信号产生由1至0的 跳变(即负跳变)时,计数器的值增1。每个机器周期的S5P2期间,对外 部输入引脚进行采样。如在第一个机器周期中采得的值为1,而在下一个 周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1的期间,计数 器加1。由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外 部输入的计数脉冲的最高频率为系统振荡器频率的1/24。为了确保某一 给定的电平在变化之前能被采样1次,则这一电平至少要保持1个机器周 期。
6.3 定时器/计数器对输入信号的要求
(1)当被选定为定时器工作模式时
计数输入信号是内部时钟脉冲,每个机器周期产生1个脉冲使计数器 增1。因此,定时器/计数器的输入脉冲的周期与机器周期一样,为时钟 振荡频率的1/12。当采用12 MHZ频率的晶体时,计数速率为1MHZ,输入 脉冲的周期间隔为 lμs。由于定时的精度决定于输入脉冲的周期,因此 当需要高分辨率的定时时,应尽量选用频率较高的晶体。
CLR TR0 CPL P1.0 SJMP LOOP
说明T0溢出,则往下执行 ;T0溢出,关闭T0 ;P1.0的状态求反
【例 6-2】假设系统时钟为6MHZ,编写定时器T0产生1s定 时的程序。
【解】(1)定时器T0工作方式的确定(1S的确定) 因定时时间较长,采用哪一种工作方式合适呢?由前面介绍的定时器 的各种工作方式的特性,可以计算出: 方式0 (n=13)最长可定时16.384 ms: 方式1 (n=16)最长可定时131.072 ms: 方式2 (n=8)最长可定时512 μs 。 由上可见,可选方式 1,每隔100 ms中断1次,中断10次为1s 。 (2)计算计数初值(100 ms的定时初值)
重新给T0装入初值
MOV TH0,#3CH DJNZ B,LOOP CLR TR0 ;1s定时时间到,停止T0工作 RETI
6.4.2 方式2的应用
【例6-3】当T0(P3.4)引脚上发生负跳变时,从P1.0 引脚上输出1个周期为lms的方波。如图所示。(假设系统时 钟为6 MHz)
【分析】(1)T0工作方式选择 T0引脚上如何引发负跳变? T0定义为方式1计数器模式,T0初值为0FFFFH,可满足要求。 (2)T1定义为方式2定时器模式(方式2 (n=8)最长可定时512 μs)在T0 引脚产生l次负跳变后,启动T1每500μs产生1次中断,在中断服务程序 中对P1.0引脚信号求反,使P1.0产生周期为1ms的方波。 【解】 (3)计算T1的初值 设T1的初值为X:
相关文档
最新文档