找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6065|回复: 2
打印 上一主题 下一主题
收起左侧

义隆单片机编译小结

[复制链接]
跳转到指定楼层
楼主
ID:3721 发表于 2015-1-5 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
c语言编译单片机程序。比如编译MCS-51或者AVR有时会说开发效率比汇编高,而开发PIC和ELAN却发现,c语言许多经典的格式都无法使用。MCS-51在RAM空间开辟堆栈时会考虑堆栈时会考虑,因为深度而像C语言里面的函数嵌套,计算阶乘时不可以想c语言那样使用函数嵌套。ELAN的c编译器在使用过程发现,不宜使用局部变量,最好有和书写汇编是同样的数据空间分配思想。对定义的变量进行地址定位,uchar data1 @20 :bank 0;bit buzzer @0x20 @0:bank 0;。
今天写程序时编译总会进入死循环,uchar i;for(i=0;i<5;i++);这样的语句会进入死循环。在反汇编窗口观察反汇编代码发现i被定位在数据空间0x39,仪陇单片机78P153S的用户数据空间从0x20-0x2f超出空间,应该是编译器的问题。修改局部变量为全局变量并定位,uchar i @0x20:bank 0;就不会出现上面的问题。
MCS-51有128字节的数据存储空间r0-r7寄存器有七组,可以定义很大的数组,ELAN的数据存储空间,定义一个15的数组编译就会出现数据存储空间不足的编译警告。stc单片机4k的,16k很常见,所以从来用c语言不太考虑程序空间的开销。曾经用11F02做LED大屏幕显示,32幅32*48图像的字模存储超出了2k空间,后来考虑11f03,后来就压缩成16*24的了。仪陇的153只有1k,156也只有1k,468,447有2k,经常编程序就超出空间,不得不苦苦思索程序压缩。
STC的单片机都是串口编程,烧写次数多达100000次,所以开发调试就是不停的下载调试。
早上烧仪陇单片机,烧程序调试,一个小时内我扔了7个单片机到垃圾桶,就不扔了,OTP编程牛的一踏,每每开发一个产品会有多少单片机牺牲。
下午就用仿真器调试了,发现了好多问题,当正确按说明进入系统,蜂鸣器鸣叫一声,黄灯闪烁一次,进入编码,输入密码,一项的实现时,对自己说,小翔翔,快觉悟了,加油。所有的都是一个人苦心去悟出来的。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:127421 发表于 2016-6-20 16:13 | 只看该作者
嘿嘿,你用C语言搞的?
回复

使用道具 举报

板凳
ID:252566 发表于 2017-11-23 10:12 | 只看该作者
请问楼主,你是用的义隆哪个型号的MCU,一般OTP的话少有用C语言的。
我之前是用汇编做的。如果你要什么帮助的话,可以找我。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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