打印

Keil C51红杏出墙记之精华-中断隐身

[复制链接]
3536|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2009-2-9 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
“中断隐身”是俺瞎起的名词,它实际就是OS的思想---将中断降级。
这样就可让同级别的中断执行,自身降级后又高于用户级别如主函数内的主循环。

它实际是个特殊的前后台程序,不过和一般裸奔的前后台程序有着本质的不同。

它是每个前台中断程序都自动携带一个后台程序,而非多前台单后台系统。
即它是一个多前台多后台系统。

HotIns内有6个毒性很深的“函数”,有:
1.软复位函数_reset_()
2.软启动函数_start_()
3.中断隐身函数_intjmp_()
4.直接调用函数_lcall_()
5.直接跳转函数_ljmp_()
6.通用直接或间接调用函数_icall_()

说明及用法如下:
1.软复位函数_reset_()
主要起软件复位作用,和C的函数指针为0一样。
它和好处是代码简洁高效并复用,同时也为硬件看门狗的检测提供服务。

2.软启动函数_start_()
主要起软硬件复位后,执行2次RETI开放51特有的“中断优先级隐身门”。
在汇编时常用,但在C函数上很难实现,因为几乎任何的C编译器都不允许
普通函数调用中断函数。

HotIns早已考虑了软件抗干扰的问题,这是几乎99.99%的C人不会考虑的问题。

3.中断隐身函数_intjmp_()
主要起中断级别降低作用,实际在汇编中可以用一句lcall (reti指令的地址)
这样lcall后降级为用户级,故同级中断得以执行而不被锁死
(51只有高低两级,可同级多个中断程序)
本“函数”是HotIns的精华之精华,故HotIns别名为“红杏出墙记”节选。
它也是“红杏系列”的支柱。如HotTask51就是以它为核心实现“裸奔式”的OS.

4.直接调用函数_lcall_()
它可以“胡作非为”地在C函数中直接调用的任何指令地址为“函数入口地址”。
它奠定了HotTask51肯定不同于一般的OS~~~

5.直接跳转函数_ljmp_()
它可以“胡作非为”地在C函数中直接跳转的任何指令地址为“程序散转地址”。

它奠定了HotTask51肯定不同于一般的OS~~~

6.通用直接或间接调用函数_icall_()
它为HotIns的“桥梁函数”,也可为用户“胡作非为”提供方便~~~

转帖需声明菜地http://blog.**/hotpower/,谢谢合作!

菜农HotPower@126.com 2009.2.8 于西安大雁塔菜地


相关链接:http://www.google.cn/search?hl=zh-CN&q=Keil+C51%E7%BA%A2%E6%9D%8F%E5%87%BA%E5%A2%99%E8%AE%B0&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&oq=

相关帖子

沙发
ayb_ice| | 2009-2-9 18:07 | 只看该作者

直接扩展中断优先级也很有用

不过,51超过四级嵌套意义不大了

使用特权

评论回复
板凳
hotpower|  楼主 | 2009-2-10 02:11 | 只看该作者

小朋友名言---功夫再高,也怕菜刀.

使用特权

评论回复
地板
救火车| | 2009-2-10 09:21 | 只看该作者

顶!!!!!!!

使用特权

评论回复
5
HotTask51| | 2009-2-11 09:52 | 只看该作者

哈哈~~~俺要开始裸奔了~~~

使用特权

评论回复
6
hq_y| | 2009-2-11 10:28 | 只看该作者

哈哈~~~俺搬个马扎看老hot裸奔~~~

使用特权

评论回复
7
disarm| | 2009-7-14 16:39 | 只看该作者

今天下班,明天再看

使用特权

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

本版积分规则

1460

主题

21619

帖子

506

粉丝