搜索
bottom↓
回复: 439

【交流】CCS C PIC 编译器的同好请来交流

  [复制链接]

出0入0汤圆

发表于 2015-1-3 09:59:14 | 显示全部楼层 |阅读模式
本帖最后由 pic_flash 于 2015-1-3 10:01 编辑

在AMO论坛, PIC 的使用者算是很少, 然而, 使用CCS C 编译器的同好, 我想更是少。。
开这帖的目的, 是看看有谁正在用, 或有谁曾经用过CCS C 。。然后, 可以讨论大家在使用CCS C 遇到的问题, 如语法, 发现臭虫, 等等的问题。

先介绍我个人, 自从2003, 我就开始用PIC, 第一个PIC 型号是16F84A, 使用的是DOS 版的 CCS C!

我曾学习过PIC basic, 但是只是很短的时间, 过后就转用CCS C, 一直用到现在, 就没有再换过。。
我也真的不会Hi-tech C, Microchip 的 XC 编译器 也没用过。。 ASM 也不会。。。

CCS C, 我想比较少人用的原因, 我个人认为是以下的原因:
1. 他不是标准的ANSI C, 其他的ANSI C 源码, 不能简单快速的转去CCS C
2. 他不支持指针 ,pointer to constant。 Pointer to RAM 是可以的
3. 臭虫多。。几乎每个版本都有臭虫! 但是臭虫也未必会影响你。。

那么, CCS C有好处吗?
1. 他简单, 容易使用, 新手很容易就上手。
2. 含有丰富的内建功能, 函数等等
3. 含有很多范例程序
4. 因为他不是ANSI C, 也不支持Pointer to constant 的关系, 他不考虑太多的相容性, 所以, 他的编译结果是很优越的,产生的hex 是比较小。

不要小看CCS C, 很多老外都是使用CCS C, 而且都是高手中的高手。。。
我最喜欢的就是逛 CCS 论坛, 里面高手如云,偶像如PCM Programmer, Ttelmah前辈等等,

General CCS C discussion
http://www.ccsinfo.com/forum/viewforum.php?f=1

Code Library (源码资源很丰富)
http://www.ccsinfo.com/forum/viewforum.php?f=2

在CCS C 论坛, 不要随意开帖,先用搜索的功能, 如果没有答案, 才开帖询问。


希望CCS C 同好, 可以一起来交流, 谈谈你们的使用经验, 或分享心得。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2015-1-3 10:19:50 | 显示全部楼层
我最近犯了一个错误。。就是忽略了PIC 16F1827 的一个 fail-safe clock monitor。
Fail-safe clock monitor 是一些PIC芯片的新功能, 就是当晶振发生错误后, 启动内部的Internal Oscillator。

如果, 不打算使用这个fail-safe clock monitor, 最好是把他关闭。

我的一个汽车安防产品, 之前是使用16F628A的, 后来转用16F1827, 就只是把源码略做修改, 就出货了。
最近, 客户的客户有投诉, 产品会死机。。

经过检查后, 发现当用手去触摸16F1827 的16脚, 接着, 发现PIC 的反应变得异常的缓慢。。
本来是16Mhz, 正常时LED 闪灯只是0.5~1秒, 现在变成几十秒。。变得超级慢~~

过后想起, 很可能是Fail-safe clock monitor,就看看资料手册, 可以在Fuse 里面关闭。
再查看CCS C 16F1827.h


  1. //////// Program memory: 4096x14  Data RAM: 368  Stack: 16
  2. //////// I/O: 16   Analog Pins: 12
  3. //////// Data EEPROM: 256
  4. //////// C Scratch area: 77   ID Location: 8000
  5. //////// Fuses: LP,XT,HS,RC,INTRC_IO,ECL,ECM,ECH,NOWDT,WDT_SW,WDT_NOSL,WDT
  6. //////// Fuses: PUT,NOPUT,NOMCLR,MCLR,PROTECT,NOPROTECT,CPD,NOCPD,NOBROWNOUT
  7. //////// Fuses: BROWNOUT_SW,BROWNOUT_NOSL,BROWNOUT,CLKOUT,NOCLKOUT,NOIESO
  8. //////// Fuses: IESO,NOFCMEN,FCMEN,WRT,WRT_800,WRT_200,NOWRT,PLL_SW,PLL
  9. //////// Fuses: NOSTVREN,STVREN,BORV25,BORV19,DEBUG,NODEBUG,NOLVP,LVP
  10. ////////
复制代码

在第21行, 找到这个Fuse NOFCMEN, 加入到程序的Fuse里, 问题就解决了。

修改后的Fuse

  1. #include <16F1827.H>
  2. #fuses   HS, nolvp, PROTECT, WDT, put, brownout, nomclr, NOFCMEN
  3. #use delay(crystal=16MHz, clock=16MHz, restart_wdt)
复制代码


希望PIC 同好, 要注意这个Fuse, 不要犯和我同样的错误哦~

出0入0汤圆

 楼主| 发表于 2015-1-3 11:30:59 | 显示全部楼层
我个人在写代码时, 常常会写了几行, 就按 <Alt>+<C> 做编译, 如果有错误, 马上就纠正。
CCS C, 每次编译时, 会弹出这个编译成功的提示, 并默认停留三秒:



这三秒的提示, 很烦人, 我一般是去掉。。
按照以下的方法,
1. 点击Option
2. 点击Project
3. 点击Output Files
4. 找到Compile Window up,No Error 那项, 改去 : No



