打印
[开发工具]

51单片机c嵌汇编教程

[复制链接]
75|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
saservice|  楼主 | 2024-6-29 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一步;按照建立普通c51程序的方法,建立c51工程文件。
           建立两个*.c文件(c51shi.c和asm.c),加入工程。c51shi.c为主程序,asm.c为汇编函数。

第二步:在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;


第三步: 根据选择的编译模式,把相应的库文件加入工程中,该文件必须作为工程的最后文件;
         注:库文件说明
             C51S.LIB - 没有浮点运算的 Small model
             C51C.LIB - 没有浮点运算的 Compact model
             C51L.LIB - 没有浮点运算的 Large model
             C51FPS.LIB - 带浮点运算的 Small model
             C51FPC.LIB - 带浮点运算的 Compact model
             C51FPL.LIB - 带浮点运算的 Large model


第四步: build这个工程后将会产生一个asm.SRC的文件,将这个文件改名为asm.A51,然后在工程里去掉库文件(如C51S.Lib)和asm.c,而将asm.A51添加到工程里。


第五步: 检查c51shi.c的“Generate Assembler SRC File”和“Assemble SRC File”是否有效,若是有效则点击使检查框变成无效状态;再次build这个工程,到此你已经得到汇编函数的主体,修改函数里面的汇编代码就得到你所需的汇编函数了。

c51.c代码如下:
#include <reg52.h>
//*************** 函数定义 ******************
void asm(void);                //汇编函数

//*************** 主程序 ********************
void main(void)
{
  while(1)
  {
asm();
  }
}


asm.c代码如下:
void asm(void)
{

}



经过以上五步后,您将得到一个asm.a51文件,在文件中红色代码后添加您的汇编语句即可。


; ./asm.SRC generated from: asm.c
; COMPILER INVOKED BY:
;        C:/Keil/C51/BIN/C51.EXE asm.c BROWSE DEBUG OBJECTEXTEND SRC(./asm.SRC)

NAME ASM
?PR?asm?ASM          SEGMENT CODE
PUBLIC asm
;
;
;
; void asm(void)
RSEG  ?PR?asm?ASM
asm:
//在此处添加您的汇编代码**************
      ret


      END



-----------------------------------------------------------------------------------------

第一步:在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;

第二步:根据选择的编译模式,把相应的库文件(如 Small 模式时,是Keil/C51/Lib/C51S.Lib)加入工程中, 该文件必须作为工程的最后文件;
C51S.LIB - 没有浮点运算的 Small model
C51C.LIB - 没有浮点运算的 Compact model
C51L.LIB - 没有浮点运算的 Large model
C51FPS.LIB - 带浮点运算的 Small model
C51FPC.LIB - 带浮点运算的 Compact model
C51FPL.LIB - 带浮点运算的 Large model

第三步:在需要嵌入汇编的地方以如下方式加入汇编代码;
    #pragma ASM
    ; Assembler Code Here
    #pragma ENDASM

第四步:编译,即可生成目标代码;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

1139

帖子

2

粉丝