51单片机中的定时器中断是怎么用的 ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机中的定时器中断是怎么用的 ?相关的知识,希望对你有一定的参考价值。

比如想让每隔100ms中断一次呢 ?

代码如下:

//实现led灯一秒亮灭闪烁

void main()

    TMOD=0x01;//设置定时器0为工作方式1(M1 M0为01)

    TH0=(65536-45872)/256;//装初值11.0582晶振定时50ms数为45872

    TL0=(65536-45872)%256;

    EA=1;//开总中断

    ET0=1;//开定时器0中断

    TR0=1;//启动定时器0

    while(1);//程序停止在这里等待中断发生


void T0_time() interrupt 1

    TMOD=0x01;//重装初值

    TH0=(65536-45872)/256;

    num++;//num每加一次判断一次是否到20次

    if(num==20)//如果到了20次,说明1秒时间到

       

            num=0;//num清0重新计数

            led=~led1;

       

扩展资料

定时器有两种工作模式,分别为计数模式和定时模式。对Px,y的输入脉冲进行计数为计数模式。定时模式,则是对MCU的主时钟经过12分频后计数。因为主时钟是相对稳定的,所以可以通过计数值推算出计数所经过的时间。

51单片机计数器的脉冲输入脚。主要的脉冲输入脚有Px,y, 也指对应T0的P3.4和对应T1的P3.5,主要用来检测片外来的脉冲。而引脚18和19则对应着晶振的输入脉冲,脉冲的频率和周期为

F = f/12 = 11.0592M/12 = 0.9216MHZ      T = 1/F = 1.085us 

51计数器的计数值存放于特殊功能寄存器中。T0(TL0-0x8A, TH0-0x8C), T1(TL1-0x8B, TH1-0x8D)

定时器常用作定时时钟,以实现定时检测,定时响应、定时控制,并且可以产生ms宽的脉冲信号,驱动步进电机。定时和计数的最终功能都是通过计数实现,若计数的事件源是周期固定的脉冲则可实现定时功能,否则只能实现计数功能。因此可以将定时和计数功能全由一个部件实现。

参考技术A 所以中断的使用:
1.开全局中断 51是 EA = 1
2.对应中断使能 比如定时器1 ET1 = 1、定时器0 ET0 = 1
3.定时器工作方式配置: 有三种方式 双8位定时 16位定时 还有捕捉方式 定时器2有4种 ,具体不介绍了 TMOD 是定时器0和定时器1方式配置的寄存器 TMOD = 0x01,定时器0工作在方式1(16位计数)
4.打开定时器 TR0 = 1;定时器1打开是 TR1 = 1;
5.中断服务程序:就是定时时间到,你要处理的事务。
例子://50ms定时
void main(void)

TMOD = 0x01; //配置方式
TH0 = 0x3C; //计数时间
TL0 = 0xB0;
TR0 = 1; //开启定时器
EA = 1; //全局中断打开
ET0 = 1; //定时器0中断打开
for(;;)


void Timer0_ISR(void) intterupt 1 //中断服务程序

TH0 = 0x3C; //计数时间
TL0 = 0xB0;

P1 = 0x11; //定时到,要执行的动作
本回答被提问者采纳

请教高人C51单片机C语言中的中断优先级怎么设置?

如果是同时用到几个中断像T0,T1,外部中断0,串口的,这么多个如果要按指定的优先顺序进行处理中断,只设置IP就可以了吗?具体怎么设置?

C51中设置中断优先级,需要对中断寄存器IP进行配置。具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句:

IP = 06H; // 如果5个中断同时发生,则响应次序为:定时器0 -> 外中断1 -> 外中断0 -> 定时器1 -> 串行中断

下面给出IP寄存器中每位(共8位)的含义:
PX0(IP.0),外部中断0优先级设定位;
PT0(IP.1),定时/计数器T0优先级设定位;
PX1(IP.2),外部中断0优先级设定位;
PT1(IP.3),定时/计数器T1优先级设定位;
PS (IP.4),串行口优先级设定位;
PT2 (IP.5), 定时/计数器T2优先级设定位(80C52的T2)
IP.6和IP.7无意义,均为0(在C51中PT2也设置为0)。

ps:IP默认值为00H,此时优先级顺序为:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
参考技术A 具体设置看书就知道了,自己解决问题,才能真正掌握。优先级,只有两个优先级,也就是说,如果有多个中断,那只能是有一个是最优先的,其它的按照同等处理。 参考技术B 单片机已经定好了中断优先级,你可以进入中断处理函数的时候关掉总中断 参考技术C http://wenku.baidu.com/view/062f262acfc789eb172dc835.html本回答被提问者采纳

以上是关于51单片机中的定时器中断是怎么用的 ?的主要内容,如果未能解决你的问题,请参考以下文章

51单片机定时器问题

51单片机定时器2的最短定时时间怎么有限制?

请问单片机定时器中断是怎么样的过程啊

51单片机定时器中断

51单片机的中断嵌套怎么实现呢?

单片机怎么清中断标志位