那么, 以后编译后, 编译成功的提示只是一闪而过了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-1-3 13:31:11 | 显示全部楼层
楼主写的很好啊。
我用CCS有5年了,一开始使用picc16,编译出来的结果有时候也是莫名其妙的。后来发现了CCS,感觉真的很好用,上手很快,虽然听说bug很多,升级简直是眼花缭乱的快,但是,真的好用。开发PIC16和PIC18的程序,是我的首选。
现在有时候用PIC24,我买了一个XC16,打了折扣的,感觉也不错。
感谢楼主共享了最新版本的ccs。

出0入228汤圆

发表于 2015-1-3 13:38:36 | 显示全部楼层
也想用这个的,不过国内好象真的很少见

出10入10汤圆

发表于 2015-1-3 13:50:56 | 显示全部楼层
谢谢楼主提供的好资料,CCS支持的元件多吗

出0入0汤圆

 楼主| 发表于 2015-1-3 14:03:37 | 显示全部楼层
szxszx 发表于 2015-1-3 13:50
谢谢楼主提供的好资料,CCS支持的元件多吗

超多的,PIC12, PIC16, PIC18, PIC24, DSPIC 都几乎支持的。。
不然你说说要什么芯片,我查看支持不?

出0入0汤圆

 楼主| 发表于 2015-1-3 14:05:26 | 显示全部楼层
wxws 发表于 2015-1-3 13:38
也想用这个的,不过国内好象真的很少见

我要提醒你的是, 他不是ANSI C, 你如果要把其他的C 源码转去CCS C, 你可能要折腾一番的。。
但是, 你一旦上手, 你就不想换了。。。

出0入0汤圆

发表于 2015-1-3 14:17:48 | 显示全部楼层
是挺好的,之前用过一下

出0入0汤圆

 楼主| 发表于 2015-1-3 14:35:17 | 显示全部楼层
本帖最后由 pic_flash 于 2015-1-3 21:49 编辑
firstelec 发表于 2015-1-3 13:31
楼主写的很好啊。
我用CCS有5年了,一开始使用picc16,编译出来的结果有时候也是莫名其妙的。后来发现了CCS ...


是的, Bug 很多。。。只是看你会不会碰上。。
Bug 有时是影响特定的芯片而已。。

我曾经遇到的Bug 是 , EEProm 不能写入。。 (当然后来的版本修正了)
还有一个是 4.xxx 版本时 , 在16F1827 的ADC ,
set_adc_channel(0) //这个内建的功能不正常,
发现后, 我就编写自己的代码, 就解决了。。
当然后来的版本就修正了。。

我的经验是, 以后当你遇到“不按牌理出牌”的结果, 除了检查你的硬体的合理设计外,你就要查看 .lst, 看看ASM代码有没有不合理的地方, 也去CCS 论坛搜索下, 如果有人碰到同样的问题, 你就知道是臭虫了。。
另一个方法是, 你使用其他的版本编译看看。。。

我曾经很长的一段时间, 是使用4.xxx 版本的, 用着高兴, 我其实都不太想升级。。
也要养成一个习惯, 要在你的程序注明, 这个程序是用什么版本的CCS C 编译的, 当有问题时, 能够追溯回。。

其实, 我个人很喜欢的一个CCS C 版本是V3.249, 这个版本是公认最稳定的版本。。能支持到16F628A, 但是新的芯片如 16F18xx, 16F19xx, 12F1xxx 的就不支持了。
版本5.xxx, 其实也是最近才使用的。。


出0入0汤圆

发表于 2015-1-3 15:39:14 | 显示全部楼层
CCS C 版本V3.24能否共享一下,谢谢!想体验下稳定的版本。

出0入0汤圆

发表于 2015-1-3 19:28:06 | 显示全部楼层
pic_flash 发表于 2015-1-3 14:35
是的, Bug 很多。。。只是看你会不会碰不幸上。。
Bug 有时是影响特定的芯片而已。。

楼主确实有经验啊。我还没有碰到bug呢。

出0入0汤圆

 楼主| 发表于 2015-1-3 21:40:57 | 显示全部楼层
chenhu2012 发表于 2015-1-3 15:39
CCS C 版本V3.24能否共享一下,谢谢!想体验下稳定的版本。

CCS PCWH 3.249
链接:
http://pan.baidu.com/s/1bnAiZ6Z
密码:67g9

喜欢的就收藏吧。。

出0入0汤圆

发表于 2015-1-3 23:19:34 | 显示全部楼层
已下载,真诚地谢谢楼主的无私奉献!

出0入12汤圆

发表于 2015-1-4 11:27:32 | 显示全部楼层
如果写的是小工程,我觉得不错;如果大工程,因为大部分代码都不从头写,那么移植就非常重要了。

出0入0汤圆

发表于 2015-1-4 12:59:09 来自手机 | 显示全部楼层
PIC CCS C用的人少,交流困难。

出0入0汤圆

 楼主| 发表于 2015-1-4 13:48:45 | 显示全部楼层
本帖最后由 pic_flash 于 2015-1-4 13:56 编辑
abutter 发表于 2015-1-4 11:27
如果写的是小工程,我觉得不错;如果大工程,因为大部分代码都不从头写,那么移植就非常重要了。 ...


是的,完全赞同, 因为不是ANSI C, 移植是很折腾的。。

