音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

求助!為什么我的主程序總是在07FF后面?

作者:djh2000 欄目:單片機(jī)
求助!為什么我的主程序總是在07FF后面?
為什么我的主程序總是在07FF后面?

如:

//********程序*********

sfr P1    = 0x90;
void main(void)
{
P1=0;
}

//***********************

//**************產(chǎn)生的匯編***************

C:0x0000    020800   LJMP     C:0800

C:0x0800    787F     MOV      R0,#0x7F
C:0x0802    E4       CLR      A
C:0x0803    F6       MOV      @R0,A
C:0x0804    D8FD     DJNZ     R0,C:0803
C:0x0806    758107   MOV      SP(0x81),#0x07
C:0x0809    02080C   LJMP     main(C:080C)
     2: void main(void)
     3: {
     4:         P1=0;
C:0x080C    E4       CLR      A
C:0x080D    F590     MOV      P1(0x90),A
     5: }
C:0x080F    22       RET

******************************

0800-0806這一段程序是做什么的,是怎么產(chǎn)生的呢?為什么程序要跳過(guò)07FF這一段呢?怎樣才能讓主程序開(kāi)始放在07FF里面?哪位大哥能告訴我,非常感謝。!



2樓: >>參與討論
btiger2000
鏈接startup.a51 文件了吧?
 
3樓: >>參與討論
AVRx007
沒(méi)必要理會(huì)
這是編譯器自動(dòng)分配。


用起來(lái)有問(wèn)題嗎?

4樓: >>參與討論
djh2000
有問(wèn)題啊
這樣我要寫(xiě)AT89C2051寫(xiě)不上程序去啊,有什么辦法能讓主程序從0030開(kāi)始嗎?

5樓: >>參與討論
djh2000
怎麼辦啊
AT89C2051只有2Kflash,程序只能在0000-7FFF里面,現(xiàn)在程序從7FFF以后才開(kāi)始就燒不進(jìn)IC里面去,怎么辦?

6樓: >>參與討論
z41992929
你在設(shè)置里是不是關(guān)閉了那一段FLASH,去看哈
 
7樓: >>參與討論
殷淼
re
應(yīng)該是你在建立工程文件的時(shí)候又問(wèn)題吧,你是不是沒(méi)有選擇正確的芯片阿?

8樓: >>參與討論
djh2000
謝謝
謝謝你們的回答!

我還是沒(méi)有找到原因,芯片我肯定沒(méi)有選錯(cuò),上面那位
大哥說(shuō)可能是關(guān)閉了那一段FLASH我不知道是不是,如果
是關(guān)閉了FLASH要怎么樣才能找開(kāi)?






9樓: >>參與討論
xymxym
是直接用keil編繹的嗎?
如果是用其它軟件來(lái)鏈接keil的時(shí)候,路徑一定是keil下面的默認(rèn)文件夾中的c51.exe,a51.exe等,而不應(yīng)該把keil中的這些程序拷到你用的那個(gè)軟件的目錄下再鏈接這個(gè)目錄(你用的其它軟件的目錄)的路徑,如果是這樣設(shè)的話就會(huì)有出現(xiàn)你所碰到的問(wèn)題,當(dāng)然有時(shí)候會(huì)是startup.a51的問(wèn)題。

10樓: >>參與討論
z41992929
呵呵,一般在option里面,找到后把勾去掉就好了
 
11樓: >>參與討論
djh2000
@_@
我是直接用KEIL軟件編譯的,也沒(méi)有鏈接其它的文件,那位大哥說(shuō)是KEIL默認(rèn)主程序在07FF才之后開(kāi)始的,我看到有人用C匯編后主程序是在07FF之前就開(kāi)始的。
這是別人用C寫(xiě)的程序匯篇后的HEX:
     0:  02 03 1a ff ff ff ff ff ff ff ff 02 05 f7 ff ff ................
    10:  ff ff ff ff ff ff ff ff ff ff ff 02 06 65 e7 09 .............e..
    20:  f6 08 df fa 80 46 e7 09 f2 08 df fa 80 3e 88 82 .....F.......>..
    30:  8c 83 e7 09 f0 a3 df fa 80 32 e3 09 f6 08 df fa .........2......
    40:  80 78 e3 09 f2 08 df fa 80 70 88 82 8c 83 e3 09 .x.......p......
    。。。
