
救救我吧!!!我在学习用keil4,用c语言调用汇编函数时,总是报这两个错误,程序都已经是最简了,还是无解。
============================================compilingASSEMB.C...ASSEMB.C(3):errorC141...
============================================
compiling ASSEMB.C...
ASSEMB.C(3): error C141: syntax error near '?'
ASSEMB.C(3): error C129: missing ';' before '?'
ASSEMB.C - 2 Error(s), 0 Warning(s).
================================================
#include <reg52.h>
bit devwait(unsigned char ticks);
?PR?_devwait?ASSEMB SEGMENT CODE
PUBLIC _devwait
RSEG ?PR?_devwait?ASSEMB
_devwait: DJNZ R7,_devwait
SETB C
RET
END
void main()
{
unsigned char data bytes_out=0;
if(devwait(5))
bytes_out++;
}
===========================
它说问号前差个分号,我就没懂了,怎么也找不错误来,诚求高人指点,小弟初学! 展开
compiling ASSEMB.C...
ASSEMB.C(3): error C141: syntax error near '?'
ASSEMB.C(3): error C129: missing ';' before '?'
ASSEMB.C - 2 Error(s), 0 Warning(s).
================================================
#include <reg52.h>
bit devwait(unsigned char ticks);
?PR?_devwait?ASSEMB SEGMENT CODE
PUBLIC _devwait
RSEG ?PR?_devwait?ASSEMB
_devwait: DJNZ R7,_devwait
SETB C
RET
END
void main()
{
unsigned char data bytes_out=0;
if(devwait(5))
bytes_out++;
}
===========================
它说问号前差个分号,我就没懂了,怎么也找不错误来,诚求高人指点,小弟初学! 展开
1个回答
展开全部
我今天刚好学了C语言嵌入汇编,你需要设置下编译环境:
1.在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,
点击右边的
“Generate Assembler SRC File”和“Assemble SRC File”
使检查框由灰色变成黑色(有效)状态
2.根据选择的编译模式,把相应的库文件(如 Small 模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件,在默认安装盘KEIL/C51/LIB/C51S.Lib
3.编译,即可生成目标代码
附带我编写成功的C嵌入汇编简单程序
#include<reg52.h>
#define uchar unsigned char
sbit LED1=P1^0;
/******************************************
C嵌入汇编例程
******************************************/
void delay_ms(void)
{
#pragma asm
MOV R0,#0FFH
MOV R1,#0FFH
D_LOOP1:
DJNZ R0,D_LOOP1
MOV R0,#0FFH
DJNZ R1,D_LOOP1
#pragma endasm
}
void main(void)
{
uchar i;
P1 = 0xFF;
while(1)
{
i++;
delay_ms();
if(i>=7)
{
LED1 =~LED1;
i=0;
}
}
}
1.在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,
点击右边的
“Generate Assembler SRC File”和“Assemble SRC File”
使检查框由灰色变成黑色(有效)状态
2.根据选择的编译模式,把相应的库文件(如 Small 模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件,在默认安装盘KEIL/C51/LIB/C51S.Lib
3.编译,即可生成目标代码
附带我编写成功的C嵌入汇编简单程序
#include<reg52.h>
#define uchar unsigned char
sbit LED1=P1^0;
/******************************************
C嵌入汇编例程
******************************************/
void delay_ms(void)
{
#pragma asm
MOV R0,#0FFH
MOV R1,#0FFH
D_LOOP1:
DJNZ R0,D_LOOP1
MOV R0,#0FFH
DJNZ R1,D_LOOP1
#pragma endasm
}
void main(void)
{
uchar i;
P1 = 0xFF;
while(1)
{
i++;
delay_ms();
if(i>=7)
{
LED1 =~LED1;
i=0;
}
}
}
参考资料: KEIL编程_C语言嵌入汇编
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询