没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
keil 在 c 中调用 a51 汇编函数
今天一早起来,就想写个有 c 和 a51 程序的 project,但是编译总是出错,这可把我气坏了,因为我在
以前做 ucos 到 51 上的移植的时候,这可是必须 的一项技术,无论怎么整都没有进步,早饭都没有
吃,现在想想,大可不必这么生气,因为当时是在不需要关心这些细节的情况下做的移植,另外遇到困
难了,不应该生气,应该从头研究一下以前的东东,仔细分析,而不是毫无根据的乱改,好啦,总结一
下今天的成绩!
预备知识,在 c 语言中调用 a51 的函数,那么必须让写的函数得和 c51 编译的 c 函数一致的风格,也
就是由 c51 编译的 c 文件中的函数的目标代码中 跟函数定义相关的部分是什么样子,我们要写一个让 C
语言调用的汇编 a51 函数也得是个什么样,而这可以通过阅读《Cx51 Compiler User's Guide》-->
Advanced programming --> Segment Naming Conventions-->program objects, 可以了解到
如下三种对应关系:
c 函数定义
program objects
Void func (void) ?PR?FUNC?FILENAME
Void func1 (char x) ?PR?_FUNC1?FILENAME
Void func2 (void)
reentrant
?PR?_?FUNC2?FILENAME
但是,到现在我们还是没法写一个可以在 C 程序中调用的 a51 汇编函数,还需要结合《Cx51
Compiler User's Guide》--> Advanced programming --> Interfacing C to Assembler,这
样,我们就可以写个实际的例子了,在 uVision 中建立一个工程,在工程中添加 2 个文件:testc.c 和
testASM.a51 文件的内容分别是:
#include
<reg51.h>
extern void
cntDelay(void);
main()
{
int b;
b = 1000;
NAME TESTASM_A51
?PR?FUNCTION?
TESTASM_A51 SEGMENT
CODE
RSEG ?PR?FUNCTION?
TESTASM_A51
public cntDelay
cntDelay:
mov r0,#08h
ret
资源评论
- ylzhjy2013-03-24太复杂,杂能的这么麻烦
- henry04042013-07-07讲的挺详细,就是有点复杂了,还是要看编译器的。。
- foxconn123abc2013-09-14讲的挺详细,就是有点复杂了
zyhuei
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功