作业帮 > 综合 > 作业

为什么在写中断函数时要写#pragma CODE_SEG __NEAR_SEG NON_BANKED这句话,是不是没什么

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/18 18:10:29
为什么在写中断函数时要写#pragma CODE_SEG __NEAR_SEG NON_BANKED这句话,是不是没什么实际作用的啊
'中断函数置于非分页区内'这是什么意思啊,非分页区是什么啊
是这样的,飞思卡尔单片机.拿s12系列的来说,NON_BANKED一般位于0xc000-0xffff区域,而这个区域是16位单片机可以直接寻址的区域,而__NEAR_SEG告诉编译器函数放在固定页中,只有固定页中的函数才能访问其他页的数据,同时CODE_SEG定义了一个代码段.
所以,你可以这样理解:中断函数存放在CPU可以直接寻址的范围内,这样就可以节省中断函数的访问时间,方便调用中断函数(因为中断函数要求的就是实时性)...顺便再多说一句,如果你不写这一句,默认的是将函数存放在分页的flash里面,此时函数为far函数,访问far函数是相当耗费时间的一件事,中断函数毫无实时性可言.
一般只有中断函数时才用__NEAR_SEG,对于一般函数来说__NEAR_SEG毫无作用...
回答你的问题:非分页区是不能进行分页的区域(不需要设置PPAGE寄存器),cpu可以直接对其进行访问,访问速度快...