出0入0汤圆

 楼主| 发表于 2015-1-4 13:51:31 | 显示全部楼层
yanghc 发表于 2015-1-4 12:59
PIC CCS C用的人少,交流困难。

这就是我开帖的原因之一。。我也不知道坛上有谁在用, 先互相认识, 以后有问题时, 也懂得要找谁去。。

出0入12汤圆

发表于 2015-1-4 14:08:43 | 显示全部楼层
pic_flash 发表于 2015-1-4 13:51
这就是我开帖的原因之一。。我也不知道坛上有谁在用, 先互相认识, 以后有问题时, 也懂得要找谁去。。
...

只有很纯的电子工程师才能老这样吧,呵呵。

出0入0汤圆

 楼主| 发表于 2015-1-4 14:09:03 | 显示全部楼层
因为CCS C 含有丰富的内建功能, 丰富的驱动程序, 他会有一些缺点。。

比如,我今天要做一个TCP/IP 相关的项目, 我会很直接依赖和调用CCS C 提供的驱动程序。
我只要懂得如何应用, 我实际是不明白TCP/IP 内部是怎样搞的, 但是能把项目完成就是了。
变成, 知其然, 不知所以然~ 不会激发你去深入研究什么是TCP/IP

我是这么想的, 我们使用CCS C编译器, 不就是为了快速开发吗? CCS C 就正是一个工具, 利用他, 省心多了。。

但是, 我知道有一个老外。。。
他也是CCS C 的高手, 但是, 他是最不喜欢使用内建功能的人。。
比如, 要输出文字到串口

  1. #use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1,stream=port1, ERRORS)
  2. printf("HiThere");
复制代码

就两行, 就这样就完成了, 但是他就是不要。

他认为, 他不知道printf 里的内部代码是什么, 所以拒绝使用。。呵呵

出0入0汤圆

发表于 2015-1-4 14:18:05 | 显示全部楼层
CCS 以前用过,开始用是有点不习惯

出0入0汤圆

 楼主| 发表于 2015-1-4 14:22:19 | 显示全部楼层
abutter 发表于 2015-1-4 14:08
只有很纯的电子工程师才能老这样吧,呵呵。


是的, 没有错。。我算是很纯的,“怪咖”之一 ~~在一楼我都大概交代我的背景了。。呵呵

因为习惯了, 都只是用PIC, 不理价格的话, PIC 是最齐全,比较可靠稳定的单晶片。。

出0入0汤圆

 楼主| 发表于 2015-1-4 14:31:10 | 显示全部楼层
本帖最后由 pic_flash 于 2015-1-4 14:36 编辑
CHEN_LIU 发表于 2015-1-4 14:18
CCS 以前用过,开始用是有点不习惯


哦。。那么现在还使用吗? 或转去 XC 系列了?  

在以前, 谈到PIC 的C编译器, 人们没有太多选择的。。

当时,Hi-Tech C 是大部分人的首选。。
接着是 CCS C, 那时还是DOS 版本的, 够老旧吧。。

HiTech C 很贵。。不是人人买的起。。 (HitechC 已经被Microchip 并购了, 变成现在的XC 系列)

CCS C, PCM, 价格相对便宜多了。。
所以, 很多学生都比较爱用。。

现在还有mikroC, 他也是很强大, 内建功能也很多。

出0入0汤圆

发表于 2015-1-4 16:29:03 | 显示全部楼层
ccs 还有一个好处,他提供了很多实际例子,你不一定马上抄袭,但是这些例子的思路是非常好的,你看了才觉得很有启发的。个人推荐。

出0入0汤圆

发表于 2015-1-4 16:35:28 | 显示全部楼层
PIC16 PIC18一般情况下代码量不会很大吧。我感觉CCS应付绰绰有余了。

出0入0汤圆

 楼主| 发表于 2015-1-4 16:43:41 | 显示全部楼层
firstelec 发表于 2015-1-4 16:29
ccs 还有一个好处,他提供了很多实际例子,你不一定马上抄袭,但是这些例子的思路是非常好的,你看了才觉得 ...

没错。。我都是通过例子程序学习的。。
学习中断 , timer , 学习如何缓冲 RS232 等等

不过, 我有把例子的 内建指令, 如
Output_high(pin_A0);

这类内建指令我没有去用的, 一般都会修改去更直接的。。

出0入0汤圆

 楼主| 发表于 2015-1-4 16:48:35 | 显示全部楼层
firstelec 发表于 2015-1-4 16:35
PIC16 PIC18一般情况下代码量不会很大吧。我感觉CCS应付绰绰有余了。

PIC12都可以。。。

就因为他不是ANSI C, 他没有遵照 16bit 的处理, 内部按照14bit 的指令优化, 产生出来的hex 是高度优化的。。

其实, CCS C 是相容97%  ANSI C 标准。

可以参考:
http://www.ccsinfo.com/downloads/ansi_compliance.pdf

出0入0汤圆

发表于 2015-1-4 16:50:59 | 显示全部楼层
用的多的还是Hi-Tech C这个,有新出的片子,好像不支持了。所以最近想在看看ccs,好像支持

出0入12汤圆

发表于 2015-1-4 19:01:15 | 显示全部楼层
pic_flash 发表于 2015-1-4 14:22
是的, 没有错。。我算是很纯的,“怪咖”之一 ~~在一楼我都大概交代我的背景了。。呵呵

