SDCC编译器快速入门指南

4星 · 超过85%的资源 需积分: 13 22 下载量 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编程至关重要。在实际项目中,根据目标硬件的内存布局和资源限制,选择合适的内存模型和数据类型,能够优化程序性能并节省宝贵的存储空间。