目录
STC官网
SDCC官网
SDCC简介
SDCC(Small Device C Compiler)是一款开源的C语言编译器,专门设计用于嵌入式系统和小型设备的开发。它支持多种架构和芯片,包括一些常见的单片机和微处理器,如8051、Z80、PIC等。
SDCC安装
brew install sdcc
sdcc -v
头文件目录
cd /usr/local/share/sdcc/include/mcs51
#include <reg51.h>
#include <8051.h>
#include <8052.h>
#include <stc89.h>
#include <stc12.h>
#include <stdio.h>
#include <serial.h>
#include <serial_IO.h>
# 编译C代码,生成多个文件,包括main.ihx、main.hex
sdcc -mmcs51 --model-small -p89 main.c
# -mmcs51: 指定目标平台为MCS-51系列,适用于8051单片机。
# --model-small: 选择小型模型,适用于资源受限的设备,如STC89C51。
# -p89: 指定目标芯片型号为STC89系列。
# 生成.hex文件
packihx main.ihx > main.hex
安装烧录工具
pip3 install stcgal
# 编译程序
sdcc demo.c
# 烧录程序
stcgal -P stc89 -b 9600 -p /dev/cu.wchusbserial1410 demo.ihx
make 编译烧录
- main.c
#include <stc89.h>
void main(void) {
}
- Makefile 文件内容
# SDCC编译器
CC = sdcc
# SDCC链接器
LD = sdcc
# 编译选项,这里使用了-mmcs51 --model-small来指定目标为8051系列单片机的小模型
CFLAGS = -mmcs51 --model-small -p89
# 源文件的列表,这里只有一个main.c
SRC = main.c
# 目标文件的名称
TARGET = main
IHX_FILE = $(TARGET).ihx
HEX_FILE = $(TARGET).hex
# 是默认的目标,它依赖于$(HEX_FILE)
all: flash clean
# 目标用于烧录生成的Hex文件到STC89系列的单片机
flash: $(SRC)
$(CC) $(CFLAGS) $(SRC) && packihx $(IHX_FILE) > $(HEX_FILE)
# 烧录程序
# stcgal -p stc89 -P /dev/ttyUSB0 -b 9600 $(IHX_FILE)
stcgal -p stc89 -P /dev/ttyUSB0 -b 9600 $(HEX_FILE)
# 清理生成的中间文件
clean:
rm -f *.asm *.cdb *.rel *.rst *.map *.mem *.lk *.lst *.sym *.ihx *.hex
make all
常用命令
选择目标平台
-mmcs51: 适用于MCS-51系列单片机,如8051。
-mpic16: 适用于PIC16系列单片机。
指定芯片型号
-p<model>: 指定目标芯片型号,例如 -p89 表示STC89系列单片机。
设置模型
--model-small: 选择小型模型,适用于资源受限的设备。
调整优化级别
-O0: 关闭优化。
-O1: 启用一般优化。
-O2: 启用更高级别的优化。
生成调试信息
--debug: 生成调试信息,方便调试程序。
指定输出文件名
-o <output>: 指定输出文件的名称。
选择内存布局
--xram-loc 0xXXXX: 指定XRAM区的起始地址。
--code-loc 0xXXXX: 指定代码区的起始地址。
设置堆栈大小
--stack-loc 0xXXXX: 指定堆栈区的起始地址。
--stack-size <size>: 指定堆栈的大小。
生成汇编文件
-S: 生成汇编文件而不进行编译。
指定头文件目录
-I<path>: 添加头文件搜索路径。
使用C89标准
--std-c89: 使用C89标准。
指定RAM区域大小
--xram-size <size>: 指定XRAM区的大小
标签:main,SDCC,--,指定,单片机,Mac,include,STC51
From: https://www.cnblogs.com/wufengsheng/p/17988256