sdcc 51 迁移记录

原创 2016年09月14日 21:26:32


sdcc 51 迁移记录

这是makefile中的核心内容

out.ihx:$(object)
 @echo ------------------连接$^------------------
 sdcc --iram-size 256 --xram-size 1024 -o $@ $^

%.hex:%.ihx
 packihx $^ > $@
 
%.bin:%.hex
 objcopy -I ihex -O binary $^ $@

%.rel:%.c $(hfile)
 @echo ------------------编译$<------------------
 sdcc --iram-size 256 --xram-size 1024 -c $<

sdcc -c xxx.c
用来把.c文件编译成.rel文件,相当于object文件,把所有的.c文件都用这个命令编译成.rel文件
全部编译成.rel文件后,
sdcc -o out.ihx x1.rel x2.rel .....
这样把所有的.rel连接成最后的.ihx文件,
packihx out.ihx>out.hex
把ihx文件转换成.hex文件。
注意这个hex文件可能是格式不太对头,用stc的isp软件写入无法正常工作。需要用
objcopy -I ihex -O binary out.hex out.bin
把.hex转换成.bin格式,这个文件stc读入才是正常的。

sdcc扩展了一些保留字,都是双下划线开头的,比如 __bit,__code,__interrupt这些,注意要调整加上双下划线。
_nop_()没有了,考虑定义一个
#define _nop_() __asm nop __endasm
来替代。

中断服务函数一定要把定义在main()函数所在的.c文件中写一份,否则不能正确调用中断服务函数。

unsigned char a,b;
if(a+b==0xff)

这样的判断居然也出错,看了一下.lst文件里的汇编代码,sdcc把a,b都扩展成了2字节的int来处理,还处理错了,真要命。
要改成
unsigned char a,b,c;
c=a+b;
if(c==0xff)
这样才可以正常处理。

linux下使用SDCC开发MCS51单片机

在linux下使用SDCC开发MCS51单片机

SDCC使用说明

SDCC的使用说明,包含汇编器的使用方法。
  • baskMMU
  • baskMMU
  • 2015年02月10日 00:09
  • 1343

sdcc多文件的编译

还是前面的main.c,分割成两个源文件,main.c如下:#include #include "delay.h" #define led1 P2_0 void main(void) { ...

sdcc man阅读笔记(三)——c51专用编译选项

一、C51专用编译选项

ubuntu+eclipse+sdcc 搭建C51开发环境

1.安装eclipse 2.安装sdcc 在ubuntu software centter 直接找到sdcc并安装 3.安装eclipse的sdcc插件 到http://sourceforge...

sdcc 中断使用中的一个问题

在sdcc中,中断处理函数使用关键字__interrupt标识,后面跟上中断号,8051中断号列表如下: Interrupt #     Description     Vector Address...

SDCC中中断函数的注意事项

Sdcc中定义中断服务程序(ISR)时,中断函数的格式 void interrupt_identifier(void) __interrupt interrupt_number using bank...

Ubuntu下的AT89S52,S51+SDCC+USBASP的开发环境搭建-大工CSDN高校俱乐部EE01工作室

Linux下的MCU开发之51 -51系列的开发环境搭建 Galaxy2416 联系方式:sunxiao.gin@gmail.com 附件包内容: 程序源码,超级简易M...

Ubuntu下的AT89S52,S51+SDCC+USBASP的开发环境的搭建

Linux下的MCU开发之51 -51系列的开发环境搭建 Galaxy2416 联系方式:sunxiao.gin@gmail.com 附件包内容: 程序源码,超级简易Makefile模板,...

免费的51单片机编译工具链SDCC

  • 2010年05月11日 16:41
  • 3.24MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sdcc 51 迁移记录
举报原因:
原因补充:

(最多只允许输入30个字)