Keil中C与汇编混合编程的方法Word下载.docx

上传人:b****2 文档编号:5765407 上传时间:2023-05-05 格式:DOCX 页数:13 大小:20.35KB
下载 相关 举报
Keil中C与汇编混合编程的方法Word下载.docx_第1页
第1页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第2页
第2页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第3页
第3页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第4页
第4页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第5页
第5页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第6页
第6页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第7页
第7页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第8页
第8页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第9页
第9页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第10页
第10页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第11页
第11页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第12页
第12页 / 共13页
Keil中C与汇编混合编程的方法Word下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Keil中C与汇编混合编程的方法Word下载.docx

《Keil中C与汇编混合编程的方法Word下载.docx》由会员分享,可在线阅读,更多相关《Keil中C与汇编混合编程的方法Word下载.docx(13页珍藏版)》请在冰点文库上搜索。

Keil中C与汇编混合编程的方法Word下载.docx

#defineuintunsignedint

externuintAFUNC(ucharv_achr,bitv_bflag);

voidmain()

{

 

bitBFLAG;

ucharmav_chr;

uint 

mvintrslt;

mav_chr=0xd4;

BFLAG=1;

mvintrslt=AFUNC(mav_chr,BFLAG);

}

//CFUNC.c文件

uintAFUNC(ucharv_achr,bitv_bflag)

uchartmp_vchr;

tp_vint;

tmp_vchr=v_achr;

tp_vint=(uint)v_bflag;

returntmp_vchr+(tp_vint<

<

8);

step2.在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRC

File”和“AssembleSRCFile”,使检查框由灰色变成黑色(有效)状态;

step3.根据选择的编译模式,把相应的库文件(如Small模式时,是Keil\C51\Lib\C51S.Lib)加入工程中,该文件必须作为工

程的最后文件;

step4.build这个工程后将会产生一个CFUNC.SRC的文件,将这个文件改名为CFUNC.A51(也可以通过编译选项直接产生CFUNC.A51文

件),然后在工程里去掉库文件(如C51S.Lib)和CFUNC.c,而将CFUNC.A51添加到工程里。

//CFUNC.SRC文件如下

.\CFUNC.SRCgeneratedfrom:

CFUNC.c

NAMECFUNC

?

PR?

_AFUNC?

CFUNC 

SEGMENTCODE

BI?

SEGMENTBITOVERLAYABLE

PUBLIC 

?

BIT

_AFUNC

RSEG 

CFUNC

BIT:

v_bflag?

041:

DBIT 

1

;

#defineucharunsignedchar

#defineuintunsignedint

uintAFUNC(ucharv_achr,bitv_bflag)

_AFUNC:

USING 

0

;

SOURCELINE#5

----Variable'

v_achr?

040'

assignedtoRegister'

R7'

----

{

SOURCELINE#6

SOURCELINE#10

tmp_vchr?

042'

R5'

MOV 

R5,AR7

SOURCELINE#11

C,v_bflag?

041

CLR 

A

RLC 

tp_vint?

043'

R6/R7'

SOURCELINE#12

R6,A

R4,#00H

ADD 

A,R5

R7,A

A,R4

ADDC 

A,R6

}

SOURCELINE#13

C0001:

RET

ENDOF_AFUNC

END

step5.检查main.c的“GenerateAssemblerSRCFile”和“AssembleSRCFile”是否有效,若是有效则点击使检查框变成无效状

态;

再次build这个工程,到此你已经得到汇编函数的主体,修改函数里面的汇编代码就得到你所需的汇编函数了。

参考文献:

1.徐爱钧,彭秀华。

单片机高级语言C51windows环境编程与应用,电子工业出版社

 

C51编程:

关于在KEILC51中直接嵌入汇编。

帖子编号:

83838发表用户:

Youth

.................................................................................................................

keil中汇编函数调用c51函数[ycong_kuang]

在keil的写法可参考89852帖子,具体如下:

与89852帖子相比,第一步在工程里多了一个被汇编调用的c51的函数文件(c51func.c),至于汇编函数还是先用c51编写出主体

(a51func.c),这样汇编程序接口和段都交给编译器处理,你只管在编译成汇编代码后按你的要求改写汇编代码就行了。

例程如下:

//main.c

//a51FUNC.c

externuintCFUNC(uint);

uintAFUNC(ucharv_achr,bitv_bflag) 

//c51写的汇编函数,最终要变成汇编代码

returnCFUNC(tp_vint);

//这里调用一个c51函数

//c51FUNC.c

uintCFUNC(uintv_int) 

//被汇编函数调用c51函数

returnv_int<

2;

第二步是按89852帖子的step2,3,4把用c51写的(汇编)函数变成a51文件(今天我试了一下step3可以不要)例程编译结果如

下:

.\a51func.SRCgeneratedfrom:

a51func.c

NAME 

A51FUNC

A51FUNC 

DT?

SEGMENTDATAOVERLAYABLE

EXTRN 

CODE(_CFUNC)

A51FUNC

BYTE:

tmp_vchr?

042:

DS 

//a51FUNC.c

externuintCFUNC(uint);

c51所写的函数产生的汇编代码从这里开始

SOURCELINE#8

SOURCELINE#9

042,R7

SOURCELINE#14

这里说明R6,R7内容就是tp_vint

SOURCELINE#16

LCALL 

_CFUNC 

这里调用了用c51写的函数

SOURCELINE#17

这个文件就是你的汇编函数所在文件,把函数里面的汇编代码修改成你所需的汇编函数就ok了。

建议参考徐爱钧,彭秀华所写的《单片机高级语言C51windows环境编程与应用》或马忠梅所写的

《单片机的c语言应用程序设计》有关混合语言编程有关章节

关于在KEILC51中直接嵌入汇编。

[Youth]

有时在C51程序中需要嵌入一些汇编代码,这时当然可以用通常的作法:

按照C51与汇编的接口写一个汇编函数,然后在C51程序中调用该函数。

(此种方法可在论坛里搜索,以前有很多帖子讲到,不再

重复)

下面介绍直接嵌入汇编代码的方法:

1、在C文件中要嵌入汇编代码片以如下方式加入汇编代码:

#pragmaASM

AssemblerCodeHere

#pragmaENDASM

2、在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRCFile”

和“AssembleSRCFile”,使检查框由灰色变成黑色(有效)状态;

3、根据选择的编译模式,把相应的库文件(如Small模式时,是Keil\C51\Lib\C51S.Lib)加入工程中,该文件必须作为工程的最

后文件;

4、编译,即可生成目标代码。

如何在KEILC51(v6.21)中调用汇编函数的一个示例[ycong_kuang]

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2