Board logo

标题: 求助,编程问题! [打印本页]

作者: seuafu2005    时间: 2005-3-10 17:38

这是定义的两个代码段。第一句语句指把 dard_int()这个函数放在Non_Banked这个区间内。Non_Banked这个区间你必须预先定义好(可以在prm文件中设置),比如说规定它在0x2000-0x3000这个存储区间内。
这是是codewarrior中的用法,看MSDN没有的。
你可以看CW手册中,Manual_Compiler_HC08.pdf中299页开始对这个语句的介绍
作者: bfbf2882    时间: 2005-3-10 17:44

谢谢!我用的是16位的芯片,9S12的,同样使用吗?
作者: bfbf2882    时间: 2005-3-10 17:48

哪里可以找到CW手册?在安装盘还是在安装目录下?我没有找到!在网上有没有下载?谢谢!
作者: seuafu2005    时间: 2005-3-10 17:58

一样的用法,手册在安装目录中,如果是S12的话应该是这个路径
C:\Program Files\Metrowerks\CodeWarrior CW12_V2.0\CodeWarrior Manuals\pdf
看manual compiler
作者: nishui_2000    时间: 2005-3-10 20:14

没有啊,我装的是CW3.0,没有CodeWarrior Manuals\pdf这个文件夹,也没有.pdf的文档,怎么办呢?在哪里可以下载到它呢
作者: nishui_2000    时间: 2005-3-10 20:37

还一个问题,在16位单片机的开发环境中我怎么没找到LibMaker那个功能啊。请大侠帮助
作者: bfbf2882    时间: 2005-3-10 20:52

找到了一个文件Manual_Compiler_HC12.pdf,不知是不是有1060页。我现看看。这个文件在C:\Program Files\Metrowerks\CodeWarrior CW12_V3.0\help\pdf
作者: nishui_2000    时间: 2005-3-11 08:41

我没有找到这个文件啊,在那个文件夹底下我职找到了mwClearCase_Plug-in_User_Guide.pdf和mwSourceSafe_Plug-in_User_Guide.pdf这两个文件,我想看看怎么用Libmaker,怎么办呢?大侠帮助我啊
作者: nishui_2000    时间: 2005-3-11 08:46

