[求助]
我用C语言对MCS-51单片机产品系统进行编程.仿真时程序运行很正常,可我发现程序是从0000H开
始一下子跳到4000H去了,也就是说程序存放在4000H开始以后的单元里面.而我用的是AT89C51单
片机芯片,最多只能从0000H到1FFFH,也就是说我在烧写的时候程序不会烧进89C51里面去(实际上
也不能烧写进去).请问大侠怎样在C语言编程时,让程序从0000H开始后跳到0100H去.让程序从
0100H开始,这样就能烧写进入芯片.用汇编很简单,用C语言我试了很长时间都不行.可老板要我用
C语言,请帮忙,不胜感激!例如一个很简单的例子:
#include <stdio.h>
#include <reg51.h>
void delay(void);
void main (void)
{
for(;;)
{
P1=0x00;
delay();
P1=0xff;
delay();
}
}
void delay(void)
{
long int i;
for(i=0;i <=99999;i++)
{
}
}
生成的.m51文件中有这样的:
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0004H UNIT _DATA_GROUP_
IDATA 000CH 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
0003H 3FFDH *** GAP ***
CODE 4000H 003FH INBLOCK ?PR?DELAY?T1
CODE 403FH 0016H UNIT ?C?LIB_CODE
CODE 4055H 000DH INBLOCK ?PR?MAIN?T1
CODE 4062H 000CH UNIT ?C_C51STARTUP
请问在options中具体怎样设定,我试过很多次还是不成功,请各位赐教,谢谢!(我用的是
keil c51 炜煌的仿真器)
发表时间:2003年6月16日12:02:44