他的程序跟用匯編寫(xiě)的一樣,緊接在特殊功能單元后面就開(kāi)始了,對(duì)于KEIL我還不熟不知道是怎么做到的。各位大哥有知道嗎?


12樓: >>參與討論
nosky
BL51 Locate 中的對(duì)號(hào)勾上就OK 了.
Use MEMORY Layout from Target DIALOG
前面的對(duì)號(hào)鉤上就OK了。

你是不是建工程的時(shí)候選了硬件仿真的 模式??

13樓: >>參與討論
djh2000
#_#
不是,我改了還是不行

14樓: >>參與討論
zalin
2K評(píng)估版
 
15樓: >>參與討論
nosky
樓主你把工程文件發(fā)給我我看看
不方便的話就算了..
在我的印象中好象只有這個(gè)地方會(huì)影響.
nosky100@126.com

16樓: >>參與討論
djh2000
下面是工程文件
BL51 BANKED LINKER/LOCATER V5.12                                                        09/15/2005  18:40:37  PAGE 1


BL51 BANKED LINKER/LOCATER V5.12, INVOKED BY:
C:\KEIL\C51\BIN\BL51.EXE .\xm1_LX_1.obj TO LXC_2


MEMORY MODEL: SMALL


INPUT MODULES.html">MODULES INCLUDED:
  .\xm1_LX_1.obj (XM1_LX_1)
  C:\KEIL\C51\LIB\C51S.LIB (?C_STARTUP)


LINK MAP OF MODULE:  LXC_2 (XM1_LX_1)


            TYPE    BASE      LENGTH    RELOCATION   SEGMENT NAME
            -----------------------------------------------------

            * * * * * * *   D A T A   M E M O R Y   * * * * * * *
            REG     0000H     0008H     ABSOLUTE     "REG BANK 0"
            IDATA   0008H     0001H     UNIT         ?STACK

            * * * * * * *   C O D E   M E M O R Y   * * * * * * *
            CODE    0000H     0003H     ABSOLUTE     
                    0003H     07FDH                  *** GAP ***
            CODE    0800H     000CH     UNIT         ?C_C51STARTUP
            CODE    080CH     0004H     UNIT         ?PR?MAIN?XM1_LX_1



OVERLAY MAP OF MODULE:   LXC_2 (XM1_LX_1)


SEGMENT
  +--> CALLED SEGMENT
---------------------
?C_C51STARTUP
  +--> ?PR?MAIN?XM1_LX_1



SYMBOL TABLE OF MODULE:  LXC_2 (XM1_LX_1)

  VALUE           TYPE          NAME
  ----------------------------------

  -------         MODULE        XM1_LX_1
  C:0000H         SYMBOL        _ICE_DUMMY_
  D:0090H         PUBLIC        P1
  C:080CH         PUBLIC        main
  -------         PROC          MAIN
  C:080CH         LINE#         2
  C:080CH         LINE#         3
  C:080CH         LINE#         4
  C:080FH         LINE#         5
  -------         ENDPROC       MAIN
  -------         ENDMOD        XM1_LX_1

BL51 BANKED LINKER/LOCATER V5.12                                                      09/15/2005  18:40:37  PAGE 2


******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0004H BYTE ( 0%) *
******************************************************************************

Program Size: data=9.0 xdata=0 code=19
LINK/LOCATE RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)


17樓: >>參與討論
fu_yun
option選項(xiàng)問(wèn)題
在target中有一個(gè)use on_chip rom(0x0-0x7FF)的選項(xiàng)選上就可以了
你設(shè)置使用外部rom空間了

18樓: >>參與討論
djh2000
結(jié)果一樣
我把Target上的Use On-chip ROM (0x0-0xFFF)選項(xiàng)的鉤
鉤上后編譯出現(xiàn)下面的提示框:
file has been changed outside the
editor,reload?Y/N
點(diǎn)yes/no后編譯結(jié)果還是一樣?