因为习惯了,  ...

同意你的说法,不过我不算纯粹的电子工程师,呵呵。

出0入0汤圆

 楼主| 发表于 2015-1-4 20:19:17 | 显示全部楼层
CHEN_LIU 发表于 2015-1-4 16:50
用的多的还是Hi-Tech C这个,有新出的片子,好像不支持了。所以最近想在看看ccs,好像支持 ...

如果是已经习惯Hi-tech C的, 我不建议你跳去CCS C, 你比较适合Microchip 的XC 系列。。

不过, 你或许要付费去买。。免费版的XC 是能用, 但是免费版的编译器的结果不是最优化的。
如果你做的工程是比较复杂的,这个就有很大的影响了。。

出0入0汤圆

发表于 2015-1-4 20:34:36 | 显示全部楼层
刚开始接触PIC,用的就是CCS;
PIC16F917、PIC16F1947驱动LCD。
后来一直用的PICC、PICC18,再高级的就没接触过了
现在不搞PICC了,转向TI和ST了

出0入0汤圆

发表于 2015-1-4 21:16:02 | 显示全部楼层
本帖最后由 DIY7777 于 2015-1-4 21:17 编辑

"不就是为了快速开发吗? CCS C 就正是一个工具, 利用他, 省心多了。"

非常的认同+1
善用工具才是正途
前些日子有下了MikroC玩玩
也是极方便
内建提供了非常详尽的库
一堆的库
也有专属开发除错工具
但毕竟周遭都是用HITEC or XC系列
故也就没多花时间深究
提供MikroC
有兴趣的可下载玩玩

https://mega.co.nz/#!oAMnCYhC!s6 ... iEOudN4R4sB3E6hnkqA

出0入0汤圆

 楼主| 发表于 2015-1-4 22:03:33 | 显示全部楼层
DIY7777 发表于 2015-1-4 21:16
"不就是为了快速开发吗? CCS C 就正是一个工具, 利用他, 省心多了。"

非常的认同+1

是的, MikroC 也是很丰富的, 他是比较后期才有的。。。。。他有个优点就是, 他是ANSI C 哦~
谢谢你分享的MickoC

出0入228汤圆

发表于 2015-1-5 08:30:27 | 显示全部楼层
pic_flash 发表于 2015-1-4 22:03
是的, MikroC 也是很丰富的, 他是比较后期才有的。。。。。他有个优点就是, 他是ANSI C 哦~
谢谢你分 ...

lz 能不能写个初级教程,就是安装+编译+下载。

这个好象要专用下载器和仿真器吧。
怎么解决

出0入12汤圆

发表于 2015-1-5 10:36:45 | 显示全部楼层
wxws 发表于 2015-1-5 08:30
lz 能不能写个初级教程,就是安装+编译+下载。

这个好象要专用下载器和仿真器吧。

支持 microchip 的下载器和仿真器。

出0入0汤圆

 楼主| 发表于 2015-1-5 11:03:35 | 显示全部楼层
wxws 发表于 2015-1-5 08:30
lz 能不能写个初级教程,就是安装+编译+下载。

这个好象要专用下载器和仿真器吧。

如果你是指CCS C, 我的做法是用CCS PCWDH IDE 编写程序, 用proteus 8.1 SP1 仿真,用 PICKIT2 烧录。

CCS 是有提供他们的ICD-U64, 没有用过
我有ICD-U40, 但是,不好用。。我用过几次, 就闲置了。。

我的Pickit3 也是闲置, 最常用的Pickit2。

出0入0汤圆

 楼主| 发表于 2015-1-5 11:07:10 | 显示全部楼层
虽然pickit2 被Microchip 退役了,遇到不支持的芯片时,可以看看这个帖子。

【分享】PICKIT2- 如何烧录新型的PIC 单片
http://www.amobbs.com/thread-5515377-1-1.html

出5入10汤圆

发表于 2015-1-5 13:31:18 | 显示全部楼层
常用pic 但用picc

出0入0汤圆

发表于 2015-1-6 01:12:09 来自手机 | 显示全部楼层
以前用PIC,用的是PICC,当时试着用CCS,做小东西的开发确实很方便,不过用起来还是觉得不太习惯,,

出0入0汤圆

 楼主| 发表于 2015-1-6 09:57:01 | 显示全部楼层
xd785 发表于 2015-1-6 01:12
以前用PIC,用的是PICC,当时试着用CCS,做小东西的开发确实很方便,不过用起来还是觉得不太习惯,, ...

也不是的。。其实小工程, 大工程都可以的。。
不知道你不习惯的是哪个部分? 是编译器的界面不习惯, 还是语法问题, 还是内建指令的混淆?

其实, 有一些内建指令, 我们要摒弃,不要使用。。
比如GPIO 的控制方法, 就有三种方法了。。
等有空时, 我写几个范例出来看看。。

出10入10汤圆

发表于 2015-1-6 12:37:09 来自手机 | 显示全部楼层
支持楼主写个范例或教程,一直用picc

出0入0汤圆

发表于 2015-1-6 20:27:43 | 显示全部楼层
pic_flash 发表于 2015-1-6 09:57
也不是的。。其实小工程, 大工程都可以的。。
不知道你不习惯的是哪个部分? 是编译器的界面不习惯, 还 ...

嗯 好的 现在在用pic24系列的,编译界面还是习惯用MPLAB X ,现在用的是C30的编译器…………

