我想要解决这个问题,而不是在执行条件时禁用中断。我正在写pic16f877a。并希望非常简单和基本的解决方案。
static int counter=0;
void main()
{
while(1)
{
if(counter)
{
counter--;
//code
}
}
InterruptSerial()
{
counter++;
//code
}
执行counter--;它被翻译成
load counter value
decrement loaded value
assign new value in counter register
如果在到达assign指令之前执行此代码时发生中断,则会导致错误行为。
正常解决方案
void main()
{
while(1)
{
if(counter)
{
disableInterrupts();
counter--;
//code
enableInterrupts();
}
}
如何解决这个问题而不禁用中断?