适用对象:嵌入式初学者、电子爱好者、想摆脱 Keil 2KB 限制的 51 开发者
系统要求:Windows 10 / 11
目标:搭建一个 免费、开源、高效 的 8051 单片机开发环境,支持代码补全、一键编译、一键烧录
文章目录
为什么选择这个方案?
| 对比项 | Keil C51 | VSCode + SDCC |
|---|---|---|
| 费用 | 免费版限 2KB | 完全免费开源 |
| 跨平台 | 仅 Windows | Windows / Linux / macOS |
| 轻量 | 庞大 IDE | 轻量编辑器 + 命令行 |
| 学习价值 | 黑盒操作 | 理解编译、链接、烧录全过程 |
第一步:安装必备工具
1. 安装 SDCC(8051 编译器)
-
打开 SDCC 官网下载页
-
下载最新版 Windows 安装包(如
sdcc-4.3.0-setup.exe) -
安装时务必勾选 “Add SDCC to PATH”
-
验证安装:
sdcc --version packihx --version应显示版本号(如
SDCC 4.3.0)
2. 安装 VSCode
- 从 官网 下载并安装
- 安装 C/C++ 插件:
- 打开 VSCode → 左侧扩展(Extensions)
- 搜索 “C/C++” → 安装 Microsoft 官方插件
3. 安装 Python(用于烧录工具)
- 从 python.org 下载 Python 3.10+
- 安装时勾选 “Add Python to PATH”
- 验证:
python --version pip --version
4. 安装 stcgal(STC 芯片烧录工具)
在 PowerShell 中运行:
pip install stcgal
验证:
stcgal --version
如果提示权限错误,改用:
pip install --user stcgal然后将
%APPDATA%\Python\Python311\Scripts加入系统环境变量 PATH(根据你的 Python 版本调整)
5. 安装 USB 转串口驱动
- CH340 芯片(常见于 STC 下载板):
- CP2102 芯片:
- 驱动下载:Silabs 官网
安装后,插入 USB 转串口模块,在 设备管理器 → 端口 中应看到类似 “USB-SERIAL CH340 (COM3)”
第二步:创建项目结构
在任意位置(如 D:\8051-project)创建如下目录:
8051-project/
├── src/
│ └── main.c
├── Makefile
└── .vscode/
└── c_cpp_properties.json
第三步:编写示例代码(src/main.c)
#include <8051.h>
void delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 114; j++);
}
void main(void) {
P1 = 0x00; // 初始化 P1 口
while (1) {
P1 = ~P1; // 翻转 P1(LED 闪烁)
delay_ms(500);
}
}
使用
#include <8051.h>(SDCC 标准头文件),无需reg51.h
第四步:配置 VSCode 智能提示
创建 .vscode/c_cpp_properties.json:
{
"configurations": [
{
"name": "8051 (SDCC)",
"includePath": [
"${workspaceFolder}/**",
"C:/SDCC/share/include/mcs51",
"C:/SDCC/share/include"
],
"defines": [
"__SDCC__",
"__SDCC_mcs51",
"__sfr=volatile unsigned char",
"__sbit=volatile unsigned char",
"__at(x)=",
"__bit=volatile unsigned char"
],
"compilerPath": "C:/SDCC/bin/sdcc.exe",
"cStandard": "c99",
"intelliSenseMode": "windows-msvc-x86"
}
],
"version": 4
}
注意:
- 路径使用正斜杠
/(VSCode 支持)- 如果 SDCC 安装在其他位置,请修改路径
保存后,VSCode 应能正确识别 P1、__sfr 等 8051 特有语法。
第五步:编写 Makefile(一键编译 + 生成 HEX)
创建 Makefile(专为 Windows 优化):
TARGET = main
SRC_DIR = src
BUILD_DIR = build
CFLAGS = --model-small --opt-code-speed
.PHONY: all
all: $(BUILD_DIR)/$(TARGET).hex
# 编译 C 源码 → 生成 .ihx
$(BUILD_DIR)/$(TARGET).ihx: $(SRC_DIR)/$(TARGET).c
@if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)
@sdcc $(CFLAGS) -o $(BUILD_DIR)/$(TARGET).ihx $<
# 由 .ihx → 生成标准 .hex
$(BUILD_DIR)/$(TARGET).hex: $(BUILD_DIR)/$(TARGET).ihx
@packihx $< > $@
@echo 生成 $(BUILD_DIR)/$(TARGET).hex 成功!
# 烧录到 STC 单片机
flash: $(BUILD_DIR)/$(TARGET).ihx
@stcgal -P stc89 -p COM3 $<
# 清理构建文件
clean:
@if exist $(BUILD_DIR) rmdir /S /Q $(BUILD_DIR)
.PHONY: clean flash
重要:
- 将
COM3替换为你实际的串口号(在设备管理器中查看)- 支持的芯片型号:
stc89、stc12、stc15等(运行stcgal -L查看)
第六步:编译与烧录
1. 打开项目目录
在 VSCode 中打开 8051-project 文件夹。
2. 打开终端(Terminal → New Terminal)
确保终端是 PowerShell(不是 WSL 或 Git Bash)。
3. 编译项目(生成 .ihx + .hex)
make
你将得到:
build/main.ihx(SDCC 原生格式)build/main.hex(标准 Intel HEX 格式,通用烧录)
4. 烧录到单片机
make flash
烧录操作流程:
- 运行
make flash - 终端显示
Waiting for MCU... - 此时给单片机断电 → 再上电(触发 STC ISP 模式)
- 等待自动烧录完成(约 2~5 秒)
硬件连接:
- USB-TTL TX → 单片机 P3.0 (RXD)
- USB-TTL RX → 单片机 P3.1 (TXD)
- GND 接 GND
常见问题 FAQ
Q1:VSCode 报错 “P1 未定义”
- 检查
c_cpp_properties.json中路径是否为C:/SDCC/share/include/mcs51 - 确认文件存在:
C:\SDCC\share\include\mcs51\8051.h
Q2:make 命令不存在
- 安装 Chocolatey 后运行:
choco install make - 或使用 MSYS2(更完整工具链)
Q3:stcgal 报 “Permission denied” 或 “Port not found”
- 检查设备管理器中的 COM 端口号
- 修改 Makefile 中的
-p COM3为你的端口(如COM5)
Q4:烧录时一直 “Waiting for MCU…”
- 确保在看到提示后再给单片机上电
- 检查串口线是否接反(TX-RX 必须交叉)
- 尝试降低波特率:
stcgal -b 2400 ...
生成 HEX 文件的意义
.hex是 行业标准格式,兼容所有烧录工具- 即使不用
stcgal,也可用 STC-ISP 官方软件 烧录.hex - 方便分享、存档、版本管理
621

被折叠的 条评论
为什么被折叠?



