有谁单片机定时中断前无限循环的目的是什么啊?

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:33:06
请帮帮分析一下下面程序的具体运行过程!(到底何时进入中断函数)
#define uchar unsigned char
#include<reg52.h>
sbit P10=P1^0;
void main()
{
RCAP2H=0x10;
RCAP2L=0x00;
TR2=1;
ET2=1;
EA=1;
while(1);
}
void timer2() interrupt 5
{
static uchar t;
TF2=0;
t++;
if(t==30)
{
t=0;
P10=~P10;
}
}

while(1);代表主程序执行,实际应用中可能是其他语句块(例如处理数据)
还有就是main()执行完了会重新开始程序从(0000H开始),最后一句死循环可防止这一点。

cpu和timer是同步执行的。
定时器设定初值后,每个机器周期timer+1,溢出后就中断了。系统会暂停主程序,跳到中断服务子程序,完了再回到主程序。

中央处理器和内部定时器是同步执行的(也就是说是两个各自独立的两个部件)
当你启动定时器后,定时器就自己在那里定时(此时和CPU无关系),定时器定时时间到时就会触发一个定时中断,当CPU响应这个中断时就进入了中断函数

单片机定时中断前无限循环的目的是等待中断,当时间到时进入中断!!

循环的时候定时器在走.到溢出的时候就执行中断了.