
单片机C语言编程与汇编混合编程时出现的问题
#include<reg51.h>#pragmasrcvoidDelay(){#pragmaasmMOVR2,#20D1:MOVR3,#100D2:MOVR4,#229D...
#include<reg51.h>
#pragma src
void Delay()
{
#pragma asm
MOV R2,#20
D1:
MOV R3,#100
D2:
MOV R4,#229
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
#pragma endasm
}
void main()
{
unsigned char c,i;
while(1)
{
c=0xfe;
for(i=0;i>7;i++)
{
P0=c;
Delay();
c<<=1;
}
}
}
TEST1.C(3): error C252: misplaced primary control, line ignored
TEST1.C(6): error C272: 'asm/endasm' requires src-control to be active
TEST1.C(15): error C272: 'asm/endasm' requires src-control to be active
用KEIL 编译后出现上面几个错误.我将 #pragma src 放在main() 前也不行,有各位高手指点 展开
#pragma src
void Delay()
{
#pragma asm
MOV R2,#20
D1:
MOV R3,#100
D2:
MOV R4,#229
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
#pragma endasm
}
void main()
{
unsigned char c,i;
while(1)
{
c=0xfe;
for(i=0;i>7;i++)
{
P0=c;
Delay();
c<<=1;
}
}
}
TEST1.C(3): error C252: misplaced primary control, line ignored
TEST1.C(6): error C272: 'asm/endasm' requires src-control to be active
TEST1.C(15): error C272: 'asm/endasm' requires src-control to be active
用KEIL 编译后出现上面几个错误.我将 #pragma src 放在main() 前也不行,有各位高手指点 展开
展开全部
首先#pragma src 的意思是向下编译至SRC文件中 在KEIL中第1次编译时很容易出错的。#pragma asm 这类型的命令先别加,编译通过一次就好了
如果是在向HEX文件编译时出的错误。因为#pragma src 的意思是向下编译至SRC文件中(汇编文件),
#pragma asm
MOV R2,#20
D1:
MOV R3,#100
D2:
MOV R4,#229
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
#pragma endasm
的意思是这段程序向SRC文件编译时保持源代码不变 也就把这段汇编加进SRC汇编文件中。
但C文件要生成HEX文件时是通过OBJ文件进行的,所以直接编译是肯定出错的
正确的方法是生成SRC文件后 打开直接对SRC文件编译来生成HEX文件
如果是在向HEX文件编译时出的错误。因为#pragma src 的意思是向下编译至SRC文件中(汇编文件),
#pragma asm
MOV R2,#20
D1:
MOV R3,#100
D2:
MOV R4,#229
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
#pragma endasm
的意思是这段程序向SRC文件编译时保持源代码不变 也就把这段汇编加进SRC汇编文件中。
但C文件要生成HEX文件时是通过OBJ文件进行的,所以直接编译是肯定出错的
正确的方法是生成SRC文件后 打开直接对SRC文件编译来生成HEX文件
展开全部
#include<reg51.h>
main()
{
#pragma asm
MOV R2,#20
D1:
MOV R3,#100
D2:
MOV R4,#229
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
#pragma endasm
}
void main()
{
unsigned char c,i;
while(1)
{
c=0xfe;
for(i=0;i>7;i++)
{
P0=c;
Delay();
c<<=1;
}
}
TEST1.C(3): error C252: misplaced primary control, line ignored
TEST1.C(6): error C272: 'asm/endasm' requires src-control to be active
TEST1.C(15): error C272: 'asm/endasm' requires src-control to be active
}
main()
{
#pragma asm
MOV R2,#20
D1:
MOV R3,#100
D2:
MOV R4,#229
DJNZ R4,$
DJNZ R3,D2
DJNZ R2,D1
#pragma endasm
}
void main()
{
unsigned char c,i;
while(1)
{
c=0xfe;
for(i=0;i>7;i++)
{
P0=c;
Delay();
c<<=1;
}
}
TEST1.C(3): error C252: misplaced primary control, line ignored
TEST1.C(6): error C272: 'asm/endasm' requires src-control to be active
TEST1.C(15): error C272: 'asm/endasm' requires src-control to be active
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言和汇编是不能够的在一个环境之中的运行的。第一次听说汇编语言和c语言在同一个的程序之中的。他们是可以同样的实现一个同功能。,但是应该的不能够的混合的来实现一个功能。因为使用的环境,原理机制不同对的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注中~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询