单片机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() 前也不行,有各位高手指点
展开
 我来答
百度网友146035605
2008-12-09 · TA获得超过131个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:101万
展开全部
首先#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文件
doula_007
2008-12-09
知道答主
回答量:17
采纳率:0%
帮助的人:17.9万
展开全部
#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
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丁祈儿
2008-12-09 · 超过57用户采纳过TA的回答
知道答主
回答量:219
采纳率:0%
帮助的人:0
展开全部
c语言和汇编是不能够的在一个环境之中的运行的。第一次听说汇编语言和c语言在同一个的程序之中的。他们是可以同样的实现一个同功能。,但是应该的不能够的混合的来实现一个功能。因为使用的环境,原理机制不同对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yczzdy
2008-12-10 · 超过22用户采纳过TA的回答
知道答主
回答量:94
采纳率:100%
帮助的人:33.8万
展开全部
关注中~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式