找回密码
 立即注册
查看: 990|回复: 8

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

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2024-08-08 21:16:41

5

主题

14

回帖

28

积分

新手上路

积分
28
发表于 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 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2024-08-08 21:16:41

5

主题

14

回帖

28

积分

新手上路

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

使用道具 举报 送花

5

主题

12

回帖

95

积分

注册会员

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-24 23:46:14

1

主题

5

回帖

58

积分

注册会员

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

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



回复 支持 反对

使用道具 举报 送花

5

主题

12

回帖

95

积分

注册会员

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-24 23:46:14

1

主题

5

回帖

58

积分

注册会员

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

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

回复 支持 反对

使用道具 举报 送花

5

主题

12

回帖

95

积分

注册会员

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

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-04-24 23:46:14

1

主题

5

回帖

58

积分

注册会员

积分
58
发表于 2024-5-5 16:39:40 | 显示全部楼层

你发我吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2024-11-13 08:30:44

2

主题

16

回帖

132

积分

注册会员

积分
132
发表于 2024-5-11 14:02:29 | 显示全部楼层
非常实用这样是不是用ipad也能写STC项目的代码了?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 22:24 , Processed in 0.155701 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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