CHIP-PHILO-GH/dsh-mcu-lab ↗★ 0
dsh-mcu-lab
DSH 插件:把 51 单片机的 Keil C51 编译、Proteus 仿真与确定性判定接进 AI 会话(5 个工具 + 命令行内核) 适合需要在AI会话中进行Keil C51编译和Proteus仿真的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CHIP-PHILO-GH/dsh-mcu-labREADME
Read the full README ↗配置
插件侧:两个环境变量
| 环境变量 | 作用 | 默认值 |
|---|---|---|
DSH_MCU_LAB_CLI | 内核脚本 mcu_lab.py 的路径 | /kernel/mcu_lab.py(按插件文件位置推算) |
DSH_MCU_LAB_PYTHON | Python 解释器的路径 | Windows 用 python,其他平台用 python3(即按 PATH 查找) |
找不到内核或找不到解释器时,工具会返回一条说明「该设哪个环境变量」的错误,而不是空手失败。
内核侧:路径全部可用环境变量覆盖
内核以及它调用的接口脚本,路径都不写死在代码里,按下表覆盖;不设就用默认值。
| 环境变量 | 作用 | 默认值 |
|---|---|---|
DSH_MCU_LAB_IFACE | 接口脚本目录(build51.py / proteus_ctl.py / verify.py) | 仓库自带:kernel/iface/ |
DSH_MCU_LAB_KEIL | C51.exe 的路径(check 体检用) | \C51\BIN\C51.exe |
DSH_MCU_LAB_ISIS | ISIS.EXE 的路径(体检与仿真控制用) | ` |
| \BIN\ISIS.EXE` | ||
DSH_MCU_LAB_DSN_INDEX | dsn_index.json 的路径(只有 mcu_list 用) | 空——本仓库不附带电路索引 |
DSH_MCU_LAB_KEIL_DIR | Keil 安装根目录(接口脚本 build51.py 用) | `` |
DSH_MCU_LAB_PROTEUS_TEMP | Proteus 仿真临时目录 | ` |
| ` | ||
DSH_MCU_LAB_SDCC_BIN | SDCC 工具链目录(只在用 sdcc51.py 时) | `` |
、` `、 是这三款软件的常见默认安装位置,不是作者的个人信息;
装在别处就设上面对应的变量。先跑一次体检:
python kernel/mcu_lab.py check
它会逐项报告每个前置条件是否就位。dsn_index.json 是可选件:它只服务 mcu_list,
索引的是各人自备的电路文件,因此缺失不会让体检失败,只会单独列在 optional 字段里。
没有 Keil 也能编译:SDCC 路线
仓库自带的 kernel/iface/sdcc51.py 用 SDCC(免费开源编译器)替代 Keil:
python kernel/iface/sdcc51.py your.c # .c -> .hex(Intel HEX,Proteus 可直接加载)
需要可从 PATH 调用的 SDCC(或设 DSH_MCU_LAB_SDCC_BIN 指向安装目录;本机实测为 SDCC 4.6.0)。
仿真与判定仍需 Proteus,但"编译出 hex"这一段不再依赖付费的 Keil。
⚠️ 这条路线只对「标准 C + SDCC 认可的扩展」成立,Keil 专有关键字要自己改:
sdcc-inc/reg52.h 这个 shim 只负责把 #include 转发到 SDCC 的 8052.h,
仓库自带的 examples/led_blink.c 已用 #if defined(__SDCC) 兼容 SDCC 的 __sbit 扩展。
sdcc51.py 会优先使用 PATH 中的 sdcc,也可用 DSH_MCU_LAB_SDCC_BIN 指定目录。
mcu_build / mcu_run 的 --compiler auto 会优先 Keil,Keil 不可用时自动回退 SDCC。
python kernel/iface/sdcc51.py examples\led_blink.c
:: 预期:SDCC 结果: errors=0 ... hex=...\led_blink.hex
其他 Keil 专有语法(例如 interrupt、_at_)仍需按 SDCC 语法改写;未逐项验证。