发新帖我要提问
12
返回列表
打印

根据中断中的判断,直接跳转到对应的地方,如何实现?

[复制链接]
楼主: hanwe
手机看帖
扫描二维码
随时随地手机跟帖
21
zhanglli| | 2020-11-2 21:55 | 只看该作者 回帖奖励 |倒序浏览
如果中断处理函数太长,一般可设一标记,在主程序里进行处理。

使用特权

评论回复
22
yufe| | 2020-11-2 21:58 | 只看该作者

做设计  要把复杂问题简单化  而不能把简单问题复杂化
LZ提到的问题  采用分时处理即可  
在没有OS的情况下 可以使用消息事件模型来作为程序的框架

使用特权

评论回复
23
hanwe|  楼主 | 2020-11-2 22:04 | 只看该作者

void program1(){...}
void program2(){...}
main()
{
...
program1();
...
program2();
...
}
ISR()
{
if(A) program1();
if(b)program2();
}

使用特权

评论回复
24
llia| | 2020-11-2 22:08 | 只看该作者
CALL 你需要的GOTO就行了

使用特权

评论回复
25
wangpe| | 2020-11-2 22:11 | 只看该作者
中断里只设置标志位。main里来个while,里边查询标志位

使用特权

评论回复
26
langgq| | 2020-11-2 22:15 | 只看该作者
根据标志位分别执行F1和F2,记得在执行F1、F2的末尾将标志位再置回没有中断的状态。

使用特权

评论回复
27
wangzsa| | 2020-11-2 22:19 | 只看该作者
直接在中断里设置标志位,然后在主循环里根据标志位执行程序。

使用特权

评论回复
28
lium| | 2020-11-2 22:25 | 只看该作者

回答的方向不对。

楼主是说,如果中断ISR来了,能不能立即执行这一特定功能,关键在实时。

你们回答的 都是说在中断中设置标记,然后在主程序中运行。

但是主程程序执行到 判断这 个标记 时间已经 很慢了,不是实时。

使用特权

评论回复
29
hanwe|  楼主 | 2020-11-2 22:28 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则