19樓: >>參與討論
djh2000
剛錯(cuò)了,結(jié)果不一樣
剛錯(cuò)了,點(diǎn)YES不是跟以前一樣,而是編譯不了,下面出現(xiàn)一
很多錯(cuò)誤信息
Build target 'Target 1'
compiling xm1_LX_1.c...
linking...
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   CODE    
    SEGMENT: ?C_C51STARTUP
    LENGTH:  000CH
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   CODE    
    SEGMENT: ?C_C51STARTUP
    LENGTH:  000CH
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   CODE    
    SEGMENT: ?PR?MAIN?XM1_LX_1
    LENGTH:  0004H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   CODE    
    SEGMENT: ?PR?MAIN?XM1_LX_1
    LENGTH:  0004H
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
    SYMBOL:  MAIN
    SEGMENT: ?PR?MAIN?XM1_LX_1
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
    SEGMENT: ?PR?MAIN?XM1_LX_1
    MODULE:  .\xm1_LX_1.obj (XM1_LX_1)
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
    SEGMENT: ?C_C51STARTUP
    MODULE:  C:\KEIL\C51\LIB\C51S.LIB (?C_STARTUP)
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?C_START
    MODULE:  C:\KEIL\C51\LIB\C51S.LIB (?C_STARTUP)
    ADDRESS: 000AH
Program Size: data=9.0 xdata=0 code=19
Target not created

20樓: >>參與討論
陳雙君
有種事情?
你在編譯的時(shí)候可以設(shè)置有問(wèn)題  。

21樓: >>參與討論
nosky
樓主可能我們理解不一樣.
我說(shuō)的工程文件是 .Uv2文件,不是M51文件。


22樓: >>參與討論
djh2000
哪個(gè)設(shè)置?
 陳雙君 發(fā)表于 2005-9-15 22:19 侃單片機(jī) ←返回版面    
有種事情?
你在編譯的時(shí)候可以設(shè)置有問(wèn)題  。


哪個(gè)設(shè)置會(huì)影響到主程序開(kāi)始的地方呢?我找了很久都
沒(méi)有找到


23樓: >>參與討論
z41992929
樓主放你程序出來(lái)吧

  我估計(jì)是你程序或者常量定位有問(wèn)題

24樓: >>參與討論
djh2000
我測(cè)試的程序
程序:芯片AT89C2051
#include<reg51.h>
void main(void)
{
    P1=0;
}
我試了很多程序,包括從網(wǎng)上COPY下來(lái)的已正確測(cè)試的程序,結(jié)果主程序都是在07FF后面,換其它芯片也是一樣

25樓: >>參與討論
nosky
樓主,你發(fā)的文件在我的KEIL中編譯無(wú)問(wèn)題
我看了你的HEX文件,確實(shí)是在0x07FF之后,但是我什么都不改再編譯依次就OK了??

是不是你的KEIL版本的問(wèn)題??
你用的什么版本啊??



26樓: >>參與討論
zw820506
我也碰到過(guò)~
后來(lái)用了個(gè)注冊(cè)版的就沒(méi)問(wèn)題了~~

27樓: >>參與討論
andytian
怎樣使用keil的軟件仿真功能
 
28樓: >>參與討論
sophist98
也許是編譯器搞的鬼。
有些編譯器會(huì)先自動(dòng)加入startup.a51的,
這樣,程序就不會(huì)在0000h的位置了。
如果用keil 的話,可以選擇去掉startup.a51,
就不會(huì)有這樣的問(wèn)題了。

參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教51單片機(jī)可否ISP編程?如何實(shí)現(xiàn)?
誰(shuí)用過(guò)松翰(SONIX)的單片機(jī)
51單片機(jī)P0口的上拉電阻
89c2051的IO口是不是高低電平都不能用來(lái)驅(qū)動(dòng)LED?
尋Holtek的開(kāi)發(fā)工具
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)