各位大侠帮忙看看这段单片机c语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:11:08
void Extern_Int0_ISR(void) interrupt 0
{
Flash_Byte_Program_And_Verify(sector_addr,FLAG_LOSSPOWER);
Flash_Byte_Program_And_Verify(sector_addr+1,TL0);
Flash_Byte_Program_And_Verify(sector_addr+2,Value_f);
Flash_Byte_Program_And_Verify(sector_addr+3,Value_d);
Flash_Byte_Program_And_Verify(sector_addr+4,SetValue);
while(LossPower==0);
}
这是一段通过Int0口实现的掉电之后保存数据的中断子程序, Flash_Byte_Program_And_Verify为保存数据的子程序,对FLAG_LOSSPOWER,TL0,Value_f,Value_d,SetValue进行保存。
我不明白的是在这段子程序的最后为什么加了while(LossPower==0)这条语句,实现什么功能?
while(LossPower==0);是用来查询等待LossPower为0时进入子程序的 还是不满足LossPower为0时跳出子程序的?

单从这一句看只是起到一个停止程序运行的功能。至于为什么要这么做就需要系统程序整体一起来判断。个人分析可能的原因有两个:
1.可能是系统要求在掉电之后不允许主程序运行而引起误动作。
2.可能在程序的别处(特别是更高级别的中断中)对LossPower进行了有条件的置位,使系统能够有条件的继续(恢复)执行。

掉电后LossPower为0,程序就停在这,直到LossPower为1退出
后者

如果为0时继续等待,直至为1时跳出程序

中断的查询等待