lkc8210 发表于 2023-9-25 09:03 知己难得 |
Hephaestus 发表于 2023-9-23 21:50 我能说出A51能实现,自然是可以实现的,但是……,凭什么给你看? 还是让你“乐一乐”? 俗话说得好,教你是把钱塞你口袋里,你早就把我得罪死了。你觉得我是圣人么? 以德报怨? 有些白眼狼养不熟的,我相信我就算把钱赛你口袋里,你不但不记好,还会变本加厉,所以…… 呵呵,长得不怎么样,就不要想得美了。 |
Hephaestus 发表于 2023-9-22 22:38 本次不返回,不代表永远不返回,你觉得肯定会乱套,是因为局限于你的能力,你要是有掌握和规划全局的能力,就能让它乱不起来,那么也就不会这么以为了…… 先给自己充充电,再来捉摸这个问题吧。这么武断用上 永远 绝对 这些词的习惯,你该改改了,除了暴露你知识的局限性,给你带不来任何好处。 |
多任务应该还是回到分配任务的函数,否则代码是会跑飞的,楼主这是想要做类似操作系统的东西,但是又似乎是不要受到任何约束,任何代码的跳转本身就是因为约束条件而跳转的,这等于是吃着大米长大,然后说从未吃过大米 |
yuxuesuixing 发表于 2023-9-25 09:38 多任务就是不能返回到之前的函数 |
这个问题是屁股决定脑袋,不返回当时的函数要返回到哪里去?那么多现场变量保存了有啥意义?每跳转一次栈就废弃一堆空间,几次你栈就溢出了。 问问题就是仔仔细细说,你一句话没有人能理解你的用意。我用通俗的方式描述你的问题:如何把胳膊卸下来,然后进这个洞离去 |
各位大佬不用想的太深 这问题想达到的目的只是 "如何在有长时间阻塞式延时的请况下,用外中断来快速切换模式" 最简单的方法就是在delay里加跳出判断 |
我给你来个程序试试。![]()
|
Hephaestus 发表于 2023-9-22 22:38 这个问题早年51流行的时候就解决了,就是三楼的思路,不过还要加上清除相关标记等操作才能正常跳转。 |
188610329 发表于 2023-9-23 20:49 那你用A51实现下让我也乐一乐。 |
188610329 发表于 2023-9-23 20:49 感谢,我纯小白真看不出懂,哈哈看看以后能不能解决了, |
你通过 SP 找到栈 再到 栈里面 把 入栈的 PC指针 改成 你希望跳转到的地址。 就能不返回 原函数了。 不过,看你用的是 C51 而不是 A51 估计,做到这点 够呛…… |
你不知道在哪里发生中断,不返回原地址肯定乱套了,这个问题你永远解决不了。 |