导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助][phosphor]

 *第13509篇: [求助]

  
楼 主:phosphor 2003年6月16日12:02
 [求助]
我用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 炜煌的仿真器)

  
2楼:guest 2003年6月16日12:29
 这个问题好办,

这个问题好办,你可以设置啊!

有什么问题也可以到这里找 sky_adb ,

  
3楼:phosphor 2003年6月16日14:50
 [讨论]
对,可以在options中设置,我和试过很多次都不成功,每次设定的地址小于4000h时,调试时就被告知不行必须大于或等于4000h,可不可详细一点在options中怎样设定。谢谢了!!!!!!!!!!!!!
  
4楼:guest 2003年6月16日15:25
 我想你对KEIL还不熟悉把,
  
5楼:想跟你学学! 2003年6月16日12:44
 怎么才能在c51中定义程序的绝对地址?
我也遇到这样的问题,能告诉我怎么才能在c51中定义程序的绝对地址吗 ?
  
6楼:七味 2003年6月17日14:47
 用 at 来定义

>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:救命啊,用74LS245能驱动几块硬盘??

[下一篇主题]:求教:mpeg4实时编解码器