单片机C语言关于定时计数器程序运行时序问题
请问定时计数器计数过程中是否占用主函数运行时间,while(1)怎么解释,主函数运行后会跳过这条指令吗?中断服务程序中,当i自加一次后,未满足IF条件,会跳出服务程序回到主程序吗?计数器在中断服务程序中会运行吗?i定义为静态和动态有区别吗?我见其它程序也有定义成动态变量的。就是时序搞不懂,求大神# include <reg52.h>
sbit D1 = P1^0;//LED灯对于IO口位声明
void main()
{
TMOD = 0x00; //定时器0工作模式0,13位计数器
TH0 = (8192 - 4608) / 32;//TH储存13位中高8位
TL0 = (8192 - 4608) % 32;//TL储存13位中低5位,定时5毫秒
ET0 = 1; //开定时器0中断
TR0 = 1; //启动定时器0
EA = 1; //开总中断
while (1);//等待中断
}
void Timer0() interrupt 1//定时器0中断服务程序
{
static unsigned char i;//溢出次数计数静态变量
TH0 = (8192 - 4608) / 32;
TL0 = (8192 - 4608) % 32;/*每次溢出后需给定时器0放置初值*/
i++;
if (i == 200) //200次溢出后1秒时间到
{
D1 = ~D1;//将LED灯状态取反
i = 0; // 清零溢出计次数
}
}