KEIL C51程序中如何嵌入汇编?

KEIL C51程序中如何嵌入汇编?,第1张

模块内接口:

使用如下标志符:

#pragma

asm

汇编语句

#pragma

endasm

注意:如果在c51程序中使用了汇编语言,注意在Keil编译器中需要激活Properties中的

“Generate

Assembler

SRC

File”

和“Assembler

SRC

File

”两个选项

1、把"xx.c"加入工程中,右击"xx.c"选择“options

for

file"xx.c"

选择

“Generate

Assembler

SRC

File”和“Assemble

SRC

File”打上黑勾有效;

2、根据选择的编译模式,把相应的库文件象加"xx.c"一

样加入工程中并放在"xx.c"下面,如smail模式下选"keil\c51\lib\c51s.lib"

加入工程中,如果要进行浮点运算把"keil\c51\lib\c51fpl.lib"也加入工程中。

即:

Keil

安装目录下的

\C51\LIB\

目录的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

3、在"xx.c"头文件中加入优化:比如#pragma

OT(4,speed)

4、在"xx.c"中加入汇编代码

#pragma

ASM

Assembler

Code

Here

#pragma

ENDASM

5、编译生成xx.hex

例:

#include

void

delay(void)

{

#pragma

asm

MOV

R5,#5

DEL:

MOV

R6,#2

DEL1:

MOV

R7,#255

DJNZ

R7,$

DJNZ

R6,DEL1

DJNZ

R5,DEL

MOV

A,P1

CPL

A

MOV

P1,A

#pragma

endasm

}

void

delay1(unsigned

int

cnt)

{

while(cnt--)

}

void

main()

{

while(1)

{

delay1(1000)

P1=0x55

delay()

}

}

step 1:新建一个工程

step 2:选择芯片类型(因为不同芯片包含的函数不一样)

step 3:新建空白文件,然后加入到工程里边

step 4:在空白软件中编写程序

PS:其实也可以先编写再添加,但为了防止忘了保存或者数据丢失,建议新建空文件时就加到工程里去。

51单片机用的是 keilC51;STM32装keilMDK。\r\n如果先装keilC51,后装keilMDK的,装在不同的目录里,装完之后不管是51工程还是stm32工程默认都会用keilMDK打开,这样打开51工程时会出错.\r\n \r\n最简单的方法: 要打开51的工程必须先打开keilC51程序,然后再程序里打开工程文件。\r\n打开stm32工程当然没有问题.\r\n \r\n第二个方法: 让keilMDK兼容51的工程,只要一个keil就都能编译51和stm32的工程了:\r\n1、安装keilC51,安装目录 C:\keilC51\\r\n2、安装keilMDK,安装目录 C:\keilMDK\\r\n3、把 C:\keilC51\ 里面的 C51 文件夹复制到 C:\keilMDK\ 里\r\n4、把 C:\keilC51\ 里面的 UV4 文件夹复制到 C:\keilMDK\ 里,提示有同名文件都不要覆盖(注意是不要覆盖)\r\n5、把 C:\keilC51\TOOLS.INI 文件里面的内容复制到 C:\keilMDK\TOOLS.INI 文件后面,并且把所有的 "keilC51”替换为"keilMDK”\r\n这样就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12165099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存