智能车制作

标题: 苦逼的孩子连程序都不懂的啊,望大神相救呐 [打印本页]

作者: 浅语003    时间: 2012-3-23 21:59
标题: 苦逼的孩子连程序都不懂的啊,望大神相救呐
本帖最后由 浅语003 于 2012-3-23 21:59 编辑

大神问个问题:为什么在写中断函数时要写#pragma CODE_SEG __NEAR_SEG NON_BANKED这句话,是不是没什么实际作用的啊。                            '中断函数置于非分页区内'这是什么意思啊,非分页区是什么啊


作者: 征服者    时间: 2012-3-23 23:23
必须写
作者: 浅语003    时间: 2012-3-24 11:31
征服者 发表于 2012-3-23 23:23
必须写

为什么呢,什么意思的啊,怎么用的啊,不吝赐教吧
作者: 征服者    时间: 2012-3-27 14:45
浅语003 发表于 2012-3-24 11:31
为什么呢,什么意思的啊,怎么用的啊,不吝赐教吧

这个我也不是十分清楚,不写就是不好用

作者: 夏天C的微笑    时间: 2012-3-27 18:39
我今天也遇到楼主的问题,那段程序必须写。。不写编译出错。。。
作者: xiwang    时间: 2012-4-15 12:21

作者: 漫无止尽的八月    时间: 2012-12-12 17:36
#pragma CODE_SEG __NEAR_SEG NON_BANKED    //中断函数置于非分页区内
interrupt VectorNumber_Vtimch7 void  ICU_Ch7Int(void)
{
TFLG1_C7F = 1;   //清中断标志位
}
#pragma CODE_SEG DEFAULT   //后续代码置于默认区域内

我一般是用上述方式声明中断函数。
由于飞思卡尔16位单片机的中断向量是16位,所以中断函数只有被置于非分页区内才能被寻址到,这就是第一行的作用。
第二行中“VectorNumber_Vtimch7”是中断号,它是由文件“MC9S12XS128.h”中定义的宏,这个中断号在它的技术手册中找到,但是我建议你采用这种宏的形式,因为这个宏不容易出错,可读性较高,比如“VectorNumber_Vtimch7”即为定时器(TIM)通道7(CH7)所对应的中断号。中断函数名“ICU_Ch7Int”可任意取,没有影响。
由于单片机内部非分页区大小有限,非中断函数一般置于分页区内,最后一行即为此作用。

百度一下你就知道




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2