佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1885|回复: 10

有谁用MPLab的 PIC C compiler吗?

[复制链接]
发表于 5-5-2008 06:45 PM | 显示全部楼层 |阅读模式
有谁用MPLab来写PIC的程序吗?Toolsuit 是 Hi-Tech PICC Lite 9.60!
小弟现在有些问题,那就是Bank memory不够存放程序,须要用到别的 bank,但是那软件不会自动把多的程序存进别的bank,须要手动。
所以想问下有谁会解决小弟的问题。
我用的是PIC16F877!
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 6-5-2008 02:58 AM | 显示全部楼层
没人回贴,难道没有人会吗?
回复

使用道具 举报

发表于 6-5-2008 08:52 AM | 显示全部楼层
原帖由 crazybear 于 5-5-2008 06:45 PM 发表
有谁用MPLab来写PIC的程序吗?Toolsuit 是 Hi-Tech PICC Lite 9.60!
小弟现在有些问题,那就是Bank memory不够存放程序,须要用到别的 bank,但是那软件不会自动把多的程序存进别的bank,须要手动。

首先, Hi-Tech C 我不会。
如是CCS C, 一般加 “*=16”, 就是用16bit的pointer就ok了。。。

但你也没说你做的是什么, 要用很多memory? 还是要连续的memory 如Array?
连续的memory, 16F877A 最多是96byte(Bank0),80Bytes  (Bank 1,2,3)
如果你define的memory/array 大过上面的, 你就要自己处理了。

更简单的做法, 就是用考虑升级用PIC18F的MCU。。。

回复

使用道具 举报

 楼主| 发表于 6-5-2008 11:54 AM | 显示全部楼层
原帖由 pic 于 6-5-2008 08:52 AM 发表

首先, Hi-Tech C 我不会。
如是CCS C, 一般加 “*=16”, 就是用16bit的pointer就ok了。。。

但你也没说你做的是什么, 要用很多memory? 还是要连续的memory 如Array?
连续的memory, 16F877A 最多是96byt ...


我没有用Array,只是普通的variable,有十四个variable,全部都是floating point。
我把那程序放上来可能会比较容易明白吧!

void neural( int left, long front, int right ) {

                float n1,n2,n3,n4,n5,n6,n7;
                float y1,y2,y3,y4,y5,y6,y7;

                y1=(-3.3436*left)+(4.6910*front)+(-8.7659*right)+6.2048;
                y2=(6.0999*left)+(10.8811*front)+(2.6030*right)+(-3.3895);
                y3=(7.8049*left)+(1.6025*front)+(-5.2622*right)+(-1.5207);

                n1=1/(1+exp(-y1));
                n2=1/(1+exp(-y2));
                n3=1/(1+exp(-y3));

                y4=(-5.3334*n1)+(11.1758*n2)+(-7.2330*n3)+(-0.2640);
                y5=(-1.2725*n1)+(3.4417*n2)+(9.9661*n3)+(-5.0243);

                n4=1/(1+exp(-y4));
                n5=1/(1+exp(-y5));

                y6=(-19.1737*n4)+(1.9048*n5)+8.0078;
                y7=(0.5132*n4)+(-15.8268*n5)+7.5299;

                n6=1/(1+exp(-y6));
                n7=1/(1+exp(-y7));
}
或者谁有更好的方法来处理这些程序。

小弟没有多的钱来买18F的MCU了

[ 本帖最后由 crazybear 于 6-5-2008 11:56 AM 编辑 ]
回复

使用道具 举报

发表于 6-5-2008 03:07 PM | 显示全部楼层
原帖由 crazybear 于 6-5-2008 11:54 AM 发表
我没有用Array,只是普通的variable,有十四个variable,全部都是floating point。
我把那程序放上来可能会比较容易明白吧!

我用CCS C compile, 没有遇到问题。。。
ROM= 29%, RAM=30%

