|
本帖最后由 lwind_oma 于 2012-8-18 20:26 编辑
MCU:STC15F104E
程序结构大致是这样:
bit bInt=0;
void main()
{
...; // 初始化
while(1)
{
...;
bInt=0;
...;
while(bInt==0); //死机时,就是卡在这条语句上了,卡住时,TCON=0x73,IE=0x8B
...;
}
}
void int0(void) interrupt 0 using 0//外部中断0中断服务程序
{
...;
bInt=1;
...;
}
void timer0(void) interrupt 1 using 1 //定时器0中断服务程序
{
...;
bInt=1;
...;
}
问题:程序启动后,进入主循环,开始时一切正常,但没多久就死机了.后来经调试发现,死机时程序总是卡在while(bInt==0);这条语句上了。
利用串口输出信息,发现卡死时TCON=0x73,IE=0x8B,而正常没卡住时,TCON=0x51,IE=0x8B.
因为TCON=0x73,所以TF0=1,IE0=1,即定时器0和外部中断0都发生了中断,照理bInt肯定会被置1了,但为什么还会卡在while(bInt==0);上了呢?
感觉发生了中断,但没有执行中断程序(可IE=0x8B,EA=1,ET0=1,EX0=1)
希望大家能帮我分析一下原因?这个问题已困扰我一个星期了。谢谢!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|