大侠能不能指点一下在CodeWarrior CW12_V3.0环境下(HCS16位单片机怎么做库啊,另外,是不是不是正式版的软件不能做库文件?
作者: aguang1024    时间: 2005-3-11 09:21

真是好问题
作者: seuafu2005    时间: 2005-3-11 09:58

在安装路径的prog目录下面应该有个libmaker.exe文件,这个可以用来做库
大家可以去这个地址下载应用手册
http://www.metrowerks.com/MW/Support/dev_resources/Documentation_for_HC12_3.1.htm
作者: strongchen    时间: 2005-3-11 10:21     标题: [推荐]手册下载网址

CodeWarrior 的 8 位 MCU 编程及调试工具手册到这里下载:

http://www.metrowerks.com/MW/Support/dev_resources/Documentation_for_HC08_3.0.htm

CodeWarrior 的 16 位 MCU 编程及调试工具手册到这里下载:

http://www.metrowerks.com/MW/Support/dev_resources/Documentation_for_HC12_3.1.htm
作者: nishui_2000    时间: 2005-3-12 21:14     标题: 能否详细点告诉小弟如何做库文件么

大侠,我看了那个手册,好像全是说那个软件界面的,我想直接一些,找个示例性质的,然后跟着一步步来就知道怎么做库怎么调用这个库了。大侠能不能详细告诉小弟一下啊?谢谢谢谢再谢谢!
作者: seuafu2005    时间: 2005-3-14 10:25

关于怎么把工程内的代码文件做成库,在我回给Johnyoung67的帖子中已经说了,至于怎么选择某几个文件做成库就不是一两句话可以说明白的了。另外,我提到的方法并不能包含头文件。不知道你具体想做成什么样的库?
作者: nishui_2000    时间: 2005-3-15 21:03     标题: 大侠能否再说一遍啊

大侠我没有找到你以前发给Johnyoung的介绍做库的贴子啊,能不能在跟我说一次啊。非常的感谢。因为我现在没有一点头绪,看手册闷了两天还比较糊涂,真不好意思。稍微提点一下吧
作者: nishui_2000    时间: 2005-3-15 21:25

大侠,我找到你发给Johnyoung的帖子了,我式了一下,但按照那个方法把以前的P&E的名字改成自己的库的名字,然后我编译后怎么找不到自己的库做到什么地方去了?丢了?还有,怎么用这个库啊,我怎么调这个库里面的函数啊?谢谢,多谢帮助,这个问题解决了真又学了一个高招
作者: seuafu2005    时间: 2005-3-16 10:59

库的名字并不是去改target的名字,库的名字是在你选了libmaker for HC12以后,在target栏里面生成出来的libmaker for HC12选项里面有个library filename里面设定的。至于库放在什么地方,你在设置你库的名字的时候也是可以设定路径的。另外,取名字的时候要记得加上后缀,比如要取成test.lib, 不要取成test。
至于调用的话,就是通过头文件给出函数形式接口,把你的库加入到工程文件中去,然后调用就可以了
作者: seuafu2005    时间: 2005-3-16 11:03

那个做库的手册的确比较难懂,看的会比较懵。你如果想把整个工程做成库可以用我所说的方法。但是如果只想拿几个文件出来做成库的话还是需要用libmaker来做
作者: nishui_2000    时间: 2005-3-16 11:39

大侠,我不想研究Libmaker的手册,越看越难受,难过的想把显示器给砸了,我还是按照你说的方法做比较容易。我按你的方法试了,但生成的库之后,把它添加到工程里,用"add files"的方法,把那个.lib加进去,但是出现30多个错误,都是L1100的错误,说Segments . absSeg246 (0x0) and .absSeg520 (0x0) overlap,后面全是overlap的错误。是哪里没弄好?
作者: nishui_2000    时间: 2005-3-16 11:40

大侠,我不想研究Libmaker的手册,越看越难受,难过的想把显示器给砸了,我还是按照你说的方法做比较容易。我按你的方法试了,但生成的库之后,把它添加到工程里,用"add files"的方法,把那个.lib加进去,但是出现30多个错误,都是L1100的错误,说Segments . absSeg246 (0x0) and .absSeg520 (0x0) overlap,后面全是overlap的错误。是哪里没弄好?
作者: seuafu2005    时间: 2005-3-16 11:56

当然会这样咯,生成的库其实就是你前面的那些文件,你必须把你那些文件从库里面移走才行。库是那些文件的替代者,不要和文件重复用!
作者: nishui_2000    时间: 2005-3-16 12:09

要把哪些文件移走啊?我已经把Main.c别的什么Include等的都删去了,然后就写了一个函数,还出现这个错误,还要移什么文件?
作者: seuafu2005    时间: 2005-3-16 12:33

这个就要看你的库里面包涵了哪些文件,另外有时候尽管工程里面没有显现出来,但是你的文件还是包含在工程里面的。另外,这种overlap还可能和你的存储空间的分配有关。当然,如果你在生成库之前的工程没有什么问题的话,那肯定是你有什么文件没有移走的缘故
作者: nishui_2000    时间: 2005-3-16 13:54

OK了,我把除了Main.C外的所有文件都搞掉了终于可以了。还有一个问题,我在库里面的一个函数要用到外面的(主函数的)一个全局变量,那么我在这个库文件的开头用extern声明一下这个全局变量,然后在这个库里面用这个全局变量(这个变量在主函数里面定义的)可以么?影响不影响结果啊
作者: seuafu2005    时间: 2005-3-16 14:34

可以,当然可以这么做。
呵呵,这个其实你自己动手试一下就ok了,不必问的,实践出真知嘛。
不过,建议你最好不要这么做,因为库是给人用的,如果库去调用外部的变量不是很好。可以把变量变成库里面的,而主函数用extern来声明使用
作者: nishui_2000    时间: 2005-3-16 16:01

谢谢,刚才又碰到一个问题。我想两个.c文件共同包含一个头文件,比如main.c里面包含#include "my.h",然后在另一个fun.c里面我还要#include "my.h", 而我不想用在fun.c里面用extern的方法,因为变量太多了,我只想在头文件my.h中做文章,该怎么弄才不出现变量重复定义的错误呢?我仿照软件自带的头文件中用#ifdef等方法,好像不行啊
作者: seuafu2005    时间: 2005-3-16 16:48

直接在头文件里面定义成全局变量,extern char a;
作者: nishui_2000    时间: 2005-3-16 17:19

如果象这样直接定义全局变量extern char a;会出现警告错误。L1823:External object a in \...\a1.c.o created by default. 有没有更完美的解决方案呢?虽然警告错误不影响结果的执行
作者: nishui_2000    时间: 2005-3-18 13:16

我想把部分代码变成汇编,比如 int a;int b;b=a;
我在把这部分变成汇编的时候怎么开辟变量空间定义a,b这两个变量呢?
作者: tt258258    时间: 2005-3-19 20:48

看糊涂了啊
作者: bfbf2882    时间: 2005-3-21 12:12     标题: 求助,编程问题!

在一个程序中看到一段代码,看不明白请高手指点一下!
#prabma CODE_SEG NON_BANKED
void dard_int(void);
#pragma CODE_SEG DEFAULT

主要是红色区域。在微软的MSDN中查到了,但是没有看懂!
谢谢!
作者: seuafu2005    时间: 2005-3-21 12:12

用汇编的定义方法
a   DS.B   2
b   Ds.b   2
在文件开头用xdef a,  xdef b声明一下,然后在c中就可以调用该变量了




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0