SDCC编译器快速入门指南
4星 · 超过85%的资源 需积分: 13 66 浏览量
更新于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编程至关重要。在实际项目中,根据目标硬件的内存布局和资源限制,选择合适的内存模型和数据类型,能够优化程序性能并节省宝贵的存储空间。
2016-05-09 上传
2023-05-05 上传
2023-08-19 上传
2023-10-27 上传
2023-09-06 上传
2023-08-17 上传
2024-07-13 上传
hclin168
- 粉丝: 0
- 资源: 14
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