可是, 不能证明什么, 你的Code是没意义, 不完整的。。。。
  1. #include <16F877A.h>
  2. #fuses HS, NOWDT,PROTECT, noBrownOut, NoLVP
  3. #use delay(clock=20000000)
  4. #include <math.h>

  5. void neural( int left, long front, int right ) {

  6.                 float n1,n2,n3,n4,n5,n6,n7;
  7.                 float y1,y2,y3,y4,y5,y6,y7;

  8.                 y1=(-3.3436*left)+(4.6910*front)+(-8.7659*right)+6.2048;
  9.                 y2=(6.0999*left)+(10.8811*front)+(2.6030*right)+(-3.3895);
  10.                 y3=(7.8049*left)+(1.6025*front)+(-5.2622*right)+(-1.5207);

  11.                 n1=1/(1+exp(-y1));
  12.                 n2=1/(1+exp(-y2));
  13.                 n3=1/(1+exp(-y3));

  14.                 y4=(-5.3334*n1)+(11.1758*n2)+(-7.2330*n3)+(-0.2640);
  15.                 y5=(-1.2725*n1)+(3.4417*n2)+(9.9661*n3)+(-5.0243);

  16.                 n4=1/(1+exp(-y4));
  17.                 n5=1/(1+exp(-y5));

  18.                 y6=(-19.1737*n4)+(1.9048*n5)+8.0078;
  19.                 y7=(0.5132*n4)+(-15.8268*n5)+7.5299;

  20.                 n6=1/(1+exp(-y6));
  21.                 n7=1/(1+exp(-y7));
  22. }

  23. void main()
  24. {
  25.    while(1)
  26.    {
  27.       neural( 1, 100, 2 );
  28.    
  29.    }
  30.    
  31. }
复制代码
回复

使用道具 举报

 楼主| 发表于 6-5-2008 05:40 PM | 显示全部楼层
PIC,你可以加我ym吗?如果没ym那MSN也可以,现在MSN 可以加ym。
squallmillenium@yahoo.com

我想把full program code send 给你试看,如果还是没问题那就是软件的问题了。
回复

使用道具 举报

Follow Us
发表于 6-5-2008 06:50 PM | 显示全部楼层
原帖由 crazybear 于 6-5-2008 05:40 PM 发表
PIC,你可以加我ym吗?如果没ym那MSN也可以,现在MSN 可以加ym。
squallmillenium@yahoo.com

我想把full program code send 给你试看,如果还是没问题那就是软件的问题了。

不好意思,我不喜欢用MSN, YM。
你尽可能Post 在这里, 这里还有其他人可以帮忙的。。。
回复

使用道具 举报

 楼主| 发表于 6-5-2008 11:03 PM | 显示全部楼层
问题已经解决了,是软件的问题,我改用了ccs c compiler就可以了。
用了还有空间
     Memory usage:   ROM=42%      RAM=3% - 32%
回复

使用道具 举报


ADVERTISEMENT

发表于 12-5-2008 09:14 PM | 显示全部楼层
想用c language写也可以,然后convert去assembly language...
http://www.mikroe.com/en/download/
mikroC for PIC---- is C language to assembly language....
回复

使用道具 举报

发表于 13-5-2008 07:52 AM | 显示全部楼层
原帖由 Haka 于 12-5-2008 09:14 PM 发表
想用c language写也可以,然后convert去assembly language...
http://www.mikroe.com/en/download/

为什么要ASM? 我们要的是hex 输出。

mikroC for PIC---- is C language to assembly language....

纠正: microC的主要设计,不是把C换成ASM。
编译(compile )后,  是可以看到ASM, 但一些内建的C function, 可能没有显示出来, 还有也没有remark注解。

P/S: 请尽量配合使用中文输入, 名词除外。
回复

使用道具 举报

发表于 26-6-2008 01:41 PM | 显示全部楼层

回复 1# crazybear 的帖子

在declear  variable 的前面加 "bank1"。。。
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-1-2025 02:32 AM , Processed in 0.107445 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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