找回密码
 注册
关于网站域名变更的通知
查看: 196|回复: 2
打印 上一主题 下一主题

在设计中断时,这九个注意事项要记住!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-8 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
中断函数不能进行参数传递
" N8 v& k$ ]% g中断函数没有返回值
6 K- q- Q3 g4 p, E5 }) ?在任何情况下都不能直接用中断函数
* W$ @2 k, G4 l2 a- _6 ~% z中断函数使用浮点运算要保存浮点寄存器的状态。
$ b8 b. T, S' ^6 y" z& `如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器必须与中断函数相同,被调函数最好设置为可重入的。
# \5 Q# J* }- A0 K+ s) R8 Q( G! l0 F. W9 r. t* @+ Z
C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容,具体如下:0 a0 y4 N2 T9 f2 l; O
○  在程序开始处对ACC、B、DPH、DPL和PSW入栈,结束时出栈。, G2 [# z. s* |, L: H3 W7 q5 T/ k% D
○  中断函数未加using n修饰符的,开始时还要将R0~R1入栈,结束时出栈。
* L6 l; n8 z* Y8 ^! _- ] ○  如中断函数加using n修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。/ k/ B' ]5 u8 _$ M4 `+ X, H
: q9 T3 z. U0 j2 @; U# }
C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即inerrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。
5 U! c2 F* @( ^( ?0 W/ m% H
1 H' J' A  B) `6 L中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其它程序调用。
5 c7 Y* ], P/ }- {
; ?4 n$ |2 X% ~8 ^" v在设计中断时,要注意的是哪些功能应该放在中断程序中,哪些功能应该放在主程序中。一般来说中断服务程序应该做最少量的工作,这样做有很多好处。
5 V/ Q$ v4 p# f
+ W3 x$ n( y- Y( o* {8 V首先系统对中断的反应面更宽了,有些系统如果丢失中断或对中断反应太慢将产生十分严重的后果,这时有充足的时间等待中断是十分重要的。
# b; m: W! k; E) o1 F, G4 j
. ?( m" o, [  _其次它可使中断服务程序的结构简单,不容易出错。中断程序中放入的东西越多,他们之间越容易起冲突。简化中断服务程序意味着软件中将有更多的代码段,但可把这些都放入主程序中。
' p* h. _' J& `) {( X中断服务程序的设计对系统的成败有至关重要的作用,要仔细考虑各中断之间的关系和每个中断执行的时间,特别要注意那些对同一个数据进行操作的ISR。
) R# D' c! Z8 ]% _0 R6 {2 v6 M% B
8 W( c. x/ ~- R! i, c) r8 J& q, w$ d- L* ]

8 ^( m- x# r" r  A; N# F# D0 R7 c: w
. N9 }* S+ Q/ F5 G& X

该用户从未签到

2#
发表于 2022-8-8 11:08 | 只看该作者
学习了,收藏学习一下

该用户从未签到

3#
发表于 2022-8-8 13:43 | 只看该作者
谢谢LZ分享那么好的东西。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-28 12:03 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表