Windows 上使用 VSCode + SDCC 开发 51 单片机完整教程

适用对象:嵌入式初学者、电子爱好者、想摆脱 Keil 2KB 限制的 51 开发者
系统要求:Windows 10 / 11
目标:搭建一个 免费、开源、高效 的 8051 单片机开发环境,支持代码补全、一键编译、一键烧录


为什么选择这个方案?

对比项Keil C51VSCode + SDCC
费用免费版限 2KB完全免费开源
跨平台仅 WindowsWindows / Linux / macOS
轻量庞大 IDE轻量编辑器 + 命令行
学习价值黑盒操作理解编译、链接、烧录全过程

第一步:安装必备工具

1. 安装 SDCC(8051 编译器)

  1. 打开 SDCC 官网下载页

  2. 下载最新版 Windows 安装包(如 sdcc-4.3.0-setup.exe

  3. 安装时务必勾选 “Add SDCC to PATH”

  4. 验证安装:

    sdcc --version
    packihx --version
    

    应显示版本号(如 SDCC 4.3.0


2. 安装 VSCode

  1. 官网 下载并安装
  2. 安装 C/C++ 插件
    • 打开 VSCode → 左侧扩展(Extensions)
    • 搜索 “C/C++” → 安装 Microsoft 官方插件

3. 安装 Python(用于烧录工具)

  1. python.org 下载 Python 3.10+
  2. 安装时勾选 “Add Python to PATH”
  3. 验证:
    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 转串口驱动

安装后,插入 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 替换为你实际的串口号(在设备管理器中查看)
  • 支持的芯片型号:stc89stc12stc15 等(运行 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

烧录操作流程

  1. 运行 make flash
  2. 终端显示 Waiting for MCU...
  3. 此时给单片机断电 → 再上电(触发 STC ISP 模式)
  4. 等待自动烧录完成(约 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
  • 方便分享、存档、版本管理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值