查看: 1884|回复: 10
|
有谁用MPLab的 PIC C compiler吗?
[复制链接]
|
|
有谁用MPLab来写PIC的程序吗?Toolsuit 是 Hi-Tech PICC Lite 9.60!
小弟现在有些问题,那就是Bank memory不够存放程序,须要用到别的 bank,但是那软件不会自动把多的程序存进别的bank,须要手动。
所以想问下有谁会解决小弟的问题。
我用的是PIC16F877! |
|
|
|
|
|
|
|
楼主 |
发表于 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是没意义, 不完整的。。。。- #include <16F877A.h>
- #fuses HS, NOWDT,PROTECT, noBrownOut, NoLVP
- #use delay(clock=20000000)
- #include <math.h>
- 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));
- }
- void main()
- {
- while(1)
- {
- neural( 1, 100, 2 );
-
- }
-
- }
复制代码 |
|
|
|
|
|
|
|
楼主 |
发表于 6-5-2008 05:40 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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% |
|
|
|
|
|
|
|
发表于 12-5-2008 09:14 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 13-5-2008 07:52 AM
|
显示全部楼层
为什么要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"。。。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|