KEIL C51中嵌套汇编教程

所需积分/C币:25 2012-05-23 14:07:56 64KB PDF
收藏 收藏
举报

KEIL C51中嵌套汇编教程,能让你的程序更有效率,对单片机了解更深
程的最后文件 step4.buil这个工科后将会产生一个 CFUNC.SRC的文件,将这个文件改名为 CFUNC.A51(也可以通过编译选项直接产牛 CFUNG.A51 文 件),然后在工程里去掉库文件(如C51S.Lib)和 CFUNO.c,而将 CFLNO.A51添加到工程里。 /CFUNO.SRC文件如下 CFUNC. SRC generated from: CFUNC C NAME CFUNC ?PR? AFUNCOCFUNC SEGMENT CODE ?BI? AFUNC?CFUNC SEGMENT BIT OVERLAYABLE PUBLIC AFUNCYBIT PUBLIC AFUNC RSEG BI AFUNCTCEUNG AFUNC?BIT v blag?041: DBIT 1 Define uchar unsigned char Define uint unsigned int uint AFUNC (uchar y achr, bit y flag RSEG QPR? AFUNC?CFUNC AFUNC USING 0 SOURCE LINE #t 5 Variable v achr?0410 assigned to Register R7 SOURCE LINE 6 char ti Int tmp vch ICE LINE 10 Variable tmp vchr?042 assigned to Register R5 R5. AR7 SOURCE LINE 11 C v bfls CLR RLO Variable tp vint?043" assigned to Register R6/R7 SOURCE LINE #t 12 MOV R6. A MOV R4,#00H CLR A R3 MOV R7. A MOV ADDC MOV R6.A SOURCE LINE #13 ?C0001 END OF AFUNC END step5.检查main.c的“ Generate assembler src file”和“ Assemble src file”是否有效,若是有效则点击使检合枉变成无效状 态:冉次 build这^工程,到此你已经得到汇编函数的主体,修改函数里面的汇编代码就得到你所需的汇编函数了。 参考文献 1.徐爱钧,彭秀华。单片机高级语言C5 windows环境编程与应用,电子工业出版社 2.www.c5lbs.con,C5l编程:关于在ELC51中直接嵌入汇编。。。帖子编号:83838发表用户:Youth keil中汇编函数调用c51函数 在kei的写法可参考89852帖子,具体如下: 与89852帖子相比,第一步在工程里多了一个被汇编调用的c5l的函数文件(c51func.c),至于汇编函数还是先用c51编写出主体 (a5 func.s),这样汇编程序接口和段都交给编译器处理,你只管在编译成汇编代码后按你的要求改写汇编代码就行了。 例程如下: ldll. C include reg51.h> +define uchar unsigned char #define uint unsigned int stern uint AFUNC ( uchar v achr, bity flag) d maino bit bLag uchar may chr uint mvintrsl t may chr=0xd4: BFLaG=1 mvintrslt=AFUNC(may chr, BFLAG //a5IFUNC C define uchar unsigned char define uint unsigned int extern uint CFUNC uint Juint AFUNC (uchar v achr, bit v flag) c51写的汇编函数,最终要变成汇编代 uchar tmp vcr uint tp vint tmp vcr=v achr tp vint=(uint)v flag return CFUNC (tp vint) 这生调用个c51函数 //c51FUNC c define uchar uni gned char #define uint unsigned int uint CFUNC (uint v int) //被汇编函数调用c51函数 return v int<<2 第二步是按89852帖子的step2,3,4把用c51写的(汇编)函数变成:51文件(今天我试了一下5B3可以不要)例程编译结果如 \a51func SRC generated from: a51func c NAME A51FUNC ?PR? AFUNC?A51FUNC SEGMENT CODE PDT? AFUNCOA51 FUNC SEGMENT DATA OVERLAYABLE ?BI9 AFUNCQA51 FUNC SEGMENT BIT OVERLAYAI TRN CODE CFUNC) PUBLIC AFUNC?BIT PUBLIC AFUNC RSEG DT AFUNCTA5IFUNO AFUNC?BYTE tmp schr?042: Ds 1 RSEG ?BI? AFUNC?A51FUNC v flag?041: DBIT //a51FU\CC Define uchar unsi gned char Define uint unsigned int extern uint CFUNC uint) uinL AFUNc(uchar v aclr, bit y blag RSEG PR? AFUNC?A51FUNC AFUNC c51所写的函数产生的汇编代码从这里开始 USING 0 SOURCE LINE #t 8 Variable v achr?040 assigned to Register R7 SOURCE LINE 9 uchar tmp vcr uint tp vint tmp schr=y achr OURCE LINE #13 MOV tmp schr?042, R7 tp vint=(uint)v flag SOURCE LINE #t 11 MOV C, y flag?041 CLR RG RLC MOV Variable tp vint?013 assigned to Register R6/R7'---- 这里说明R6,R7内容就是 tp vint return CFUNC (tp vint) SOURCE LINE 16 LCALL CFUNC;这里调用了用c51写的函数 SOURCE LINE #17 ?C000l RET END OF AFLINC 这个文件就是你的汇编函数所在文件,把函数里面的汇编代码修改成你所需的汇编函数就ok了 建议参考徐爱,彭秀华所写的《单片机高级语言C5 l windows环境编程与应用》或马忠梅所写的 单片机的c浯言应用程序设计》有关混合语言编程有关章节 ,·“,“ 关于在KELc51中直接嵌入汇编 有时在651程序中需要入一些汇编代码,这时当然可以用通常的作法 按照C51与汇编的接凵写一个汇编函数,然后在C51程序中调用该函数。(此种方法可在论坛里搜索,以前有很多帖子讲到,不再 重复) 面介绍直接嵌入汇编代码的方法 1、在C文件中要嵌入汇编代码片以如下方式加入汇编代码: *pragma aSM Assembler code here *pragma E\DASM 2、在 Project窗口中包含汇编代码的C文件上右键,选择“ Options for..”,点击右边的“ Generate assembler src file 和“ Assemble src file”,使检查框由灰色变成黑色(有效)状态 3、根据选择的编译模式,把相应的库文件(如Sma1模式时,是Keic51ibC5S.Lib)加入工程中,该文件必须作为工程的最 后文件 A4、编译,即可生成目标代码。

...展开详情
试读 10P KEIL C51中嵌套汇编教程
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    • 分享小兵

      成功上传3个资源即可获取
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    KEIL C51中嵌套汇编教程 25积分/C币 立即下载
    1/10
    KEIL C51中嵌套汇编教程第1页
    KEIL C51中嵌套汇编教程第2页
    KEIL C51中嵌套汇编教程第3页

    试读已结束,剩余7页未读...

    25积分/C币 立即下载 >