CHIP-PHILO-GH/dsh-mcu-lab ↗★ 0

dsh-mcu-lab

DSH 插件:把 51 单片机的 Keil C51 编译、Proteus 仿真与确定性判定接进 AI 会话(5 个工具 + 命令行内核) 适合需要在AI会话中进行Keil C51编译和Proteus仿真的用户。

패키지
dsh-mcu-lab
호환성
미검증
Harness peer 범위
*
버전
0.1.0
라이선스
MIT
최근 업데이트
2026. 9. 15.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CHIP-PHILO-GH/dsh-mcu-lab

配置

插件侧:两个环境变量

环境变量作用默认值
DSH_MCU_LAB_CLI内核脚本 mcu_lab.py 的路径/kernel/mcu_lab.py(按插件文件位置推算)
DSH_MCU_LAB_PYTHONPython 解释器的路径Windows 用 python,其他平台用 python3(即按 PATH 查找)

找不到内核或找不到解释器时,工具会返回一条说明「该设哪个环境变量」的错误,而不是空手失败。

内核侧:路径全部可用环境变量覆盖

内核以及它调用的接口脚本,路径都不写死在代码里,按下表覆盖;不设就用默认值。

环境变量作用默认值
DSH_MCU_LAB_IFACE接口脚本目录(build51.py / proteus_ctl.py / verify.py)仓库自带:kernel/iface/
DSH_MCU_LAB_KEILC51.exe 的路径(check 体检用)\C51\BIN\C51.exe
DSH_MCU_LAB_ISISISIS.EXE 的路径(体检与仿真控制用)`
\BIN\ISIS.EXE`
DSH_MCU_LAB_DSN_INDEXdsn_index.json 的路径(只有 mcu_list 用)空——本仓库不附带电路索引
DSH_MCU_LAB_KEIL_DIRKeil 安装根目录(接口脚本 build51.py 用)``
DSH_MCU_LAB_PROTEUS_TEMPProteus 仿真临时目录`
`
DSH_MCU_LAB_SDCC_BINSDCC 工具链目录(只在用 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 语法改写;未逐项验证。