出0入0汤圆

发表于 2015-1-6 22:26:46 | 显示全部楼层
CCS 做些验证的小东西的确很好,里面一大堆现成的东西。做东西还是习惯用 C18/C30/C32 ,官网的实例多,抄过来改改就能用

出0入4汤圆

发表于 2015-1-11 00:08:33 | 显示全部楼层
挺好的 , 准备试用 ,看看

出0入4汤圆

发表于 2015-1-13 10:48:34 | 显示全部楼层
不是标准c这点比较头疼啊 - -

现在的工作要经常使用不同内核的单片机。。

代码基本复用了。

出0入0汤圆

 楼主| 发表于 2015-1-13 13:20:15 | 显示全部楼层
本帖最后由 pic_flash 于 2015-1-13 13:34 编辑
huarana 发表于 2015-1-13 10:48
不是标准c这点比较头疼啊 - -

现在的工作要经常使用不同内核的单片机。。


是的, CCS C 就不适合你用了。。

你在另一帖问到, 如何预设 EEprom 的值, 给大家参考~~

下面是CCS C 的写法, 假设是16F1827


  1. #include <16F1827.H>
  2. #fuses   INTRC_IO,nolvp,PROTECT,noWDT,put,brownout,nomclr,cpd
  3. #use delay(clock=16000000)

  4. //#rom  0x2100=  // for 16F628A
  5. #rom  0xF000={ // for 16F1826
  6. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  7. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  8. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  9. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  10. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  11. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  12. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  13. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  14. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  15. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  16. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  17. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  18. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  19. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  20. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  21. }

  22. void main()
  23. {
  24.    While(1)
  25.    {
  26.    
  27.    }
  28. }
复制代码


这些EEprom 值是编译后直接含在hex 里, 在pickit2 烧录时, 会默认写入EEprom。

出0入0汤圆

 楼主| 发表于 2015-1-13 13:32:23 | 显示全部楼层
之前我有提到,在CCS C, 控制I/O 有几种写法, 而且我不建议用内建的方法。
内建的方法如:
Output_high() ,Output_Low() , Output_A() 等等。。这些是CCS C独有的指令, 最好不要用 。。
原因是, 为了和其他的C 更好的相容。。

要控制I/O, 直接用写入Register 的方法, 这个写法, 其实和Hi-tech C, XC 是没有太大的分别了。。
下面是同样的功能, 就是闪在port A 的LED。

  1. // Ex1, 这个是最简单的, 你也不用理 TRIS, 编译器内部会处理TRIS
  2. #include <16F1826.h>
  3. #device *=16 ADC=10
  4. #fuses INTRC_IO, PROTECT,WDT,put,brownout,nolvp, NoMCLR, NOFCMEN
  5. #use delay(internal=16Mhz, restart_wdt)

  6. #define LED pin_A0

  7. void main()
  8. {
  9.    while(1)
  10.    {
  11.       output_high(LED);
  12.       delay_ms(500);
  13.       output_Low(LED);
  14.       delay_ms(500);
  15.    }
  16. }

  17. // Ex2, 和EX1一样 只是示范使用 #define, 可以简单的修改define 的 pin_A0 去其他的I/O
  18. #include <16F1826.h>
  19. #device *=16 ADC=10
  20. #fuses INTRC_IO, PROTECT,WDT,put,brownout,nolvp, NoMCLR, NOFCMEN
  21. #use delay(internal=16Mhz, restart_wdt)

  22. #define LED pin_A0

  23. void main()
  24. {
  25.    while(1)
  26.    {
  27.       output_high(LED);
  28.       delay_ms(500);
  29.       output_Low(LED);
  30.       delay_ms(500);
  31.    }
  32. }

  33. // Ex3, 这是用Output_bit 的控制方法
  34. #include <16F1826.h>
  35. #device *=16 ADC=10
  36. #fuses INTRC_IO, PROTECT,WDT,put,brownout,nolvp, NoMCLR, NOFCMEN
  37. #use delay(internal=16Mhz, restart_wdt)

  38. #define LED pin_A0

  39. void main()
  40. {
  41.    while(1)
  42.    {
  43.       Output_bit(LED,1);
  44.       delay_ms(500);
  45.       Output_bit(LED,0);
  46.       delay_ms(500);
  47.    }
  48. }
复制代码



Ex4, 这个是推荐的写法, 直接控制Register, 会更相容与其他的C 编译器。

  1. // Ex4, 这个推荐使用的方法, 直接控制Register, 会更相容与其他的C 编译器。
  2. #include <16F1826.h>
  3. #device *=16 ADC=10
  4. #fuses INTRC_IO, PROTECT,WDT,put,brownout,nolvp, NoMCLR, NOFCMEN
  5. #use delay(internal=16Mhz, restart_wdt)

  6. #use fast_io ( A )

  7. #byte Port_A  = 0x010C

  8. #bit LED =port_A.0  //LED 接在Port A0

  9. void main()
  10. {
  11. //              76543210
  12.    set_tris_A(0b00000000); //Port A , 全部是输出

  13.    while(1)
  14.    {
  15.       LED=1;
  16.       delay_ms(500);
  17.       LED=0;
  18.       delay_ms(500);
  19.    }
  20. }
复制代码




出0入4汤圆

发表于 2015-1-14 10:57:29 | 显示全部楼层
pic_flash 发表于 2015-1-13 13:20
是的, CCS C 就不适合你用了。。

