keilc51如何在c函数中嵌入汇编并使用传递过来的参数?
keilc51如何在c函数中嵌入汇编并使用传递过来的参数? 你不是都知道是r7了 你不是都知道是r7了 以前有介绍,单字节R7传递,双字节R6R7一起来 本帖最后由 kap 于 2019-9-7 10:54 编辑编译提示参数Data没用到,实际运行是错的 本帖最后由 kap 于 2019-9-7 14:17 编辑
自己摸索着搞定了,用汇编最简洁、速度最快
还是自己写个汇编文件吧,小量参数从R7-R0,顺序按照字节分,可以选写个C代码并生成汇编文件,修改就可以了; 玩了好多年汇编,还不知道可以这样玩 既然都C代码中使用了ACC特殊符号了,就应该是可以完全按照汇编的写法写,实际上就是ACC移位和C位赋值到IO口这两句话,不太记得了是不是c语言是可以直接操作的,如果可以的话也就和汇编完全一样了,这样就省去了使用汇编限定宏的操作,全部都是c代码 本着助人为乐以及温故知新的态度,刚才专门去复习了一下十来年没摸过的51了,发现果然比我说的还简单100倍:)。 其实你只需要一句话就完成了你的汇编: 就是 : sda=ACC&0x80; 这句话就完全是汇编代码的环移和进位位赋值到sda脚这两句汇编代码,一样一样的,不信你马上试下,神奇吧:) 看过STC的例程代码,用C直接操作ACC累加器 楼主的要求是函数体内汇编,也是可以实现的。常见的是定义汇编函数,用c调用。用c调用的话,直接编个demo函数,仿真看汇编,任何单片机的程序都可以依样画葫芦出来的。 1a2b3c 发表于 2019-9-9 23:21
本着助人为乐以及温故知新的态度,刚才专门去复习了一下十来年没摸过的51了,发现果然比我说的还简单100倍: ...
还真是的,我就是想要这种效果,又省去汇编限定宏操作,非常非常感谢{:handshake:}
kap 发表于 2019-9-10 09:17
还真是的,我就是想要这种效果,又省去汇编限定宏操作,非常非常感谢
...
其实吧,简单的东西要去深究还真可以有好多潜力可挖:) 上面那个代码其实我自己之前都没有整明白过,以前老是想着移位肯定是要有个ACC《1 的专门移位操作,这样菜相当于汇编的RLC ,但是才注意keil的这个感觉是进行了专门优化或者约定的处理:即是只要看到是ACC&0x80,就编译为RLC A,看到ACC&0x01就编译为RRC A 这点一般确实正常不好理解
1a2b3c 发表于 2019-9-10 18:58
其实吧,简单的东西要去深究还真可以有好多潜力可挖:) 上面那个代码其实我自己之前都没有整明白过,以 ...
是的,很多东西要深入才能体会到其中的技巧。 我安装KEIL5时出现了这个,是什么意思呀,我现在把它关掉了,桌面上有5的图标,可以正常用吗QQ图片20200119202416
页:
[1]