void time0() interrupt 1 using 1 { sub(); }
bit sub() {
}
改为: void time0() interrupt 1 using 1 { sub(); }
bit sub() using 1 {
}
俺在汇编数组中,绝对禁用mov 05,b 都用: mov a,b mov r5,a 代替~~~因为using x有时很致命。而且对重入不利~~~
keil虽然聪明,但sub()默认为0组,即 bit sub() using 0 {
}
只不过没使用push psw;mov psw,#00h;...pop psw; 所以在sub()内keil认为是在0组。
为使sub()被其他被中断函数调用,可改为:
void time0() interrupt 1 using 1 { PSW = 0; sub(); }
再可以: void time0() interrupt 1 { sub(); }
这样keil将在中断程序里保护r0~r7.
所以using x一定要用好~~~而非“不主张在中断中调用普通函数”。
|