打印
[AVR单片机]

如何让程序退出中断后执行指定函数

[复制链接]
4158|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a778|  楼主 | 2011-7-15 19:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
老鱼探戈| | 2011-7-15 22:04 | 只看该作者
可以在中断中产生一个标志位,在B点下面判断这个标志位,然后执行continue语句

使用特权

评论回复
板凳
sjtuhzyong| | 2011-7-16 00:33 | 只看该作者
同意楼上的看法,设置标志位,在中断结束前标志位置位

使用特权

评论回复
地板
a778|  楼主 | 2011-7-16 18:52 | 只看该作者
因为我的中断在任何时候都可能发生,如果这样了的话我要不停的查标志位。好像书上说可以改变sp然后在中断结束执行reti时会把栈顶弹至pc 这样程序返回时就从指定的pc开始执行,好像说的很有道理,因为中断发生时就是把当前地址压入堆栈的,然后返回时出栈,才能找到当执行的程序。

使用特权

评论回复
5
a778|  楼主 | 2011-7-16 19:08 | 只看该作者
SIGNAL(SIG_INTERRUPT2)///int2
{
cli();
sbi(PORTA,6);///TURN OFF YELLOW LED
cbi(PORTA,5);///TURN ON RED LED
WriteString("FCT FAILED",xPos2,yPos2);
SPH=0X00;///这是我要执行函数的地址。可是中断发生时,程序会从main开始执行。
SPL=0X0C;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

1

粉丝