SDCC编译器及asxxxx汇编编译器

本文介绍了如何从习惯Keil C转向使用SDCC编译器,强调了SDCC中对8051头文件的使用、非ANSI C关键字的特殊形式,以及__at关键字来定义单片机引脚。SDCC的内嵌汇编使用__asm和__endasm关键字。多文件项目的编译需分步进行,并提供了相关命令示例。注意,SDCC不支持直接编译多个源文件,建议使用makefile或批处理文件管理。此外,SDCC生成的IHX文件转换为BIN文件时可能存在问题,需要额外工具处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用as8051 来汇编汇编程序:as8051 -o -l -s xx.asm

源代码与Keil C的稍许不同

对于已经习惯使用Keil C的用户需要注意一下,SDCC的源代码和Keil C有所不同,需要做一点调整才能编译通过.SDCC比较多的使用像8051.h这样的头文件(include/mcs51目录下也有reg51.h这样的头文件).

对于一些非ANSI C的关键字,SDCC均采用双下滑线开头的方式定义,如__code,__idata,__sbit......对于单片机引脚的定义SDCC采用了 __at关键字和十六进制地址(用户对底层地址信息要弄清楚,不过我觉得__at关键字是一个比较有特色的改进),如下:个人建议还是用#define 来定义引脚方便

//SDCC Keil C  __sbit __at  0x94  blackLineLeft ;  sbit blackLineLeft =P1 ^ 4 ;  __sbit __at  0x95  blackLineRight ;  sbit blackLineRight =P1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值