一看就懂的单片机中断定时器
单片机定时中断原理
单片机定时中断原理一、引言单片机(Microcontroller Unit,MCU)是一种集成了微处理器、存储器和外部设备接口的功能强大的微型计算机系统,广泛应用于各个领域。
在许多应用中,需要对单片机进行定时任务的处理,以及对外部事件进行中断处理。
本文将深入介绍单片机定时中断的原理、实现方法及其应用。
二、定时中断的原理定时中断是指通过硬件或软件的方式,在一段时间内周期性地触发一个中断事件。
单片机通过定时中断可以实现时间计数、精确定时等功能。
下面将详细介绍单片机定时中断的原理。
1. 寄存器设置单片机通常提供了一些专门用于设置定时中断的寄存器。
这些寄存器包括定时器模式选择寄存器、计数器重载值寄存器等。
通过设置这些寄存器的值,可以实现不同的定时中断功能。
2. 定时器设置单片机中的定时器模块负责计数,当计数满足一定条件时触发定时中断。
在设定定时器模块时,需要设置计数器的时钟源、计数方式、预置值等。
以AVR单片机为例,可以通过设置寄存器TCCRnB实现这些功能。
3. 中断设置为了使单片机能够正常响应定时中断,需要对中断进行设置。
在AVR单片机中,可以通过设置TIMSKn寄存器来使能定时中断。
同时,还需要编写中断服务函数,来处理定时中断事件。
三、定时中断的实现方法定时中断可以通过硬件方式和软件方式来实现。
下面将分别介绍这两种方法的实现过程。
1. 硬件方式在硬件方式中,单片机的定时器模块直接产生中断信号,无需CPU的干预。
其实现过程如下:1.设置定时器模块的工作方式,包括时钟源、计数方式等。
2.设置定时器的计数器重载值,用于触发定时中断。
3.使能定时中断,设置相应的中断标志。
2. 软件方式在软件方式中,定时中断由CPU通过软件来实现。
这种方式的实现过程如下:1.在主循环中进行定时计数。
2.当计数满足一定条件时,触发定时中断。
四、定时中断的应用定时中断在各个领域都有广泛的应用。
下面将介绍几个典型的应用场景。
1. 定时任务通过定时中断,可以实现定时任务的处理。
单片机定时器中断程序实例
单片机定时器中断程序实例单片机定时器中断程序实例单片机的定时器中断是一种基本的硬件中断,可以用来实现许多功能,比如定时器中断可以用来实现LED灯的闪烁、数码管的显示等。
以下是一个简单的单片机定时器中断程序实例,希望对初学者有所帮助。
1. 硬件连接将单片机的P3.3引脚和一个LED灯连接在一起,即可实现LED灯的闪烁。
2. 程序框架定时器中断程序的框架一般如下所示:```c#include<reg52.h>void init();//初始化函数void timer() interrupt 1;//中断函数void main(){init();//初始化while(1);//程序不断循环}```3. 程序思路程序的基本思路如下所示:初始化定时器,开启定时器中断,然后在中断函数中控制LED的状态改变,从而实现LED的灯的闪烁。
4. 程序代码```c#include<reg52.h>sbit LED = P3^3;//定义LED灯在P3.3口void init(){TMOD = 0x01;//设置为定时器0工作模式1TH0 = 0xFC;//定时器初值TL0 = 0x67;ET0 = 1;//开定时器中断EA = 1;//开总中断TR0 = 1;//启动定时器}void timer() interrupt 1{static unsigned char cnt;//定义计数器TH0 = 0xFC;//重新赋值TL0 = 0x67;cnt++;//计数器加1if(cnt == 20){//20次中断后改变LED灯状态cnt = 0;//计数器清零LED = ~LED;//LED灯状态取反}}void main(){init();//初始化while(1);//程序不断循环}```5. 程序解释在程序中,定时器使用了工作模式1,即定时器0开始计数,当计数到设定值时触发一个中断。
在中断函数中,用一个计数器cnt来记录定时器中断的次数,当计数到20次时,cnt清零,并且改变LED灯的状态。
80C51单片机的中断与定时PPT
机器周期。
(2)定时中断 定时中断是为满足定时或计数的需要设置的。80C51单片机
共有2个定时器/计数器中断源,即T0和T1。 定时器/计数器内部的计数结构对脉冲信号进行计数,当计
(c)ET0、ET1:定时器/计数器中断允许控制位 ET0、ET1=0,禁止定时(或计数)中断; ET0、ET1=1,允许定时(或计数)中断;
(d)ES:串行中断允许控制位 ES=0,禁止串行中断; ES=1,允许串行中断;
注意:
1)80C51单片机复位后(与I中E)断=控00制H,有即关中的断控系制统位处共于有禁5位止:状态
6单片机的中断与定时系统615中断请求的撤消中断响应后tcon或scon中的中断请求标志应及时清除否则就意味着中断请求依然存在弄不好就会造成中断的重复查询和响应因此必须在中断响应后及时清除中断请求信号即将中断请求标志位清0
第5章 80C51单片机的中断与定时
教学基本要求: (1)了解单片机系统有关中断的概念; (2)了解单片机定时器/计数器的功能; (3)熟悉与中断控制有关的控制寄存器的功能及用法; (4)熟悉与定时/计数控制有关的控制寄存器功能及用法; (5)掌握单片机中断系统的应用方法; (6)掌握单片机定时器/计数器的应用方法; 教学重点: (1)单片机中断系统的中断服务流程; (2)单片机定时器/计数器的工作方式0、2; 教学难点: (1)中断采样、中断查询、中断响应、中断撤消
对于电平方式的外中断请求,采样为高→IE0(IE1)→0, 为低→IE0(IE1)→1;
对于脉冲方式外中断请求,采样先高后低→IE0(IE1)→1 ;否则IE0(IE1)→0。
第一篇:51单片机的中断和定时
第一篇:51单片机的中断和定时自学51单片机也有两个星期了,今天第一次写关于51的博客,也是因为感觉定时和中断挺重要的,要记录一下了。
定时器/计数器51的定时器/计数器有2个分别是T1和T0,52系列的单片机有3个定时器/计数器,T0和T1是通用定时器/计数器,定时器/计数器2(简称T2)是集定时、计数和捕获三种功能于一体,功能更强。
首先看一下这个简单点的功能,我在实验中用到的定时器的作用是高精度延时的作用,之前使用的通过while和for循环的延时方法都只是大概的时间,而定时器则可以精确设定时间在1微秒(10^-6)左右(以晶振频率为11.0592MHZ来说),其最大的时间取值为0.071,可见已经可以达到钟表的误差水准了。
定时器/计数器0和1的方式控制寄存器TMOD:T1 T0T1和T0分别代表单片机两个计数器GATE:门控制位。
当门控制位GATE=1时,定时器/计数器的运行受外部引脚输入电平的控制。
其中INT0引脚控制T0,INT1引脚控制T1.当控制引脚为高电平且TR0或TR1置1时,相应的定时器/计数器才被选通。
当门控制位GATE=0时,只要TR0或TR1置1,相应的定时器/计数器就被选通,此时不受外部引脚的控制。
C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。
TH1)和一个具有32为分频的低8位计数器中的(TL0或TL1)的低5位(0~4)组合成。
模式1:16位的计数器。
(TH1,TL1)模式2:自动装载8位计数器。
主要应用在串口波特率发生器。
模式3:将16位计数器分成两个独立的8位计数器TL0和TH0.定时器/计数器的工作模式3只适用于 T0.模式0&模式3:几乎不用。
特殊功能寄存器TCONT1 T0 定时中断溢出标志位TF1/TF0:当定时器T1/T0溢出时,硬件自动将TF0/TF1置1,并申请中断。
当进入中断服务程序时,硬件又将自动清零TF1/TF0.启/停控制位TR1/TR0:该位由软件置位和复位。
单片机第4章:中断与定时器
S
CPU响应中断后,利用一根口线 (如P1.0)作应答线,在中断服务程 序中用两条指令来撤除中断请求。 ANL P1, #0FEH ORL P1, #01H 第一条指令使P1.0为0,而P1 口其他各位的状态不变。由于P1.0 与直接置1端S相连, 故D触发器 Q=1,撤除了中断请求信号。 第二条指令将P1.0变成1,从 S =1,使以后产生的新的外部中断 请求信号又能向单片机申请中断。
15
六.中断响应与执行过程: 图4-4 中断响应与执行过 程示意图。 中断响应就是对中断 源提出的中断请求的接受, 是在中断查询之后进行的, 当查询到有效的中断请求 时,紧接着就进行中断响 应。中断响应的主要内容 是由硬件自动生成一条长 调用指令LCALL。
图4-4 中断响应与执行过程示意图
16
• 4.3.5 中断程序举例 • 中断程序的结构及内容与CPU对中断的处理 过程密切相关,通常分为两大部分。图4-5 主程序地址安排 • 1.主程序 • (1)主程序的起始地址。 • 51单片机复位后,(PC)=0000H,而 0003H~002BH分别为各中断源的入口地址。 所以,编程时应在0000H处写一条跳转指令 (一般为长跳转指令),使CPU在执行程序时, 从0000H跳过各中断源的人口地址。 • 主程序是以跳转的目标地址作为起始地址开 始编写,一般从0030H开始,如图4-5所示。 • (2)主程序的初始化内容。 • 所谓初始化,是对将要用到的51单片机 图4-5 主程序地址安排 • 内部部件或扩展芯片进行初始工作状态设定。 51单片机复位后,特殊功能寄存器IE、IP的 内容均为00H,所以应对IE,IP进行初始化 编程,以开放CPU中断,允许某些中断源中 17 断和设置中断优先级等。
13
51单片机(STC89C52)的中断和定时器
51单⽚机(STC89C52)的中断和定时器STC89C51/STC89C52 Timer内部不带振荡源, 必须外接晶振采⽤11.0592MHz,或22.1184MHz,可⽅便得到串⼝通讯的标准时钟.STC89和STC90系列为12T, STC11/STC12系列为1T, 也就是⼀个指令⼀个机器周期, 这些都需要外置晶振; STC15系列有内置晶振.中断中断允许控制寄存器 IE字节地址A8H, CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的D7D6D5D4D3D2D1D0EA—ET2ES ET1EX1ET0EX0EA (IE.7): 整体中断允许位, 1:允许ET2(IE.5): T2中断允许位, 1:允许(for C52)ES (IE.4): 串⼝中断允许位, 1:允许ET1(IE.3): T1中断允许位, 1:允许EX1(IE.2): 外部中断INT1允许位, 1:允许ET0(IE.1): T0中断允许位, 1:允许EX0(IE.0): 外部中断INT0允许位, 1:允许52单⽚机⼀共有6个中断源, 它们的符号, 名称以及各产⽣的条件分别如下1. INT0 - 外部中断0, 由P3.2端⼝线引⼊, 低电平或下降沿引起2. INT1 - 外部中断1, 由P3.3端⼝线引⼊, 低电平或下降沿引起3. T0 - 定时器/计数器0中断, 由T0计数器计满回零引起4. T1 - 定时器/计数器1中断, 由T1计数器计满回零引起5. T2 - 定时器/计数器2中断, 由T2计数器计满回零引起 <--这个是52特有的6. TI/RI - 串⾏⼝中断, 串⾏端⼝完成⼀帧字符发送/接收后引起定时器中断51单⽚机内部共有两个16位可编程的定时器,即定时器T0和定时器T1, 52单⽚机内部多⼀个T2定时器. 它们既有定时功能,也有计数功能。
可通过设置与它们相关的特殊功能寄存器选择启⽤定时功能还是计数功能. 这个定时器系统是单⽚机内部⼀个独⽴的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作⽤,CPU⼀旦设置开启定时功能后,定时器便在晶振的作⽤下⾃动开始计时,但定时器的计数器计满后,会产⽣中断。
单片机定时器及中断的使用(含原创完整精讲例程)
单片机定时器及中断的使用(含原创完整精讲例程)STC89C52定时器/计数器的使用一、寄存器 1. 数据寄存器TLx[1]8AH8BH不可位寻址复位清0 8位寄存器保存计数值的低8位。
THx8CH8DH不可位寻址复位清08位寄存器保存计数值的高8位。
工作原理计数时从TL开始加1计数计满后想TH进位直至TH溢出置TF标志然后申请中断CPU进行中断处理。
2. 模式选择寄存器TMOD89H不可位寻址复位清0高4位用于控制定时器1低4位用于控制定时器0GATE—门控制位=0TC[2]的启停仅由寄存器TCON中的TRx控制=1TC的启停由外部中断引脚的电平状态和TCON中的TRx共同控制。
C/T—模式选择位=0定时器对内部机器周期[3]计数=1计数器对外部输入计数由Tx[4]引脚输入注意计数模式下从采样到计数值更新需要2个机器周期共24个时钟周期因此时钟频率为f MHz时最高计数频率为1/2f MHz。
M1M0—工作方式选择位=00方式013位TH全用TL低5位=01方式116位TH TL全用=10方式28 位自动重装载定时器当溢出时将 TH 存放的值自动重装入 TL=11方式3仅适用于T0。
定时器 0 此时作为双 8 位TC。
TL0作为一个 8 位TC通过标准定时器 0 的控制位控制。
TH0 仅作为一个 8 位定时器由定时器 1 的控制位控制。
T1停止计数。
注意在方式2中计数溢出后CPU会自动将THx中的值装入TLx。
因此在定时器启动前在THx和TLx中装入的初值必须是相同的以保证计数的准确性。
3. 控制寄存器TCON88H可位寻址复位清0位符号TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0位地址8FH 8EH 8DH 8CH 8BH 8AH 89H 88H高位在前。
后4位用于外部中断。
TFx—Tx溢出标志位Tx计数溢出时硬件置1并申请中断。
进入中断服务子程序后硬件自动清零。
如果不使用定时器中断而采用软件查询的方法则需要软件清零。
一看就懂的单片机中断定时器
一看就懂的单片机中断定时器80c51定时器实现定时功能,比较方便的方法是利用单片机内部的定时器/计数器。
也可以采用下面的三种方法1 软件定时:软件定时不占用硬件资源,但是占用了cpu的利用率采用时基电路定时:列采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路,但在硬件连接好以后,定时的范围不能由软件进行控制和修改,即不可编程采用可编程的芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定功能强,使用灵活。
在单片机的定时/计数器不够用时,可以考虑进行扩展。
定时/计数器的结构和工作原理1.定时/计数器的实质是加一计数器(16位),由高8位和低8位两个寄存器组成,TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能,TCON是控制器,T1,T0的启动和停止以及设置溢出标志。
加一计数器输入的技术脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经过12分频后送来,一个是T0或者T1引脚舒服的外部脉冲源,每来一个脉冲计数器加一,当加到计数器为全1时,再输入一个脉冲就使计数器回零。
且计数器的溢出使TCON中TF0或TF1置1,向cpu发出中断请求(定时/计数器中断允许时)。
付过定时/计数器工作于定时模式,则表示时间已到,如果工作计数模式,则表示计数值已满可见,由溢出世时计数器的值减去计数初值才是加1计数器的计数值计数器值——计数初值=加1计数器的计数值计数值就是计数多少个数假如晶振是1250*1/12*12 12是震荡周期 1/12是 1/12是晶振周期12个分频就是12个震荡周期刚好是一个计时器周期设置为定时模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个震荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期T cy就是定时时间t。
65535*1等于微妙65535就是65毫秒设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
单片机定时与中断讲解
单片机定时与中断讲解
定时器的四种工作方式
方式的选择:根据M1,M0来选择。
00:方式0 01:方式1 10: 方式2 11: 方式3
主要特点:
方式0:13位定时器。
TH0的8位+TL0的低5位
方式1:16位定时器。
TH0的8位+TL0的8位
方式2:能重复置初始值的8位定时器 。 TL0和TH0必须赋相 同的值。
X = M 计数值= 8192 5000 = 3192 = C78H = 00B 13位计数器中TL1的高3位未用,填写0,TH1占高8位,所以, X的实际填写值应为: X = 0110001100011000B = 6318H
单片机定时与中断讲解
举 例1
用T1方式0实现任务7中1秒延时函数如下:
第4章 定时与中断系统
本章内容
定时/ C语言的函数 中断系统
单片机定时与中断讲解
定时/计数器
8051单片机内部有两个16位的可 编程定时/计数器,称为T0(T0)和 T1(T1)
单片机定时与中断讲解
定时/计数器
8051定时器/计数器逻辑结构 单片机定时与中断讲解
定时/计数器
设置定时/计数器工作方式
因为定时/计数器是作加1计数,并在计满溢出时产生中断,因此初 值X的计算如下: X = M – 计数值 计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0 (TH1)。
嵌入式学习笔记10——51单片机之中断定时器中断
嵌入式学习笔记10——51单片机之中断定时器中断
1. CPU 时序的有关知识(1)振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。
(2)状态周期:2 个振荡周期为1 个状态周期,用S 表示。
振荡周期又称S 周期或时钟周期。
(3)机器周期:1 个机器周期含6 个状态周期,12 个振荡周期(使用计时器时,每隔一个机器周期计时器加1)。
(4)指令周期:完成1 条指令所占用的全部时间,它以机器周期为单位。
2. 学习定时器前须明白:
(1)51 单片机有2 组定时器/计数器(52 单片机有三组),可定时或计数。
(2)定时器/计数器和单片机的CPU 是相互独立的,定时器/计数器工作的过程是自动完成的,不需要CPU 的参与。
(3)51 单片机中的定时器/计数器是根据机器内部的时钟或者外部的脉冲
信号对寄存器(即TH0、TL0 和TH1、TL1)中的数据加1。
3. TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1 的启动和停止及设置溢出标识。
GATE:门控位,用于控制定时器的启动是否受外部中断源信号的影响。
GATE=0 时,只要用软件使TCON 中的TR0 或TR1 为1,就可以启动定时/计数器工作。
GATE=1 时,用软件置TR0 或TR1 为1,同时外部中断引脚INT0/1 也为高电平时,才能启动定时/计数器工作。
C/T:C/T=0 为定时模式;C/T=1 为计数模式。
M1M0:工作方式设置位,共四种工作方式。
0013 位定时/计数器。
单片机中断定时器
*******************************************************************************引脚上高到低的负跳变可引起中断;0→电平触发方式,INT0/INT1引脚上低电平可引起中断。
****************************************************************************** SCON:RI:串行口接收中断请求标志位,当串行口接收完一帧数据后请求中断时,由硬件置位(RI=1),RI必须由软件清零。
TI:串行口发送中断请求标志位。
当串行口发送完一帧数据后请求中断时,由硬件置位(TI=1),TI必须由软件清零。
中断允许寄存器IE1→外部中断0、1开中断;0→外部中断0、1关中断;EX0,ET1;定时器/计数器0、1溢出中断允许位。
1→T/C0、T/C1开中断;0→T/CO、T/C1关中断;ES:串行口中断允许位。
1→串行口开中断;0→串行口关中断.ET2:定时器/计数器2溢出中断允许位。
1→T/C2开中断;0→T/C2关中断。
EA:CPU开/关中断控制位。
1→CPU开中断;0→CPU关中断;PX0,PX1:外部中断0,1中断优先级控制位。
1→高优先级; 0→低优先级。
PT0,PT1:定时器/计数器0、1中断优先级控制位。
1→高优先级; 0→低优先级。
PS:串行口中断优先级控制位。
1→高优先级; 0→低优先级。
中断源高外部中断0(IE0)定时器/计数器0(TF0)外部中断1(IE1)定时器/计数器1(TF1)串行口中断(RI+TI)低与T/C有关的特殊功能寄存器计数寄存器TH和TLT/C是16位的,计数寄存器由TH高8位和TL低8位构成。
在特殊功能寄存器(SFR)中,对应T/C0为TH0和TL0;对应T/C1为TH1和TL1。
定时器/计数器的初始值通过TH1/TH0和TL1/TL0设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现定时功能,比较方便的方法是利用单片机内部的定时器/计数器。也可以采用下面的三种方法
1 软件定时:软件定时不占用硬件资源,但是占用了cpu的利用率
采用时基电路定时:列采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路,但在硬件连接好以后,定时的范围不能由软件进行控制和修改,即不可编程
加一计数器输入的技术脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经过12分频后送来,一个是T0或者T1引脚舒服的外部脉冲源,每来一个脉冲计数器加一,当加到计数器为全1时,再输入一个脉冲就使计数器回零。且计数器的溢出使TCON中TF0或TF1置1,向cpu发出中断请求(定时/计数器中断允许时)。付过定时/计数器工作于定时模式,则表示时间已到,如果工作计数模式,则表示计数值已满
中断定时器有两个寄存器TH0和TL0。计算时间放在两个寄存器中一共16位,分别为高八位,和低八位
分别为TH0 1 1 1 1 1 1 1 1 TL0 1 1 1 1 1 1 1 1
当TL0寄存器存入数据超过255的时候就进1到TH0;
不超过255的时候就存入到TL0中所以TH0=65536/256去整,TL0=65536%256求余;
TMOD=0x01; //设置定时器0为工作方式1
ET1=1; //打开定时器1
TR1=1; //启动定时器1
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
void main()
{
................................//主函数
8位,TH0作为高8位。组成了16位加1
计数器。
计数个数与计数初值的关系为:
X=2^16—N 最大值65535
高八位和低八位的关系
低八位TL0 1 1 1 1 1 1 1 1 如果低八位超过了256之后就进1给高八位,然后到66635之后清零
高八位TH0 1 1 1 1 1 1 1 1
01 方式1 16位定时/计数器
10 方式2 8位自动重装定时/计数器
11 方式3 T0分成两个独立的8位定时/计数器,T1此方式停止计数
控制寄存器TCON
TF1:T1溢出中断请求标志位。T1计数溢
出时由硬件自动TF为1。cpu响应中断后
TF1由硬件自动清0。T1工作时,cpu可随
查询TF1的状态。所以,TF1可用作查询
测试的标志。TF1也可以用软件置1或者
0,同硬件置1或者清0效果一样。
TR1(TCON.6):T1运行控制位,TR1置
IT0=1;//跳变沿触发方式
void main()
{
................................................//主函数
}
void exter0() interrupt 0 //中断函数,无论用什么中断都要这个函数,0表示工作方式0,有0到5
C/T=0为定时模式,C/T1为计数
模式
M1M0:工作方式置位,定时/计数器
有四种工作方式,由M1M0进行
设置。 外部中断引脚就是 P3^2
引脚
单片机核心就是中断,定时器
串口通信
定时器工作方式设置表
M1M0 工作方式 说明
00 方式0 13位定时/计数器
80c51单片机定时/计数器的工作由两个特殊功能其存期控制。TMOD用于设置工作方式;
一、工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:
位 7 6 5 4 3 2 1 0
TL0=(65536-60000)%256
定时/计数器应用举例子
初始化程序应用完成如下工作:
对TMOD赋值,以确定T0和T1或
TH1的工作方式。
计算初值,并将其写入TH0,TL0或
TH1,TL1.
中断方式时,则对IE赋值,开放中断。
{
........................................... //中断函数,进入中断函数执行中断函数,中断函数有点像c语言的函数调用
}
跳变沿方式
EA=1;//打开总中断,无论用什么中断方式是什么都必须打开总中断
EX0=1;//打开外部中断,使用外部中断时候必须打开外部中断
可见,由溢出世时计数器的值减去计数初值才是加1计数器的计数值
计数器值——计数初值=加1计数器的计数值
计数值就是计数多少个数
假如晶振是12
50*1/12*12 12是震荡周期 1/12是 1/12是晶振周期
12个分频就是12个震荡周期刚好是一个计时器周期
设置为定时模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个震荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。
ET0=1; //打开定时器0
TR0=1; //启动定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
void main()
{
................................//主函数
字节地址:89H GAT C/t M1 M0 GATE C/t M1 M0 TMOD
GATE:门控位。GATE=0时,只要
软件使TR0或TR1为1,同时
外部中断引脚或也为高电平,才
能启动定时/计数器工作。即此时
定时器的启动多了一条件。
C/T:定时/计数器模式选择位,
}
void time0() interrupt 1 //中断函数,工作方式为1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
定时器1
EA=1; //打开总中断
TH0=(65536—50000)/256 等于十六进制 3CB0 超过256的装在高八位中 50000就是50毫秒 就是需要定时的时间
TL0=(65536—50000)%256 不超过256的装在低八位中
TH0 ,TL0是寄存器
要计算60毫秒的就 TH0=(65536-60000)/256
公式为TH0=(65536-要定时多少时间)/256;
TL0=(65536-要定时多少时间)%256;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
定时器0
EA=1; //打开总中断
TMOD=0x01; //设置定时器0为工作方式1
65535*1等于微妙
65535就是65毫秒
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0,T1引脚电平。当某周期采样到一高电平输入,而下一周期采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要两个机器周期,因此晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2us。
1时,T1开始工作:TR1置0时,T1停止
工作,TR1由软件置0或者1,所以,用
软件可以控制定时/计数器的启动和停止
TF0(TCON.5):T0溢出中断请求标志位,
其功能与TF1类同
TR0(TCON.4):T0运行控制位,其功能
与TR1类同
方式1
方式1的计数位数是16位,由TL0作为低
}
void time0() interrupt 3 //中断函数,工作方式为3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
TCON的低四位用于控制外部中断,
已在前面介绍。TCON的高四位用于控制
定时器/计数器的启动和中断申请,其格
式如下:
位 7 6 5 4 3 2 1 0
字节地址:88H TF1 TR1 TF0 TR0 TCON ቤተ መጻሕፍቲ ባይዱ
{
........................................... //中断函数,进入中断函数执行中断函数,中断函数有点像c语言的函数调用
}
中断定时器
使用中断定时器的时候 必须要打开总中断,打开定时器中断, 设置定时器0为工作方式1,启动定时器,定时器有定时器0和1两种方式,然后计算计数时间
采用可编程的芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。
定时/计数器的结构和工作原理
1.定时/计数器的实质是加一计数器(16位),由高8位和低8位两个寄存器组成,TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能,TCON是控制器,T1,T0的启动和停止以及设置溢出标志。
使IR0或TR1置位,启动定时/计数器
或计数。
51单片机有5个中断先介绍三个中断先
外部中断有下降沿和跳变沿
触发沿方式
EA=1; //打开总中断,无论用什么中断都必须打开总中断
EX0=1;//打开外部中断
void exter0() interrupt 0 //中断函数,无论用什么中断都要这个函数,0表示工作方式0,有0到5