智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6359|回复: 17
打印 上一主题 下一主题

[编程类] 中断程序编写

  [复制链接]

25

主题

160

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1290
QQ
威望
869
贡献
233
兑换币
144
注册时间
2011-1-24
在线时间
94 小时
跳转到指定楼层
1#
发表于 2011-2-11 20:50:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
编写中断程序时
#pragma CODE_SEG __NEAR_SEG NON_BANKED
和#pragma CODE_SEG DEFAULT
是什么意思啊?
ps:能不能推荐一些关于codewarrior中用c语言编程的书?

最佳答案

查看完整内容

中断服务例程必须被定位于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”包围起来。

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
2#
发表于 2011-2-11 20:50:24 | 只看该作者
中断服务例程必须被定位于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”包围起来。
回复

使用道具 举报

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
3#
发表于 2011-2-12 00:16:21 | 只看该作者
表示中断程序的开始和结束
回复

使用道具 举报

4

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
400
威望
265
贡献
45
兑换币
2
注册时间
2011-1-18
在线时间
45 小时
4#
发表于 2011-2-15 11:49:02 | 只看该作者
还是不懂。。。。。。。。。
回复

使用道具 举报

25

主题

160

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1290
QQ
威望
869
贡献
233
兑换币
144
注册时间
2011-1-24
在线时间
94 小时
5#
 楼主| 发表于 2011-2-19 20:03:08 | 只看该作者
回复 2# fanfankaka123


    还是不懂啊。前辈您能不能详细点?
回复

使用道具 举报

3

主题

40

帖子

0

精华

高级会员

Rank: 4

积分
659
威望
436
贡献
199
兑换币
18
注册时间
2010-4-9
在线时间
12 小时
6#
发表于 2011-2-20 19:30:26 | 只看该作者
就是所谓预处理..类似于汇编的伪指令..告诉编译器该干什么..把哪些代码放到ROM的哪个区域..
回复

使用道具 举报

25

主题

160

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1290
QQ
威望
869
贡献
233
兑换币
144
注册时间
2011-1-24
在线时间
94 小时
7#
 楼主| 发表于 2011-2-22 15:42:03 | 只看该作者
回复 2# fanfankaka123


    多谢你啦
回复

使用道具 举报

1

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
458
QQ
威望
312
贡献
38
兑换币
0
注册时间
2011-2-22
在线时间
54 小时
8#
发表于 2011-2-23 21:13:20 | 只看该作者
嘿嘿,谢谢
回复

使用道具 举报

4

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
980
威望
315
贡献
591
兑换币
22
注册时间
2010-10-31
在线时间
37 小时
9#
发表于 2011-2-23 21:29:00 | 只看该作者
#pragma CODE_SEG NON_BANKED作用域到下一个#pragma CODE_SEG 为止
回复

使用道具 举报

3

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
418
QQ
威望
250
贡献
162
兑换币
0
注册时间
2011-2-11
在线时间
3 小时
10#
发表于 2011-2-25 13:53:35 | 只看该作者
#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   

请看一下我的这个程序,我觉得没什么错误 ,但为什么总是进入不了中断啊?
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 01:28 , Processed in 0.073684 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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