你在另一帖问到, 如何预设 EEprom 的值, 给大家参考~~


嗯,多谢。那个问题解决了,  pic.h头文件里有相应的库,调用了一下就好了。

另外,其实我还是蛮喜欢  你所说的内建库的使用的 ,就像 set_in_hi(RS);  set_in_in(RS);  ,因为这样移植起来非常方便,任何单片机,都只需要写几个宏就可以移植过去。

尤其是对某些io口频繁切换输入输出等等类似的情况下更是好用。  

当然 用 LED1=1;比较直观,但是有时候有需要LED1这个脚的输入输出方式改变,变成输入脚就不太好弄,  举例来说 就是 IIC 。

这也是个人习惯问题。熟练了都一样   

出0入0汤圆

 楼主| 发表于 2015-1-14 18:19:14 | 显示全部楼层
本帖最后由 pic_flash 于 2015-1-14 18:21 编辑
huarana 发表于 2015-1-14 10:57
嗯,多谢。那个问题解决了,  pic.h头文件里有相应的库,调用了一下就好了。

另外,其实我还是蛮喜欢   ...


I2C, 在CCS 的使用, 两种模式, 硬I2C , 或软I2C 。。

这个我就是应用他内建的功能了。。
CCS 在这些I2C USART 之类的库, 已经很成熟了,效率也高。。所以我不折腾去写自己的库。。

但是,如果是其他移植过来的源码, 也不是不可以。。只是比较麻烦移植。。
所以 , 这就是为什么CCS 鲜少人使用的关系。。这个是事实。。

I2C 的使用如下:


  1. #use i2c(master, sda=Pin_C4, scl=Pin_C3)// 告诉编译器, 你要启用I2C功能
  2. i2c_start();            // i2C 开始
  3. ack = i2c_write(0xa0);  // 写入
  4. data=i2c_read(0); //读出
  5. i2c_stop(); // I2C 结束
复制代码


出0入0汤圆

发表于 2015-1-15 11:44:51 | 显示全部楼层
CCS PIC用过,不习惯!

出0入0汤圆

 楼主| 发表于 2015-1-16 19:23:55 | 显示全部楼层
CCS PCWH V5.036
链接: http://pan.baidu.com/s/1c0ngG9a
密码: gh1q

需要的可以收藏。

出0入0汤圆

发表于 2015-1-19 16:49:25 | 显示全部楼层
有哪位用PIC CCS连接过ICD3?我打算购1台ICD3,请用过的给指导下!

出0入0汤圆

发表于 2015-1-19 17:26:43 | 显示全部楼层
用PIC CCS飘过

出0入0汤圆

 楼主| 发表于 2015-1-19 21:15:25 | 显示全部楼层
chenhu2012 发表于 2015-1-19 16:49
有哪位用PIC CCS连接过ICD3?我打算购1台ICD3,请用过的给指导下!

我没有使用ICD, 我很庆幸都能用Proteus 8 来完成除错的部分。

要用ICD 3, 请看
http://www.ccsinfo.com/newsdesk_info.php?newsdesk_id=103

然后你要下载插件以让CCS 辨认你的ICD3:
http://www.ccsinfo.com/downloads/setup_mctools.exe

上面的只是网络上找到的资讯, 不是我个人的经验。。

希望楼主成功连上ICD3后, 回来分享, 报告。

出0入0汤圆

 楼主| 发表于 2015-1-19 21:17:50 | 显示全部楼层
chenhu2012 发表于 2015-1-19 16:49
有哪位用PIC CCS连接过ICD3?我打算购1台ICD3,请用过的给指导下!

我有用过ICD-USB, 那个是CCS 出品的, 很不好用, 很慢。。不爱用, 现在变成集尘器。

出0入0汤圆

发表于 2015-1-19 22:27:12 | 显示全部楼层
支持楼主的讨论,曾经用过 CCS C,现在很少用了。

出0入0汤圆

发表于 2015-1-20 11:20:30 | 显示全部楼层
谢谢pic_flash 的回复,ICD3已下单了。可能明天能收到,试用后将会结果报告给大家。个人希望喜欢PIC  CCS的朋友共同学习,共同进步!

出0入0汤圆

发表于 2015-1-21 17:47:31 | 显示全部楼层
按pic_flash 提供地址里的方法,CCS编译器与ICD3联接成功。但因我基板还没焊接完成,不能下载。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-3-1 07:41:18 | 显示全部楼层
CCS PCWH V5.042
链接: http://pan.baidu.com/s/1bnhKqBH
密码: i81s

需要的可以收藏。

出0入0汤圆

 楼主| 发表于 2015-3-1 07:44:11 | 显示全部楼层
最近正在折腾, 要做一个能加密的Bootloader, 打算从Ex_Bootloader.c 修改成我要的模式。。
好像不是那么简单。。

不知道有人完成过PIC 能加密的bootloader 吗?能分享思路吗?

出0入0汤圆

发表于 2015-3-1 14:55:39 | 显示全部楼层
CCS C用起来还是不错的,小产品程序一直用它来开发

出0入0汤圆

发表于 2015-3-1 15:07:33 | 显示全部楼层
最早接触PIC的时候用过一阵子CCS,可以自己写头文件,然后就跟PICC啥的风格很像了.
后来因为要跟公司其他同事配合,就换成了PICC

出0入0汤圆

