OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4027|回复: 4

问一个问题,请大家帮忙解答下

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-10-13
在线时间
1 小时
发表于 2021-10-14 08:19:48 来自手机 | 显示全部楼层 |阅读模式
51单片机的中断向量表里面装了中断中断服务函数的地址。但是举个例子,第一个服务函数的地址是0x0003,第二个服务函数地址是0x000B,这是不是表示中断函数不能编写超过8字节的内容啊?因为如果超过8字节,这个函数不是会占调其他函数的位置吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2021-10-14 09:46:59 | 显示全部楼层
所以,一般就只放一条跳转指令。
傲游截图20211014094611.jpg
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-10-13
在线时间
1 小时
 楼主| 发表于 2021-10-14 15:11:52 来自手机 | 显示全部楼层
LcwSwust 发表于 2021-10-14 09:46
所以,一般就只放一条跳转指令。

同一种中断,每次跳转的地方都是固定的吗?
假如中断向量表中存储的中断1  的跳转指令是跳转到0x0050(随便写的地址),然后中断2的跳转指令是跳到0x0060(随便写的地址)。那这不是说明中断1服务函数占的空间只能在0x0050到0x0060这16个字节之间吗?要是超过了16字节就会占掉中断2服务函数的空间啊。单片机是怎么保障不会发生这种事的呢?
请指教一下!!
回复 支持 反对

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2021-10-14 15:30:31 | 显示全部楼层
本帖最后由 LcwSwust 于 2021-10-14 15:32 编辑
焕昌 发表于 2021-10-14 15:11
同一种中断,每次跳转的地方都是固定的吗?
假如中断向量表中存储的中断1  的跳转指令是跳转到0x0050( ...

如果是用C写代码,那就是编译器的事,自动跳转到中断服务函数的入口处,你担心的问题不存在。
若是用汇编写代码,那就是作者的事了,想怎么跳就怎么跳。
专治疑难杂症
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-12-7
在线时间
4 小时
发表于 2021-10-17 21:11:50 | 显示全部楼层
无论你用汇编或C来写,编译器(准确地说是链接器)都会自动安排好地址,绝不可能把大的程序段硬塞到小空间去。当然前提是你写的程序要是可重定位代码段(C通常没问题,汇编有些人喜欢一串ORG自己安排地址的要当心了),如果都是使用绝对地址那只能你自己来保证不会冲突了,KEIL会严格照你指定的地址来。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 01:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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