Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>51forSDCCNew to Visual Studio Code? Get it now.
51forSDCC

51forSDCC

x7890

|
1,348 installs
| (0) | Free
使用SDCC编译51(STC等)代码
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

51forSDCC By x7890

一个极简VSCode扩展,使用SDCC - Small Device C Compiler编译51(STC等)单片机代码。

功能介绍

  • 右键编译
    安装本扩展后,打开main()函数所在的.c文件,顶部的文件标签将多出使用SDCC编译右键菜单(快捷键为Ctrl+F9)。
    点击该菜单,本扩展会自动将编译器的输出放到build文件夹。 注意,编译的是当前激活的.c文件。
    若要清除编译结果,直接删除整个build文件夹即可。
    当控制台显示RAM分布,以及RAM与FLASH占用时,说明编译成功。

  • 语法转换
    在编辑器中点击右键菜单的Keil语法转SDCC,可以自动将所选内容的Keil的语法格式转为SDCC的语法格式。不能保证转换所有语法。

  • 汇编跳转
    当主程序文件编译成功后,在编辑器中点击右键菜单的转到汇编代码,可以查看对应.lst文件中带有地址和机器码的汇编代码。只支持主程序文件。
    若光标所在行的代码被优化,则会跳转到上一条有效代码。
    如果文件编码错误,可能会跳转失败。请用GBK编码重新打开.lst文件,并再试一次。

  • 特殊字符
    本扩展未主动储存绝对路径、文件名等信息,因此移动工程文件时无需考虑路径问题。文件名可含有空格或中文字符。
    由于SDCC使用GBK编码,请确保文件编码也使用GBK编码。若使用错误的编码打开,并进行了修改和保存,则产生的乱码可能无法恢复。

  • 未提供的功能
    本扩展不提供烧录功能,需要自行使用其他软件(如STC-ISP)烧录。
    本扩展不提供调试功能。
    本扩展每次编译所有文件,没有增量编译功能。由于单片机代码较短,只要不开启杀毒软件,耗时不会很长。

注意事项

  • 本扩展仅在Windows下测试,使用PowerShell作为终端宿主,单片机使用STC15W型号。

  • 需要自行安装SDCC编译器,并添加到PATH。

  • 需要安装C/C++扩展套件,并自行配置c_cpp_properties.json。推荐在C/C++: 编辑配置(UI)的默认配置基础添加以下内容:

    • 包含路径:添加C:\Program Files\SDCC\include
    • (预处理器)定义:添加以下内容(如有其他关键字,可自行添加)
      INTERRUPT(name, vector)=void name(void)
      INTERRUPT_USING(name, vector, regnum)=void name(void)
      NOP()=(void)(0)
      _nop_()=(void)(0)
      __asm__(...)=
      __naked=
      __reentrant=
      __bit=bool
      __data=
      __idata=
      __pdata=
      __xdata=
      __bdata=
      __code=
      
  • SDCC的__code、__data、__idata、__xdata、__bit等关键字以2个下划线开头。

  • SDCC不允许使用逗号将无返回值的函数连接成一个表达式。

  • SDCC的中断格式void fun(void) __interrupt 0 __using 1在VSCode中有警告,无法通过(预处理器)定义消除。因此,建议使用INTERRUPT_USING(fun, 0, 1)的通用格式开声明中断头部。

  • SDCC要求中断函数必须在main()函数所在文件(主程序文件)中实现。

  • 有时主程序代码较少,希望多个主程序共享同一份库,分别与库链接成一个hex文件,而不希望建立许多个包含库文件的工程。本扩展在链接时会排除当前活动文件以外的主程序(可通过主程序文件名配置),只需要每个主程序文件的文件名以main或test开头即可(如:main1.c、main_2.c、test.c)。

  • SDCC会保留.c文件中的所有函数,除非其中的所有函数均未被使用,这会导致代码占用空间增大。建议将功能不相关的函数分别放在多个.c文件中。

扩展设置

SDCC附加命令行参数

用于自定义SDCC的编译命令,详见SDCC Compiler User Guide 3.3节 Command Line Options。常用参数:

  • 代码优化:--opt-code-speed,--opt-code-size
  • 语言标准:--std-c11,--std-sdcc11
  • 默认变量位置:--model-small,--model-medium,--model-large

主程序文件名

一个正则表达式。如果一个文件的文件名匹配该正则表达式,该文件不会自动编译和链接,需要手动选择并编译,通常对应主程序。
默认匹配main开头和test开头的文件。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft