原创 对PIC CCS编译器的一些使用心得

2008-9-30 16:09 6354 12 13 分类: MCU/ 嵌入式

一直在用PIC CCS的编译器,给我的感觉就是:既有一些其它编译器无法比拟的地方。也有一些让人头痛的地方。


首先,感觉最大的好处就是内置了丰富的函数库,这一点让我感觉非常爽。可以让人腾出时间来,把更多的精力花在产品的开发上,而不是花在子程序的编写上。比如说delay_ms(),这个延时函数真的很不错,并不会随着晶振的改变而改变时间。还有串口引脚绑定,简直太方便了,只要一句话就行


#use rs232(baud=9600, xmit="PIN"_A2,rcv=PIN_A3)


还有集成了USB库等。


不过,CCS也有许多不尽人意的地方,比如说常量数组的长度问题,最多只能有0-255个长度的数组。写液晶驱动的时候就很有麻烦,显示一幅128*64的图片必须得放在四个数组里面才行,同时也加大了程序的开销。


还有就是常量指针的问题,前一阵移植圈圈的USB固件的时候,发现怎么也无法枚举成功。经过一阵瞎折腾,发现编译竟然不支持常量指针,害得我把存放描述符的结构体全部改成了数组。并且一个一个的往主机传送,才解决了这个问题。同时写液晶驱动时也会存在这个问题,必须得把字模数组定义成全局变量才行。


还有一个令人头疼的就是编译器不区分大小写,移植圈圈的程序时,发现怎么也编译不过,最后终于发现原来是大小写的问题。感觉这是个严重的问题,如果长时间在这编译器里写程序,很可能会养成大小写不分的习惯。


还有(*((volatile uchar *)PORT_A)),像这样的语句在CCS中会被报错,而在Keil及VC中则可以正常通过。


还有一点,感觉CCS 的编译器语法不怎么严谨,比如说我定义一个数组:


int8 a[]={


0x01,


0x02,


0x03,


0x04


};


如果我写成这样:


int8 a[]={


0x01,


0x02,


0x03


0x04


};


则仍然可以正常通过。


虽然CCS有许多不好的地方,但是相对于HI-TECH,我更喜欢CCS.

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2014-1-9 09:39

可能是因为你那个是试用版的原因,我是做dsp的,ccs里没有出现你这种情况过

相关推荐阅读
用户546181 2011-12-16 15:23
MIPS 是什么意思? MIPS/MHZ 又是什么意思?
MIPS ( Million Instruction Per Second )表示每秒多少百万条指令,如 10MIPS ,表示每秒一千万条指令。MIPS/MHz 表示 CPU 在每 MHz 的运行...
用户546181 2011-11-23 16:41
APN是什么
对普通用户来说,使用GPRS上网,几乎都要遇到APN 这个概念, 其实,APN就是一个接入点,GPRS上网的接入服务器 ; 一、 APN的概念 APN(Access Poin...
用户546181 2009-06-20 18:01
MMU工作原理
1.MMU的工作原理我这里就不阐述了。网上有篇关于S3C2410 MMU的讲解,很详细。我就看了韦东山大哥的书的实验代码就写一些体会,并把源代码发出来。具体的代码如下:////////////////...
用户546181 2009-06-17 13:49
基于ARM9芯片S3C2410异常中断程序设计
验证的代码详细分析了基于ARM嵌入式系统的异常处理流程。然后阐明关键字“-irq”的作用,设计出中断处理函数。最后,通过设置中断控制寄存器,设计外部中断EINT3的初始化程序,并给出主程序流程图。实践...
用户546181 2009-06-13 15:15
linux下ntp协议的实现
最近公司比较空,花了一些时间学习了一下linux的应用编程,并且在今天下午完成了最后一章socket的实验。内容就是实现ntp协议,使本机的时间与ntp服务器同步。虽然说原理上并不难,但是过程中却也遇...
用户546181 2009-06-02 16:39
ubuntu下安装vmware tools
如果你是在VM下安装 Ubuntu,那么必须安装VMware-tools,才能获得更好的体验,包括屏幕分辨率、声音、和windows共享剪贴板等等。点击VMware菜单的-VM-Install VMw...
EE直播间
更多
我要评论
1
12
关闭 站长推荐上一条 /3 下一条