发表于 2015-3-1 15:17:57 | 显示全部楼层
mark 用PIC CCS 也有差不多块5年了.  其实没啥感觉.就一个编译器..不要在意细节..
   现在也用了其他的单片机....都没得感觉...就一个单片机撒..不要在意细节.
   最近也还是在写代码. 也没得感觉..就简单的逻辑关系... 不要在意细节...

出5入0汤圆

发表于 2015-3-1 15:21:24 来自手机 | 显示全部楼层
不错支持一下

出0入4汤圆

发表于 2015-4-14 14:56:07 | 显示全部楼层
顶一下楼主,有兴趣的时候看看,虽然已经用了很多年,发现很多bug。

出0入0汤圆

发表于 2015-4-29 19:18:57 | 显示全部楼层
最近这块同什么更新,我来顶顶!

出0入0汤圆

发表于 2015-5-7 23:22:07 | 显示全部楼层
pic_flash 发表于 2015-3-1 07:44
最近正在折腾, 要做一个能加密的Bootloader, 打算从Ex_Bootloader.c 修改成我要的模式。。
好像不是那么 ...

以前用PICC开发,刚开始使用CCS,很是不习惯。由一个疑问,CCS编译器是如何分配全局变量和局部变量的?

PICC的局部变量是这样的:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-5-11 11:40:18 | 显示全部楼层
CCS PCWH V5.045
链接: http://pan.baidu.com/s/1qWjy36G
密码: cup1
需要的可以收藏。

CCS PCWH V5.045

5.045 Another version and some more fixes from CCS

5.045  #locate now issues a warning if you locate a variable on top of another
5.045  A PIC24 problem with the < and > operators on floats with interrupts is fixed
5.045  A problem with multiple compilation units and some static variables not being zeroed is fixed
5.045  A warning in string.h has now been eliminated
5.045  A bug allocating multiple odd sized rom structures in PIC24 is fixed


Updated:  PIC12F1571
Updated:  PIC12F1572
New:      PIC16F1574
New:      PIC16F1575
New:      PIC16F1578
New:      PIC16F1579
New:      PIC16F1764
New:      PIC16F1765
New:      PIC16F1768
New:      PIC16F1769

出0入0汤圆

 楼主| 发表于 2015-5-11 11:41:32 | 显示全部楼层
gmyu 发表于 2015-4-14 14:56
顶一下楼主,有兴趣的时候看看,虽然已经用了很多年,发现很多bug。

的确, CCS的 Bug 很多。。但是很快在下个版本就修正。

出0入0汤圆

 楼主| 发表于 2015-5-11 11:57:17 | 显示全部楼层
zhikunWang 发表于 2015-5-7 23:22
以前用PICC开发,刚开始使用CCS,很是不习惯。由一个疑问,CCS编译器是如何分配全局变量和局部变量的?

...

这个我还真不知道。。或许以后找到了答案在告诉你。。
不过, CCS C有个Statistic , 里面显示了RAM 是被那个函数用去的。

出0入0汤圆

发表于 2015-5-11 16:05:10 | 显示全部楼层
谢谢楼主的无私奉献。方便的话,留个联系方式,以便交流。谢谢!

出0入0汤圆

发表于 2015-6-28 21:16:28 | 显示全部楼层
LZ 最近怎么没有更新呢?

出0入0汤圆

发表于 2015-7-6 14:01:54 | 显示全部楼层
已经更新到 V5.048

出0入0汤圆

发表于 2015-7-7 13:10:36 | 显示全部楼层
ANHOME: V5.048能否共享下呢?

出0入0汤圆

发表于 2015-7-7 13:11:04 | 显示全部楼层
一直关注这个贴,好久没人回复了!

出0入0汤圆

发表于 2015-7-7 16:19:26 | 显示全部楼层
chenhu2012 发表于 2015-7-7 13:10
ANHOME: V5.048能否共享下呢?

https://mega.nz/#!tMZjDJDS!S9D8A ... OmELstUD264AAML4vj0

不过需要注册,我还没时间弄这个。

出0入0汤圆

 楼主| 发表于 2015-7-9 10:20:04 | 显示全部楼层
chenhu2012 发表于 2015-7-7 13:11
一直关注这个贴,好久没人回复了!

谢谢关注哦 。。。 5.048 我下载好了, 但是一直上传不到百度盘, 一直网络异常。。
现在使用网络版上传, 希望可以上传成功。。

虽然现在是5.048 了, 但是我还是用着5.035, 用着比较踏实, 除非有需要了, 才会去更新。。

另外, 我也有个习惯, 就是在C 文件里, 有写这个是用什么版本的CCS C 编译的, 方便以后除错时, 有个依据。。不同的版本 , 有时产生出不同的hex 。。

出0入0汤圆

 楼主| 发表于 2015-7-9 10:22:52 | 显示全部楼层
ANHOME 发表于 2015-7-7 16:19
https://mega.nz/#!tMZjDJDS!S9D8AK_cKVD44Y1uPXVKOjx5OmELstUD264AAML4vj0

不过需要注册,我还没时间弄 ...

谢谢你。。
这个连接在中国能操作吗? 只是想知道而已。。
我这里(国外)下载是不需要注册。。。

出0入0汤圆

 楼主| 发表于 2015-7-9 10:24:38 | 显示全部楼层
chenhu2012 发表于 2015-5-11 16:05
谢谢楼主的无私奉献。方便的话,留个联系方式,以便交流。谢谢!

