找回密码
 立即注册
查看: 72|回复: 2

分享我写的keil工程自动转sdcc工程的工具

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

2

主题

25

回帖

104

积分

注册会员

积分
104
发表于 2025-7-17 19:22:27 | 显示全部楼层 |阅读模式
很多例子和代码都是使用keil写的,而且很多源代码都不是utf8编码的,打开直接乱码,也手动转过一些,多了就烦了,这里把转换逻辑写了一个工具,方便自己,方便大家。

源代码在 https://github.com/aerror2/keil51_to_sdcc

功能特性
🔄 语法转换
SFR 声明转换: sfr P0 = 0x80; → __sfr __at(0x80) P0;
SBIT 声明转换: sbit P00 = P0^0; → __sbit __at(0x80) P00;
XDATA 声明转换: *(unsigned char volatile xdata *) → *(volatile __xdata unsigned char *)
中断函数转换: void func() interrupt 1 → void func() __interrupt(1)
位类型转换: bit → __bit
NOP 指令转换: _nop_() → __asm NOP __endasm
🧠 智能寄存器地址解析
自动从源文件中提取寄存器地址定义
支持扫描包含的头文件以获取完整的寄存器映射
内置常用 8051 寄存器地址作为后备
动态计算位地址 (基址 + 位偏移)
📝 代码增强
自动添加 SDCC 兼容的头文件
增强中文注释,添加英文翻译
处理 NOP 宏定义中的逗号操作符
提供详细的转换统计信息
📁 批量处理和项目管理
批量转换: 支持整个目录及子目录的递归转换
Keil 项目解析: 自动解析 .Uv2/.uvproj/.uvprojx 项目文件
Makefile 生成: 为每个项目生成 SDCC 兼容的 Makefile
多项目支持: 为包含多个项目的目录生成独立的 Makefile
智能路径处理: 自动调整源文件的相对路径
🔤 编码转换和处理
多编码支持: 自动检测和转换 UTF-8、GBK、GB2312、GB18030 等编码
编码预处理: 批量将项目文件转换为 UTF-8 编码
智能编码检测: 使用 chardet 库进行高精度编码识别
备份保护: 转换前自动创建原文件备份
🛡️ 错误处理
支持多种文件编码 (UTF-8, GBK, GB2312, GB18030)
完善的异常处理和错误报告
输入文件验证
转换结果验证
安装要求
Python 3.6+
chardet (用于文件编码检测)



原文链接:https://blog.csdn.net/aerror/article/details/149248911

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:544
  • 最近打卡:2025-07-30 09:44:50
已绑定手机

29

主题

356

回帖

2231

积分

金牌会员

机长

积分
2231
发表于 2025-7-18 16:48:15 | 显示全部楼层
有没有兴趣在gitee上搞个镜像?
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:252
  • 最近打卡:2025-07-30 08:55:29
已绑定手机

78

主题

2286

回帖

5206

积分

荣誉版主

无情的代码机器

积分
5206
发表于 2025-7-18 18:20:55 | 显示全部楼层
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-7-31 06:53 , Processed in 0.117253 second(s), 63 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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