keil下,很短的子程序优化

[复制链接]
15125|9
 楼主| ee168 发表于 2021-9-24 13:43 | 显示全部楼层 |阅读模式
C51的

在外设函数中
void ppp(void)
{
  P00 = 1;
}

主函数中

ppp();

从调试的汇编指令来看,程序确实调用了子函数,有没有什么编译处理,直接处理成P00 = 1
放主函数中?我不想主函数还调用 芯片.h 函数,这样可以模块化
有什么好办法吗?
hbzjt2011 发表于 2021-9-24 15:04 | 显示全部楼层
直接用#define宏指令实现可以试试
 楼主| ee168 发表于 2021-9-24 17:31 | 显示全部楼层
谢谢回答
想程序模块化,主程序中不想包含 8051.h 函数,只想其其调用 peripher.h的调用来实现,将#define放在peripher.h,主程序编译时一样会提示 P00 没有定义
coody 发表于 2021-9-24 18:39 | 显示全部楼层
8051.h是头文件,这么会有函数?
ErrorGz 发表于 2021-9-25 00:27 | 显示全部楼层
考虑一下 inline void ppp(void)
 楼主| ee168 发表于 2021-9-25 10:22 | 显示全部楼层
我看了一些知名的公司的例程,也是采用函数的方式调用.编译器不能处理一下,这么短小,又没有参量和输出的函数不能直接编译吗.

头文件中可以放置函数声明调用,peripher.h可以放置函数声明,但是放入#define引用P00的话,势必其将引用8051.h,这样主函数也会引入8051.h,不想这样
zchong 发表于 2021-9-25 13:44 | 显示全部楼层
内联函数,inline关键字
 楼主| ee168 发表于 2021-9-26 08:19 | 显示全部楼层
谢谢楼上的,对inline一直没有注意,重新看了一下其功能,应该是这个

刚对keil C51添加,但是居然报错,一定要将语音弄到C++吗,我再试一试
 楼主| ee168 发表于 2021-9-26 11:52 | 显示全部楼层
Keil C51 不支持
bangbangji 发表于 2021-10-3 02:07 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

201

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部