这里就是一个交流平台啊。。
私人电邮的话, 我私信你吧。。

出0入0汤圆

 楼主| 发表于 2015-7-9 10:39:52 | 显示全部楼层
这里有人用Proteus 吗?
目前是 Proteus 8.3.Sp1  demo 版本, 然后和谐。。

出0入0汤圆

发表于 2015-7-9 10:52:55 | 显示全部楼层
pic_flash 发表于 2015-7-9 10:22
谢谢你。。
这个连接在中国能操作吗? 只是想知道而已。。
我这里(国外)下载是不需要注册。 ...

能操作。能下载,但下载下来的文件不知道放在哪里。

出0入0汤圆

 楼主| 发表于 2015-7-9 14:31:06 | 显示全部楼层
CCS PCWH V5.048
链接: http://pan.baidu.com/s/1pJ3M9Ft
密码: kjtp
需要的可以收藏。

CCS PCWH V5.048
Recent changes include:
5.048  Compiler now does type checking on EXTERNs
5.048  A compiler IDE hang problem with some complex structures is fixed

出0入0汤圆

发表于 2015-7-10 10:09:28 | 显示全部楼层
pic_flash 发表于 2015-7-9 10:39
这里有人用Proteus 吗?
目前是 Proteus 8.3.Sp1  demo 版本, 然后和谐。。

有时用用,最新版没和谐

出0入0汤圆

发表于 2015-7-10 13:55:51 | 显示全部楼层
pic_flash 发表于 2015-7-9 14:31
CCS PCWH V5.048
链接: http://pan.baidu.com/s/1pJ3M9Ft
密码: kjtp

多谢,正好有个小东西搞。可以用上

出0入0汤圆

发表于 2015-7-10 14:04:11 | 显示全部楼层
pic_flash 发表于 2015-5-11 11:57
这个我还真不知道。。或许以后找到了答案在告诉你。。
不过, CCS C有个Statistic , 里面显示了RAM 是被 ...

函数内的局部变量是分配到堆栈里的还是?

出0入0汤圆

发表于 2015-7-10 14:04:36 | 显示全部楼层
pic_flash 发表于 2015-1-4 22:03
是的, MikroC 也是很丰富的, 他是比较后期才有的。。。。。他有个优点就是, 他是ANSI C 哦~
谢谢你分 ...

我想说 PIC16 PIC18 我就用这两款.用PIC CCS 编译器是最好的选择.
有PIC HITCH....(貌似拼错了) .真的是生不如死.你换了一个版本就有问题.编译都过不了.

出0入0汤圆

发表于 2015-7-14 22:56:43 | 显示全部楼层
点赞 pic_flash

出0入0汤圆

发表于 2015-7-15 14:01:36 | 显示全部楼层
点赞 pic_flash,一直来的无私奉献!

出0入0汤圆

 楼主| 发表于 2015-7-19 23:31:11 | 显示全部楼层
miscell 发表于 2015-7-10 10:09
有时用用,最新版没和谐

Proteus 8.3 Sp1 (含和谐)
链接:http://pan.baidu.com/s/1hqEQR1i
密码:qgm5

出0入0汤圆

 楼主| 发表于 2015-7-19 23:33:30 | 显示全部楼层
sanger 发表于 2015-7-10 14:04
函数内的局部变量是分配到堆栈里的还是?

这我不太清楚, 你可以在编译后, 查看 .sta  文档,或许你能看出来是怎么分配的。

出0入0汤圆

发表于 2015-7-20 08:29:12 | 显示全部楼层
pic_flash 发表于 2015-7-19 23:31
Proteus 8.3 Sp1 (含和谐)
链接:http://pan.baidu.com/s/1hqEQR1i
密码:qgm5

试试,谢谢!

出0入0汤圆

发表于 2015-8-8 10:03:10 | 显示全部楼层
我也有个项目要用到PIC,打算用CCS。很希望能和楼主多交流。

出0入0汤圆

 楼主| 发表于 2015-8-8 21:28:08 | 显示全部楼层
maxking 发表于 2015-8-8 10:03
我也有个项目要用到PIC,打算用CCS。很希望能和楼主多交流。

没有问题的。。  :)

出0入0汤圆

发表于 2015-8-8 21:53:30 | 显示全部楼层
pic_flash 发表于 2015-8-8 21:28
没有问题的。。  :)

可否私信我 你QQ号?你设置只能好友发送,我无法发信息给你。

出0入0汤圆

发表于 2015-9-4 14:20:36 | 显示全部楼层
楼主,好久没见你发贴了。一直在关注你哟!

出0入0汤圆

发表于 2015-9-4 14:30:52 | 显示全部楼层
网上找的PIC CCS学习的中文资料,初学者参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-9-4 14:32:20 | 显示全部楼层
网上找的PIC CCS学习的中文资料,初学者参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-9-4 14:33:00 | 显示全部楼层
感谢楼主让我用上了CCS V5.048,在差不多十年前用过,超好用,谢谢!
请问有没有配套的那个教程PDF,DSPIC系列,套件里还配了书的EXERCISE BOOK那个?我想看看DSPIC系列的标准写法。

出0入0汤圆

发表于 2015-9-4 14:47:45 | 显示全部楼层
网上的资料,提供给大家参考下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-9-4 15:13:51 | 显示全部楼层
PIC CCS软件IDE各工具条说明(日文版的),可参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 00:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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