智能车制作
标题:
中断程序编写
[打印本页]
作者:
bhwxl
时间:
2011-2-11 20:50
标题:
中断程序编写
编写中断程序时
#pragma CODE_SEG __NEAR_SEG NON_BANKED
和#pragma CODE_SEG DEFAULT
是什么意思啊?
ps:能不能推荐一些关于codewarrior中用c语言编程的书?
作者:
fanfankaka123
时间:
2011-2-11 20:50
中断服务例程必须被定位于non-banked 区域,通过使用“#pragma CODE_SEG NON_BANKED”可以把中断例程定位于non-banked 区域。同时你必须确保“sectionNON_BANKED”不能出现在.prm文件中。在中断服务例程的末尾你需要添加“#pragma CODE_SEG DEFAULT”,否则的话,后面的函数也会被定位在“non-banked”区域。
所以说我们的中断服务例程必须被“#pragma CODE_SEG NON_BANKED”和“#pragma CODE_SEG DEFAULT”包围起来。
作者:
fanfankaka123
时间:
2011-2-12 00:16
表示中断程序的开始和结束
作者:
I08690127
时间:
2011-2-15 11:49
还是不懂。。。。。。。。。
作者:
bhwxl
时间:
2011-2-19 20:03
回复
2#
fanfankaka123
还是不懂啊。前辈您能不能详细点?
作者:
mashaokang1111
时间:
2011-2-20 19:30
就是所谓预处理..类似于汇编的伪指令..告诉编译器该干什么..把哪些代码放到ROM的哪个区域..
作者:
bhwxl
时间:
2011-2-22 15:42
回复
2#
fanfankaka123
多谢你啦
作者:
han个个呆呆
时间:
2011-2-23 21:13
嘿嘿,谢谢
作者:
sinsic
时间:
2011-2-23 21:29
#pragma CODE_SEG NON_BANKED作用域到下一个#pragma CODE_SEG 为止
作者:
lzwzdh
时间:
2011-2-25 13:53
#include <hidef.h>
#include "derivative.h"
//char flg=0;
word count;
void time(void);
void main(void)
{
#pragma DATA_SEG SHORT a
int a=1;
#pragma DATA_SEG DEFAULT
//char b;
time();
EnableInterrupts;
while(1)
{
a++;
}
}
void time(void)
{
TSCR2 =0x86;
TSCR1 =0x80;
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
__interrupt 2 void TIME0()
{
count++;
TFLG1=1;
}
#pragma CODE_SEG DEFAULT
请看一下我的这个程序,我觉得没什么错误 ,但为什么总是进入不了中断啊?
作者:
E08610126
时间:
2011-3-2 15:06
我也看看
作者:
CCGOGO
时间:
2011-4-1 20:29
学习了 嘿嘿
作者:
诗雨依然
时间:
2011-4-23 17:47
思考中》
作者:
薛耳首
时间:
2011-4-25 17:11
提示:
该帖被管理员或版主屏蔽
作者:
智能车制作00000
时间:
2011-4-26 15:06
哈哈 学习啦~
作者:
李武军
时间:
2011-9-2 20:37
回复
10#
lzwzdh
程序很乱啊。。。。。。。编辑一下,屏蔽掉的程序删掉,就可以发现问题了
作者:
晚安
时间:
2011-9-3 12:49
要是仔细点就好了
作者:
模电还要继续看
时间:
2013-2-2 02:20
二楼讲的很对的啊。。。不过英文呀
:'(:'(:'(:'(好像就是分页之类的东西。。。具体不用懂也可以的。
知道把你所有的中断函数都放到那两句之间就可以了。(#pragma CODE_SEG NON_BANKED和#pragma CODE_SEG )
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2