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

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


文章目录

    • 为什么选择这个方案?
    • 第一步:安装必备工具
      • [1. 安装 SDCC(8051 编译器)](#1. 安装 SDCC(8051 编译器))
      • [2. 安装 VSCode](#2. 安装 VSCode)
      • [3. 安装 Python(用于烧录工具)](#3. 安装 Python(用于烧录工具))
      • [4. 安装 stcgal(STC 芯片烧录工具)](#4. 安装 stcgal(STC 芯片烧录工具))
      • [5. 安装 USB 转串口驱动](#5. 安装 USB 转串口驱动)
    • 第二步:创建项目结构
    • 第三步:编写示例代码(`src/main.c`)
    • [第四步:配置 VSCode 智能提示](#第四步:配置 VSCode 智能提示)
    • [第五步:编写 Makefile(一键编译 + 生成 HEX)](#第五步:编写 Makefile(一键编译 + 生成 HEX))
    • 第六步:编译与烧录
      • [1. 打开项目目录](#1. 打开项目目录)
      • [2. 打开终端(Terminal → New Terminal)](#2. 打开终端(Terminal → New Terminal))
      • [3. 编译项目(生成 .ihx + .hex)](#3. 编译项目(生成 .ihx + .hex))
      • [4. 烧录到单片机](#4. 烧录到单片机)
    • [常见问题 FAQ](#常见问题 FAQ)
      • [Q1:VSCode 报错 "P1 未定义"](#Q1:VSCode 报错 “P1 未定义”)
      • [Q2:`make` 命令不存在](#Q2:make 命令不存在)
      • [Q3:stcgal 报 "Permission denied" 或 "Port not found"](#Q3:stcgal 报 “Permission denied” 或 “Port not found”)
      • [Q4:烧录时一直 "Waiting for MCU..."](#Q4:烧录时一直 “Waiting for MCU...”)
    • [生成 HEX 文件的意义](#生成 HEX 文件的意义)

为什么选择这个方案?

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

第一步:安装必备工具

1. 安装 SDCC(8051 编译器)

  1. 打开 SDCC 官网下载页

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

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

  4. 验证安装:

    powershell 复制代码
    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. 验证:

    powershell 复制代码
    python --version
    pip --version

4. 安装 stcgal(STC 芯片烧录工具)

PowerShell 中运行:

powershell 复制代码
pip install stcgal

验证:

powershell 复制代码
stcgal --version

如果提示权限错误,改用:

powershell 复制代码
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

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

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 优化):

makefile 复制代码
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)

powershell 复制代码
make

你将得到:

  • build/main.ihx(SDCC 原生格式)
  • build/main.hex(标准 Intel HEX 格式,通用烧录)

4. 烧录到单片机

powershell 复制代码
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 后运行:

    powershell 复制代码
    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
  • 方便分享、存档、版本管理
相关推荐
逍遥_xiaoyao2 小时前
Vscode 配置教程
ide·vscode·编辑器
大聪明-PLUS2 小时前
深入 initrd
linux·嵌入式·arm·smarc
差点GDP2 小时前
新版VSCODE无法远程连接Linux服务器
vscode
wabil2 小时前
VSCode远程调试Linux的GUI程序
linux·ide·vscode
搁浅小泽2 小时前
什么是退磁电流?
stm32·单片机·嵌入式硬件
d111111111d6 小时前
STM32 GPIO输出模式配置详解:从寄存器层面理解引脚控制
笔记·stm32·单片机·嵌入式硬件·学习
xingzhemengyou16 小时前
STM32 ADC
stm32·单片机
QK_006 小时前
STM32--编码器测速
stm32·单片机·嵌入式硬件
bu_shuo6 小时前
STM32 X-CUBE-MCSDK软件安装
stm32·单片机·嵌入式硬件