[AVR单片机] 如何让程序退出中断后执行指定函数

[复制链接]
5259|4
 楼主| a778 发表于 2011-7-15 19:19 | 显示全部楼层 |阅读模式
在winavr 里如何让程序退出中断后执行指定程序?我的程序从A顺序执行到C,在B点外中断发生,我处理后要程序回到A点,而不是从B点到C点,但是在这个过程中我不能用查询。
老鱼探戈 发表于 2011-7-15 22:04 | 显示全部楼层
可以在中断中产生一个标志位,在B点下面判断这个标志位,然后执行continue语句
sjtuhzyong 发表于 2011-7-16 00:33 | 显示全部楼层
同意楼上的看法,设置标志位,在中断结束前标志位置位
 楼主| a778 发表于 2011-7-16 18:52 | 显示全部楼层
因为我的中断在任何时候都可能发生,如果这样了的话我要不停的查标志位。好像书上说可以改变sp然后在中断结束执行reti时会把栈顶弹至pc 这样程序返回时就从指定的pc开始执行,好像说的很有道理,因为中断发生时就是把当前地址压入堆栈的,然后返回时出栈,才能找到当执行的程序。
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部