打印
[PIC®/AVR®/dsPIC®产品]

吐槽一下PICC

[复制链接]
1746|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
juqiang|  楼主 | 2013-12-23 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做一项目,单片机用PIC16F1829,显示是ST7920的12864LCD,9个菜单页面,一些设定按键和一个SPI,一个UART实时接收和发送数据,10个字节收发。先用汇编写,考虑到UART在BANK3,SPI在BANK4,LCD寄存器在BANK0,为了避免数据调用造成频繁BANK切换,把常用数据寄存器和标志位放在无敌的070h-07Fh,程序约1.2K,主要是字库地址码占用大量空间,RAM用了约90字节,还加了一些冗余程序保证系统稳定,实际使用个人认为系统健壮性还是不错的。
    考虑到维护和升级不便,又用PICC9.83重写了一次,系统做成各个模块函数。最后编译死活不过,提示 no space for ***错误,只有释放掉我自己定义占用的070h-07Fh才行,在其他地址和BANK设置volatile则没问题,看来PICC也要调用070h-07Fh。用PICC PRO模式下9级优化,程序还有1.6K,而寄存器竟然占用了360个字节,要是RAM小的单片机就不能用了,在汇编里看了一下,BANK切换比较频繁必然实时性差,还有寄存器动态覆盖其稳定性肯定不及使用固定地址寄存器,在PIC16和PIC18上C要达到汇编的效率,确实有不小的差距,特别是对实时和紧凑性要求高的程序。虽然现在基本都是用C了,方便快捷,但有时汇编也是必须的和不能丢的。
另外赞下PIC16F1937,稳压芯片坏了,13V高压直通单片机,换掉稳压块,最后单片机还没被烧掉,太坚强了。
   
沙发
youss| | 2013-12-23 11:05 | 只看该作者
在PIC16和PIC18上C要达到汇编的效率,确实有不小的差距,特别是对实时和紧凑性要求高的程序。

显示ST7920的12864LCD正想用,经验借鉴!

使用特权

评论回复
板凳
Light_David| | 2013-12-26 00:01 | 只看该作者
PIC16架构决定了C代码效率的底下。
话说你用的16F1XXX已经是改进后的,用老款16FXXX的更是惨不忍睹。
PIC8位的那种中断结构,还谈啥效率额。

使用特权

评论回复
地板
frank303| | 2013-12-26 23:34 | 只看该作者
用24f

使用特权

评论回复
5
温故知新| | 2013-12-31 21:25 | 只看该作者
要便宜高效还不如用ARM M0,还有STC15F2K60S2,片上集成2K的RAM,很好用

使用特权

评论回复
6
加油吧小鱼儿| | 2014-3-25 15:59 | 只看该作者
看一下吐槽~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

50

帖子

0

粉丝