- 打卡等级:初来乍到
- 打卡总天数:4
- 最近打卡:2025-06-27 09:09:32
已绑定手机
注册会员
- 积分
- 104
|
很多例子和代码都是使用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
|
|