上述代码中,Sec_Loop函数的调用时间会超过计数器的溢出值吗
时间: 2024-02-26 07:51:52 浏览: 24
在上述代码中,`Sec_Loop()`函数的调用时间不会超过定时器计数器的溢出值。
在`Timer0_Routine()`函数中,每20次计数器溢出时,即每100毫秒,就会调用一次`Sec_Loop()`函数进行计时。而定时器0的计数器初值为65536-5000,即每经过5000个计数器时定时器0的计数器就会溢出,并触发中断。因此,在每个中断发生前,`Sec_Loop()`函数被调用的时间不会超过5000个计数器所经过的时间,也就是250毫秒。
因此,`Sec_Loop()`函数的调用时间不会超过计数器的溢出值,不会影响计时的准确性。
相关问题
执行一个中断,函数Sec_Loop中变量的值变成了多少
在上述代码中,`Sec_Loop()`函数中有两个变量:`minisec`和`flag`。
在中断服务程序`Timer0_Routine()`中,每经过20次定时器0中断,即100毫秒,就会调用一次`Sec_Loop()`函数。在`Sec_Loop()`函数中,首先判断`flag`标志是否被设置。如果被设置,则每次调用都会将`minisec`加1。
因此,如果在定时器0中断触发前,`flag`标志被设置,那么每经过20次定时器0中断,`minisec`的值就会增加20。如果在定时器0中断触发前,`flag`标志未被设置,那么`minisec`的值保持不变。
需要注意的是,在`Sec_Loop()`函数中,当`minisec`的值达到100时,会将其归零并将`sec`加1。因此,如果`minisec`的值增加到超过100,那么`minisec`会在下一个定时器0中断触发时被重置为0,并且`sec`的值会增加1。
而在`Sec_Loop()`函数中并没有对`flag`标志进行修改操作,因此该标志的值不会受到`Sec_Loop()`函数的影响,仍然保持原来的值。
void Sec_Loop() { if(flag) { minisec++; if(minisec>=100) { minisec = 0; sec++; if(sec>=60) { min = 0; if(min>=60){min = 0;} } } } } void Timer0_Routine() interrupt 1 { static unsigned int T0Count0,T0Count1,T0Count2; TL0 = 0x18; TH0 = 0xFC; T0Count2++; if(T0Count2>=20) { T0Count2=0; Sec_Loop(); } }
这是一个计时器中断函数的代码。其中,`Sec_Loop()`是一个用于计时的函数,`Timer0_Routine()`是一个定时器0的中断函数,当定时器0的计数器溢出时会自动触发中断。
在`Sec_Loop()`函数中,当`flag`标志位被设置时,每100毫秒会将`minisec`加1,如果`minisec`达到100,则将其归零并将`sec`加1。如果`sec`达到60,则将其归零并将`min`加1。当`min`达到60时,将其归零。
在`Timer0_Routine()`函数中,首先设置计时器0的初值。然后每20次计数器溢出时,即每100毫秒,就调用一次`Sec_Loop()`函数进行计时。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)