首页 > 编程知识 正文

51单片机定时器中断的作用,51单片机定时器使用方法

时间:2023-05-04 02:23:31 阅读:112211 作者:1996

1 .定义定时器介绍: 51单片机定时器是单片机的内部资源,其电路的连接和运行均在单片机内部完成。

2 .作用定时器作用:

1 .用于计数系统,可以实现软件计时,也可以每隔一定时间在程序上完成一个操作

2 .取代长时间延迟,提高CPU的运行效率和处理速度

3 .定时器资源1 .定时器数量为三个(T0、T1、T2 ),T0和T1与传统的51单片机兼容,T2是该型号单片机增加的资源

注意:定时器资源和单片机型号与相关,不同型号的定时器数量和操作方式可能不同,但一般来说,T0和T1的操作方式是所有51单片机通用的。

4 .计时器操作模式STC89C52的T0和T1都是四种操作模式

模式0:13位定时器/计数器

模式1:16位定时器/计数器(常用)

模式2:8位自动重装模式

模式3:2个8位计数器

图2是计时器1动作模式框图:

sysclk-MCU模式:系统时钟选择分频模式

C/T=0计时器模式=1计数器模式

5 .工作过程原理

计时器在单片机内部就像一个小闹钟,根据时钟的输出信号,每“1秒”计数单元的数值相加,计数单元的数值增加到“设定闹钟时”,计数单元的数值就增加到“设定闹钟时”

说明:中断系统

6 .定时器相关寄存器TCON位于特殊功能寄存器(SFR )中,可以进行位地址指定

TF1/TF0-----计时器/计数器溢出标志

计时器溢出时,硬件设置为1,向CPU申请中断,进入中断服务程序后,硬件自动清零。

TR1/TR0-------计时器运行控制位

当GATE=1时,当相应的外部中断端子(INT1/INT0)为高电平时,TR1/TR0启动计时器,当GATE=0时,TR1/TR0启动计时器

ie1/ie0-----外部中断请求标志位

it1/it0-----外部中断触发方式选择位

0为电平触发模式

1是跳跃边缘触发方式

门--- -门控制

GATE=0,定时器计数器的启动和停止仅由TCON寄存器的Trx (x=0,1 )控制

GATE=1,定时器计数器启动和停止由外部中断端子(INT0或INT1)上的电平状态控制

C/T----计时器或计数器模式选择位

m1m 0操作模式选择位

每个计时器有四种工作模式,它们由M1M0设置

说明

1 .寄存器是连接软硬件的媒介

2 .在单片机中,寄存器是特殊的RAM存储器,寄存器可以存储和读取数据,而各寄存器的后面连接有导线,控制电路的连接方法。

3 .寄存器相当于复杂机器的“操作按钮”

7 .定时器配置步骤1.配置工作方式寄存器—TMOD

GATE=0,定时器仅由TCON寄存器的Trx (x=0,1 )控制

GATE=1,共同控制计时器TCON寄存器中的Trx (x=0,1 )和外部中断读取) INT0或INT1)上的电平状态。

C/T=1,计数器模式;

C/T=0,处于计时器模式。

M1M0一工作方式选择位; 共有四种工作方式,选择常规方式1和方式2; 即M1M0=0 1或M1M0=1 0

2.选择定时器数值—— THx、TLx

)1) 51单片机的定时器总是方式1或方式2

)方式1下可以安装的总数为65536

)3)方式2下可以转入的总数为256

方式为: th0=(65536-1000 )/256

TL0=(65536-1000 ) 256

TH0=0xfc

TL0=0x18

3.配置控制寄存器——TCON

TF1计时器1溢出标志。

如果计时器1溢出,则在硬件上设置TF1并申请中断。 进入中断服务程序后,硬件自动清零。 需要注意的是,如果使用计时器中断,则该位完全不需要人手操作,但如果使用软件查询方式,则需要查询其位置1,然后用软件清零。

TR1-计时器1运行控制位。

在软件清除0时关闭计时器1。 在门=1且INT1为高电平的情况下,TR1装置1启动计时器1; GATE=0时,TR1设定计时器1。

TFO-定时器0溢出标志,功能和操作方法与TF1相同。

tro-timer 0的运行控制位,其功能和操作方法与TR1相同。

IE1-外部中断1请求标志。

当IT1=0时,成为电平触发方式,每个机器周期的S5P2对lNT1端子进行采样,如果INT1端子为低电平则设为1,否则设为IE1清除0。

IT1=1时,INT1为跳跃

变沿触发方式,当第一个机器周期采样到INT1为低电平时,则IE1置1。IE1=1,表示外部中断1正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,该位由硬件清0。
IT1-外部中断1触发方式选择位。
IT1=0,为电平触发方式,引脚INT1.上低电平有效。
IT1=1,为跳变沿触发方式,引脚INT1.上的电平从高到低的负跳变有效。
IE0一外部中断0请求标志,其功能及操作方法同IE1。
IT0–外部中断0触发方式选择位,其功能及操作方法同IT1。

4.打开总中断——EA = 1

5.开启定时器中断ET0/1

6.配置中断优先级PT0/1

7.编写中断服务函数
附上代码

#include <REGX52.H>sbit led=P1^0;sbit shake=P1^1;void Delay500ms()//@11.0592MHz{unsigned char i, j, k;i = 22;j = 3;k = 227;do{do{while (--k);} while (--j);} while (--i);}void Timer0Init(void)//100微秒@12.000MHz{TMOD &= 0xF0;//设置定时器模式TMOD |= 0x01;//设置定时器模式TL0 = 0x9C;//设置定时初值TH0 = 0xFF;//设置定时初值TF0 = 0;//清除TF0标志TR0 = 1;//定时器0开始计时ET0 = 1;//打开定时器0中断EA = 1;//打开总中断PT0 = 1;//中断优先级设置}//定时器中断函数模板void Timer0_Routine() interrupt 1{static unsigned int T0Count;TL0 = 0x9C;//设置定时初值TH0 = 0xFF;//设置定时初值 上面是多少这里就重置多少T0Count++;if(T0Count>=1000){led=0;Delay500ms();led=1;Delay500ms();}}void main(){Timer0Init();while(1){}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。