找回密码
 立即注册
查看: 190|回复: 7

分享一个免插件的VSCode开发sdcc-51方法

[复制链接]
  • TA的每日心情
    慵懒
    2024-4-13 22:07
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    5

    主题

    16

    回帖

    25

    积分

    新手上路

    积分
    25
    发表于 2024-4-6 08:56:30 | 显示全部楼层 |阅读模式
    默认情况下vscode并不能支持sdcc的扩展语法,但是可以配置简单忽略这些对语义没有影响的扩展关键词。

    在打开的目录下新建: .vscode/c_cpp_properties.json
    1. {
    2.     "configurations": [
    3.         {
    4.             "name": "sdcc",
    5.             "compilerPath": "/usr/bin/sdcc",
    6.             "intelliSenseMode": "linux-gcc-x64",
    7.             "cStandard": "c23",
    8.             "cppStandard": "gnu++17",
    9.             "defines": [
    10.                 "__sfr=unsigned char",
    11.                 "__sbit=int",
    12.                 "__at(a)= ",
    13.                 "__data= ",
    14.                 "__xdata= ",
    15.                 "__interrupt n= ",
    16.                 "__using= "
    17.             ]
    18.         }
    19.     ],
    20.     "version": 4
    21. }
    复制代码
    这样默认的C/C++插件就不会报错了。

    假定目录结构:
    -/

    -bin
    -src
    -inc
    入口在src/main.c

    简单编写一个makefile:
    1. # Makefile template for stc8h projects using SDCC
    2. # Compiler and linker flags
    3. CFLAGS = -mmcs51 --std-sdcc2x --model-large --opt-code-speed \
    4.                  --code-size 0xffff --xram-size 0x2000
    5. # Define the compiler and the linker
    6. # CC = sdcc
    7. CC := $(if $(shell echo $$SDCC_PATH),$(shell echo $$SDCC_PATH),sdcc)
    8. # Define the project directories
    9. SRCDIR = src
    10. INCDIR = inc
    11. BINDIR = bin
    12. # Define the target name
    13. TARGET = $(BINDIR)/main.ihx
    14. ENTRY = main.c
    15. # Define the C source and header files
    16. SRC := $(filter-out $(SRCDIR)/$(ENTRY), $(wildcard $(SRCDIR)/*.c))
    17. OBJ = $(SRC:$(SRCDIR)/%.c=$(BINDIR)/%.rel)
    18. INC = -I$(INCDIR)
    19. # Define the phony targets
    20. .PHONY: all clean
    21. # Default target
    22. all: $(TARGET)
    23. # Link the object files into the final binary
    24. $(TARGET): $(OBJ) $(SRCDIR)/$(ENTRY)
    25.         $(CC) $(CFLAGS) $(INC) -o $(TARGET) $^
    26.         @cat $(BINDIR)/main.mem
    27. # Compile the source files into object files
    28. $(BINDIR)/%.rel: $(SRCDIR)/%.c
    29.         @mkdir -p $(@D)
    30.         $(CC) $(CFLAGS) $(INC) -c $< -o $@
    31. # Clean up the build files
    32. clean:
    33.         rm -f ./$(BINDIR)/*
    复制代码


    用 make clean && make 就能完成大部分开发了。



    2 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-13 22:07
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    5

    主题

    16

    回帖

    25

    积分

    新手上路

    积分
    25
     楼主| 发表于 2024-4-6 08:58:42 | 显示全部楼层
    可能缺少一些功能,但是这样配置所有vscode都能正常编辑/编译工程代码,可以在分享工程时避免一些兼容问题。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    12

    回帖

    86

    积分

    注册会员

    积分
    86
    发表于 2024-4-27 22:47:13 来自手机 | 显示全部楼层
    有sdcc的stc8h的库吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-24 23:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2024-4-28 10:30:47 | 显示全部楼层
    aorey@126.com 发表于 2024-4-27 22:47
    有sdcc的stc8h的库吗?

    有的,这两个都可以
    stc8h.h (46.42 KB, 下载次数: 3)
    stc8h.h.bak (121.13 KB, 下载次数: 1)



    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    12

    回帖

    86

    积分

    注册会员

    积分
    86
    发表于 2024-4-28 10:53:56 | 显示全部楼层
    oldcat 发表于 2024-4-28 10:30
    有的,这两个都可以

    用这个头文件跑官方的函数库和示例不成功.
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-24 23:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2024-4-29 23:24:47 | 显示全部楼层
    aorey@126.com 发表于 2024-4-28 10:53
    用这个头文件跑官方的函数库和示例不成功.

    我用的就是这俩,都可以成功运行,你用是有报错还是?
    xmake_c51.bin (944 Bytes, 下载次数: 2)
    这个是串口1打印芯片id的,你试试

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    12

    回帖

    86

    积分

    注册会员

    积分
    86
    发表于 2024-4-30 13:13:35 | 显示全部楼层
    oldcat 发表于 2024-4-29 23:24
    我用的就是这俩,都可以成功运行,你用是有报错还是?

    这个是串口1打印芯片id的,你试试

    方便加v吗 ?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-24 23:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 4 天前 | 显示全部楼层

    你发我吧
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-9 23:51 , Processed in 0.079072 second(s), 59 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表