定时器中断实验

定时器中断实验 51单片机定时器中断一般步骤?

51单片机定时器中断一般步骤?

51单片机定时器中断一般步骤?

首先涉及到中断允许寄存器IE(可以进行位寻址,对某一位操作),全局中断允许位EA,定时器T0中断允许位ET0便在其中。

打开总中断,即EA=1;

开起定时器0中断,即ET0=1;

启动定时器涉及到定时器/计数器控制寄存器TCON(可进行位寻址),定时器0运行控制位TR0便在其中。

启动定时器0,即TR0=1;(在上述GATE=0的前提下)

51单片机定时器中断一般步骤?

定时器定时时间到,则自动进入中断程序,程序程序执行完后又“自动”返回主程序 由于nn是全局变量,所以它可以在原来的基础不断加1 如此反复 如果你看汇编程序:可知,不同的中断源有不同的中断程序入口地址,如定时器0的中断程序入口地址是000BH,一旦中断发生,程序便跳至此处执行,但此处并不是真正的中断程序,而它又是一条跳转指令,指向真正的中断服务程序,中断程序结束有一条返回语句RETI,又回到了中断之前的主程序中去,主程序每执行完一条指令,都要判断有无中断的发生,不需人工乾预 whlie(1)是个死循环,中断程序跳来跳去,还是在这个小圈子里

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

所以中断的使用:

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 //定时到,要执行的动作 }