找回密码
 立即注册
查看: 2988|回复: 30

【四合一】分享一个可同时编译Keil C251\Keil C51\SDCC\IAR工程模板

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1919

回帖

4309

积分

荣誉版主

无情的代码机器

积分
4309
发表于 2024-12-1 23:18:21 | 显示全部楼层 |阅读模式
Keil C251(V5.38):
工程路径:KeilC251\Ai8051U-C251.uvproj
编译路径:KeilC251\list\Ai8051U-C251-output

Keil C51(V5.38):
工程路径:KeilC51\Ai8051U-C51.uvproj
编译路径:KeilC51\list\Ai8051U-C51-output

SDCC(V4.4):
工程路径:SDCC\Makefile
编译路径:SDCC\build

IAR(V10.10.1):
工程路径:IAR\Ai8051U.eww
编译路径:IAR\Debug\Exe

自动化脚本:
keilC251Rebuild.bat、iarRebuild.bat、keilC51Rebuild.bat、sdccRebuild.bat分别对应四个编译器的批量构建

=========================================================================================================


坛友提问的差异点也贴在这里:
①、8bit向32bit移植:
改工程配置
改头文件
改各种延时nop\delay,屏显,按键扫描等时序有要求的是重灾区(因为Ai8051U比89C52快太多了)
*有追求的可以改为库函数实现,SPI、I2C等外设升级为库函数语法

②32bit转KeilC51:
改工程配置(device,memory model)
改头文件
改库文件(用库函数的话)
改各种8bit LIB(MDU\FPU\CDC\HID)
改中断(超过32的用32之前闲置的中断号,isr.asm里汇编跳转)
改寄存器操作,不能bit操作的地址用位运算
long类型定义一定要加L,运算也要加L,例如:DWOR dwMemorySize = 32L*1024L;
8bit下16位变量操作非原子操作!

③32bit转SDCC:
(在C51修改完的基础上)
sfr sbit 中断等语法修改
bit操作~改!,否则类型自动升级结果不可预知
中断函数需要在main所在c文件中声明,否则无效
改大小端,keil大端,sdcc小端
函数体}后面不能跟;
没有math library (e.g. log())
putchar函数声明差异:int putchar(int c);
printf格式化差异,默认不支持float %f需要自己编译sdcc源码, keil的%bu %bd也不同。

④32bit转IAR:
(在C51修改完的基础上)
sfr sbit 中断等语法修改
改中断声明中中断号为地址
不能用指针变量指向const code变量。
putchar函数声明差异:int putchar(int c);

更多printf差异参阅:
printf函数 的 格式参数; USB接口 使用 printf 打印数据 - 串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16 国芯技术交流网站 - AI32位8051交流社区

暂时回想起这些,后面想到再补充。
一些工程实例:
【Ai8051U】擎天柱核心板学习记录贴

【Ai8051U】分享USB_CDC库 SDCC\IAR版
普中单片机学习板@89C52, 教学程序移植到强大的【Ai8051U】,32位8051,浮点/三角函数
学习官方Ai8051U实验箱 | 最强记录贴,Ai8051U-8Bit,Keil-C51, SDCC-51, IAR/C++

=========================================================================================================
V20241203更新:
添加C251工程,牺牲一部分sbit操作,位操作语法向C51看齐

prj-template-V20241203.zip (5.82 MB, 下载次数: 171)














1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:279
  • 最近打卡:2025-06-16 12:55:15

22

主题

282

回帖

1091

积分

金牌会员

积分
1091
发表于 2024-12-1 23:31:56 | 显示全部楼层
REMOVEUNUSED
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16647
发表于 2024-12-1 23:58:03 | 显示全部楼层
虽然不知道里面是如何的 鬼斧神工,但还是要点赞
{:5_300:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-06-15 22:44:24
已绑定手机

19

主题

3231

回帖

5281

积分

论坛元老

积分
5281
发表于 2024-12-2 05:39:17 来自手机 | 显示全部楼层
这个不错,一个能顶3啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-06-16 05:10:27
已绑定手机

17

主题

714

回帖

1241

积分

金牌会员

积分
1241
发表于 2024-12-2 07:27:13 | 显示全部楼层
{:5_332:}
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-12-2 07:49:10 | 显示全部楼层
3合1啊
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2025-06-12 08:44:23
已绑定手机

15

主题

628

回帖

822

积分

高级会员

积分
822
发表于 2024-12-2 08:38:44 | 显示全部楼层
谢谢分享 确实不错
STC 666 888
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1919

回帖

4309

积分

荣誉版主

无情的代码机器

积分
4309
发表于 2024-12-3 13:14:56 | 显示全部楼层
V20241203更新:
添加C251工程
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:342
  • 最近打卡:2025-06-16 08:01:58
已绑定手机

4

主题

397

回帖

1891

积分

金牌会员

积分
1891
发表于 2024-12-3 14:38:09 | 显示全部楼层
不用装几个软件了

点评

不不不,只是基础语法归一化,软件还是要装的  详情 回复 发表于 2024-12-3 14:39
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1919

回帖

4309

积分

荣誉版主

无情的代码机器

积分
4309
发表于 2024-12-3 14:39:02 | 显示全部楼层
haiya*** 发表于 2024-12-3 14:38
不用装几个软件了

不不不,只是基础语法归一化,软件还是要装的
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 19:50 , Processed in 0.233212 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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