[PIC®/AVR®/dsPIC®产品] 吐槽一下PICC

[复制链接]
2131|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 来自手机 | 显示全部楼层
温故知新 发表于 2013-12-31 21:25 | 显示全部楼层
要便宜高效还不如用ARM M0,还有STC15F2K60S2,片上集成2K的RAM,很好用
加油吧小鱼儿 发表于 2014-3-25 15:59 | 显示全部楼层
看一下吐槽~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部