SDCC编译器快速入门指南
4星 · 超过85%的资源 需积分: 13 175 浏览量
更新于2024-09-16
收藏 658KB DOC 举报
"SDCC簡明手冊是关于SDCC Compiler快速上手的指南,主要关注8051微控制器和Windows环境的应用。"
SDCC(Small Device C Compiler)是一款开源的C编译器,特别适合于小型嵌入式系统,如8051微控制器。在使用SDCC之前,你需要在Google上搜索并从SourceForge官方网站下载最新版本的SDCC安装包。
安装完成后,在Windows环境下设置环境变量PATH,以便于命令行调用SDCC。为了测试SDCC是否安装成功,你可以编写一个简单的C程序,如`chartest.c`,包含如下代码:
```c
void main(void) {
test = 0;
}
```
然后通过命令行执行`sdcc -c chartest.c`,这将生成`.asm`, `.sym`, `.lst`, 和 `.rel`文件,表明编译过程顺利完成。如果希望进行链接并生成可烧录的二进制文件,可以使用`sdcc test.c`,这将生成`.ihx`文件,例如`test.ihx`。
接下来,你可以尝试使用标准库,如`string.h`。下面是一个示例程序:
```c
#include <string.h>
char str1[10];
void main(void) {
strcpy(str1, "testing");
}
```
编译这个程序,使用`sdcc test1.c`,同样会生成`.ihx`文件,即`test1.ihx`。这表明SDCC支持标准库函数的编译。为了生成Intel Hex格式的文件,用于在目标硬件上加载,你可以运行`packihx test1.ihx > test1.hex`。
在SDCC中,有多种数据类型和内存模型供选择,以适应不同需求:
1. `__data`: 默认的数据类型,适用于小型内存模型,存储在内部RAM。
2. `__xdata`: 默认的大内存模型,用于外部RAM。
3. `__idata`: 用于间接访问的数据。
4. `__pdata`: 适用于外部RAM的低地址部分。
5. `__code`: 用于存储代码的区域。
6. `__bit`: 位类型变量,用于操作单个位。
7. `__sfr`, `__sfr16`, `__sbit`: 分别用于定义特殊功能寄存器(SFR)、16位SFR和单一位SFR。
指针变量也有不同的类型,例如:
- `__data unsigned char *__datap`: 指向内部RAM的数据指针。
- `__xdata unsigned char *__xdatap`: 指向外部RAM的数据指针。
- `__code unsigned char *__codep`: 指向代码区的指针。
- `unsigned char *p`: 通用的数据指针。
- `char (*__data fp)(void)`: 定义一个在内部RAM中的函数指针。
8051微控制器的存储结构通常分为几个区域,如00-1F地址范围属于内部RAM的一部分。了解这些内存模型和数据类型对于有效地利用SDCC进行8051编程至关重要。在实际项目中,根据目标硬件的内存布局和资源限制,选择合适的内存模型和数据类型,能够优化程序性能并节省宝贵的存储空间。
2021-04-24 上传
2017-11-16 上传
2012-12-02 上传
2012-12-02 上传
2022-09-20 上传
hclin168
- 粉丝: 0
- 资源: 14
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新