使用如下标志符:
#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()
}
}
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这样就可以了欢迎分享,转载请注明来源:内存溢出
评论列表(0条)