单片机第六章定时器

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


SETB EA;开中断总开关
• • • • • • • • •
setb et1; 定时器1中断允许 setb tr1;启动定时器1开始定时 here:ajmp here;死循环 ct:MOV TL0,#0b0H; 定时器1子程序 MOV TH0,#3CH; ,重新设置定时器1的值,TH1,TL1 cpl p2.0; cpl p2.1;指示灯取反 reti; 定时器1子程序返回 end
TF0和TF1 ——定时器溢出中断标志位 TR0和TR1 ——定时器启停控制位
定时器控制寄存器TCON除可字节寻址 外,各位还可位寻址。
• 8051的定时器T0和T1可由软件对TMOD中 控制位M1、M0位的设置,可选择四种工作 方式,即方式0、方式1、方式2和方式3。 在方式0、1和2时,T0与T1的工作方式相 同;在方式3时,两个定时器的工作方式不 同。
• • • • • • • •
setb et1; 定时器1中断允许 setb tr1;启动定时器1开始定时 here:ajmp here;死循环 ct:;不用重装tl1,th1 cpl p2.0; cpl p2.1;指示灯取反 reti; 定时器1子程序返回 end
不管是定时工作方式还是计数方式,定时 器T0或T1在对内部时钟或对外部事件计数 时,不占用CPU时间,除非定时器溢出, 才能中断CPU的当前操作。由此可见,定 时器是单片机中效率高而且工作灵活的部 件。
• 4)定Biblioteka Baidu器方式2,参数计算公式:
最大定时时间: 256US,一般我们 用方式2作为计数 功能
方式2定时100US 方式2定时100US
• • • • • • • • • • • org 0000h ajmp start; 001bh; 定时器1中断程序入口 ajmp ct; org 30h; mov TMOD,#01H; 设置定时方式寄存器, ;#01h=00010000b 采用 定时器模式,工作方式1,定时与int1无关 MOV TL1,#156; MOV TH1,#156; ;参数设置公式:256us-100us=156 SETB EA;开中断总开关
1、定时器的控制
工作方式寄存器TMOD 地址为(89H)
定时控制寄存器TCON
TF0和TF1 ——定时器溢出中断标志位 TR0和TR1 ——定时器启停控制位
• TF1(TCON.7)——T1溢出标志位。当T1溢出 时由硬件自动使中断触发器TF1置1,并向CPU申 请中断。当CPU响应并进入中断服务程序后, TF1又被硬件自动清0。TF1也可以用软件清0。 • TF0(TCON.5)——T0溢出标志位。其功能和操 作情况同TF1。 • TR1(TCON.6)——T1运行控制位。可用软件 置1或清0来启动或关闭T1。在程序中用一条指令 (SETB TR1)使TR1位置1,定时器T1便开始计 数。 • TR0(TCON.4)——T0运行控制位。其功能同 操作情况同TR1。 • 8051复位时,TCON的所有位被清0。
采用50MS, 定时,使得p2.0,p2.1灯 采用50MS, 定时,使得p2.0,p2.1灯 每50MS,改变一次状态,闪烁一次。 50MS,改变一次状态,闪烁一次。
216 − 定时时间(us )
例子:采用50MS, 定时1中断方式1,使p2.0,p2.1灯每50MS,改变一次状态,闪烁一 例子:采用50MS, 定时1中断方式1,使p2.0,p2.1灯每50MS,改变一次状态,闪烁一 次
定时器工作方式2 定时器工作方式2 • 特点: • 1)16位定时计数器被拆成了两个独立的8位计数器 th0,tl0,或TH1,TL1 • 2)程序初始化时候,th0,tl0,或TH1,TL1装相同的参 数值 • 3)定时器溢出时候,不用编程,重装th0,tl0参数, 或TH1,TL1参数,单片机自动把 TH0装入TL0(或把 TH1装入TL1)
定时器介绍
引子: 引子 延时子程序 A3:mov r0,#200h;1us指令 Loop:mov r1,#250; 1us djnz r1,$; 2u*250us Djnz r0,loop; 2us Ret; A3子程序总的延时时间:1us+(1us+250*2+2us)*200 执行lcall a3子程序的延时时间:2us+ (1us+(1us+250*2+2us)*200)+2us 作业: 作业: 计算书中p2页,执行延时子程序的时间acall delay;
T = 12
f
• 要实现不同的定时时间或计数值,就需要 在计数寄存器TH0、TL0(或TH1、TL1) 中写入不同的初始值。例如,TCOM寄存器 中控制T0的C/=0,T0对机器周期计数,这 就是定时工作方式。设T0初值为x,系统的振 荡频率为f,则其机器周期是: T=12/f
• 当C/=1时,T0成为外部事件计数器,T0对 从P3.4引脚来的外部脉冲进行计数,最大 计数值仍然是。当外部信号电平发生1到0 的跳变时,计数器加1。这时就是计数工作 方式。
方式1 方式1
• 在该方式下,定时/计数器是一个16位加1计 数器,寄存器TH0和TL0是以全16位参与操 作,其最大计数值是2的13次方。如果用来做 定时器,则定时时间在系统晶振为f时 • t=12(-x)/f • 用于计数工作方式,计数长度最长为 =65536(个外部脉冲),同方式0一样,通过 设置不同的计数器寄存器初始值X来实现。
定时器介绍
单片机片有两个16位定时器/计数器:T0和T1 T0、T1均为16位二进制加1计数器,可用软件设定的方法设定 为定时方式或记数方式. . 定时方式——每个机器周期使定时器数值加1直至计数溢出 计数方式——每个机器周期对T0(P3.4)、T1(P3.5)引脚 下降沿计数,设置为计数工作方式时,通过引脚T0(P3.4) 和T1(P3.5)对外部脉冲信号计数
定时器0查询方式,定时30MS,使P2.0灯,每30MS,翻转一次状态 定时器0查询方式,定时30MS,使P2.0灯,每30MS,翻转一次状态
• • • • • • • • • • • • •
org 00h ajmp start; org 30h; start: mov TMOD,#01H; Setb tr0; Loop:MOV TH0,#0d0H; MOV TL0,#8AH; ;65536-30000=8AD0h; Jnb tf0,$;T0没有溢出则,等待 CLR TF0;定时器0溢出标志清0; CPL p2.0;取反 Ljmp loop;
• 8051片内的两个 位定时器 计数器的计数 片内的两个16位定时器 片内的两个 位定时器/计数器的计数 值分别存放在特殊功能寄存器中。 由高 值分别存放在特殊功能寄存器中。T0由高 八位TH0和低八位 八位 和低八位TL0组成,T1由高八位 组成, 由高八位 和低八位 组成 TH1和低八位 和低八位TL1组成。当这些寄存器中的 组成。 和低八位 组成 计数值溢出时(计数值由全1再加 变为0), 再加1变为 计数值溢出时(计数值由全 再加 变为 ), 中产生中断请求。 在CPU中产生中断请求。这些寄存器用户 中产生中断请求 可通过数据传送指令给它们分别设定初始 值,以定时不同的时间和获得不同的计数 值。为了让用户灵活方便的使用这些寄存 以满足不同控制的要求, 器,以满足不同控制的要求,系统将定时 计数器设置了四种工作方式以供选择。 计数器设置了四种工作方式以供选择。 TMOD就用于控制 和T1的工作方式, 就用于控制T0和 的工作方式 的工作方式, 就用于控制
1、方式0 方式0
• 定时/计数器按13位二进制加1的方式。其最 大计数值为 。在这种模式下,16位寄存器 (TH0和TL0)只用13位,其中TL0的高3 位未用,其余位用做整个13位计数器的低5 位,TH0占高8位。见图4-4(a)。当TL0 的低5位溢出时,向TH0进位,而TH0溢出 时向中断标志位TF0进位(硬件置位TF0), 并申请中断。T0是否溢出,CPU会在每个机 器周期去查询TF0是否置位,以产生T0中断。
• GATE:门控制位。GATE=0时,只要用软 件使TR0(或TR1)置1就启动了定时器, 而不管(或)的电平是高还是低。GATE=1 时,只有(或)引脚为高电平且由软件使 TR0(或TR1)置1时,才能启动定时器工 作
TMOD寄存器不能进行位寻址 寄存器不能进行位寻址! 寄存器不能进行位寻址
定时控制寄存器TCON
1、定时器的控制
工作方式寄存器TMOD 地址为(89H)
定时器四种工作方式
M1 M0 00 01 10 11 工 作 模 式 方式0 方式0 方式1 方式1 方式2 方式2 方式3 方式 功模式0 功模式0 13位计数器 13位计数器 16位计数器 16位计数器 自动再装入8 自动再装入8位计数器 定时器0:分成两个8位计数器 定时器1: 位计数器; 定时器 :分成两个 位计数器;定时器 :停止 计数
定时器介绍
引子: 引子 延时子程序 延时子程序特点: 通过执行一些无意义的循环指令,达到延时的目的,12M晶振,1个 机器周 期1US,一个指令周期,由1-4个机器周期, 例如MOV 指令为1个机器周期,执行一次,用1US,DJNZ指令为两个机器周 期,指令需要多少机器周期可查表得到。 举例如下:单片机晶振为12M nop;1us A123:mov r0,#08h;1us指令 Loop:nop; 空指令,1us指令; nop;1us DJNZ r0,loop; djnz为 2us指令 Ret; 2uS指令 调用子程序a123,总共延时的时间:lcall a123; 2us+(1us+(1us+1us+1us+2us)*8)+2us
• 定时器的工作由两个 定时器的工作由两个SFR控制,即 控制, 控制 TMOD 和TCON,由软件写入TMOD ,由软件写入 和TCON,用来设置 或T1的操作模 ,用来设置T0或 的操作模 式和控制功能。 系统复位时, 式和控制功能。当8051系统复位时, 系统复位时 两个寄存器所有位都被清0。 两个寄存器所有位都被清 。
采用定时0中断方式0 使灯p2.1,每秒翻转一次状态 采用定时0中断方式0,使灯p2.1,每秒翻转一次状态
• • • • • • • • • • • • • • • • • • • • • •
org 00h ajmp start; org 000bh;定时器0中断入口地址 ajmp ct; org 30h; start:mov r0,#20; 定时次数,20*50ms=1000MS=1S mov TMOD,#01H; MOV TL0,#0b0H; mov tl1,#0b0h; MOV TH0,#3CH; mov th1,#3ch; SETB EA; SETB ET0; setb et1; setb tr0; setb tr0; 启动定时器0开始定时, here:ajmp here; ct:mov r0,#20; ;重装定时次数 djnz r0,a1; MOV TL0,#0b0H; MOV TH0,#3CH;重装定时器0定时参数 cpl p2.0; cpl p2.1; a1: reti; end

• • • • • • • • • • •
org 0000h ajmp start; 001bh; 定时器1中断程序入口 ajmp ct; org 30h; mov TMOD,#01H; 设置定时方式寄存器, ;#01h=00010000b 采用 定时器模式,工作方式1,定时与int1无关 MOV TL1,#0b0H; MOV TH,#3CH; ;设置特殊功能寄存器th1,tl1(TH1,TL1 为定时器1定时器寄存器)的值 ;计算公式为:
• M1和M0:操作模式控制位。两位可形成四 种编码,对应于四种操作模式。 • C/:计数方式/定时方式选择位。C/=0,设 置为定时方式。定时器对8051片内脉冲计 数,亦即对机器周期(振荡周期的12倍) 计数。C/=1,则置为计数方式,计数器的 输入是来自T0(P3.4)或T1(P3.5)端的 外部脉冲
相关文档
最新文档