完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
中断函数不能进行参数传递
中断函数没有返回值 在任何情况下都不能直接用中断函数 中断函数使用浮点运算要保存浮点寄存器的状态。 如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器必须与中断函数相同,被调函数最好设置为可重入的。 C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容,具体如下: ○ 在程序开始处对ACC、B、DPH、DPL和PSW入栈,结束时出栈。 ○ 中断函数未加using n修饰符的,开始时还要将R0~R1入栈,结束时出栈。 ○ 如中断函数加using n修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。 C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即inerrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。 中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其它程序调用。 在设计中断时,要注意的是哪些功能应该放在中断程序中,哪些功能应该放在主程序中。一般来说中断服务程序应该做最少量的工作,这样做有很多好处。 首先系统对中断的反应面更宽了,有些系统如果丢失中断或对中断反应太慢将产生十分严重的后果,这时有充足的时间等待中断是十分重要的。 其次它可使中断服务程序的结构简单,不容易出错。中断程序中放入的东西越多,他们之间越容易起冲突。简化中断服务程序意味着软件中将有更多的代码段,但可把这些都放入主程序中。 中断服务程序的设计对系统的成败有至关重要的作用,要仔细考虑各中断之间的关系和每个中断执行的时间,特别要注意那些对同一个数据进行操作的ISR。 以下课程可免费试听C语言、电子、PCB、STM32、Linux、FPGA、Python、安卓等。想学习的你和我联系预约就可以免费听课了 宋工Q3/5/2/4/6/5/9/0/8/8 Tel/WX:1/7/3/1/7/9/5/1/9/0/8 |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
157 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
825 浏览 0 评论
2372 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2226 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1694 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5713 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-23 19:36 , Processed in 0.484598 second(s), Total 56, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号