|
|||||||||||
| 技術(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后面? 如: //********程序********* 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 于 2005/9/15 9:44:00 發(fā)布:
鏈接startup.a51 文件了吧? |
|
| 3樓: | >>參與討論 |
| 作者: AVRx007 于 2005/9/15 9:50:00 發(fā)布:
沒(méi)必要理會(huì) 這是編譯器自動(dòng)分配。 用起來(lái)有問(wèn)題嗎? |
|
| 4樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 10:00:00 發(fā)布:
有問(wèn)題啊 這樣我要寫(xiě)AT89C2051寫(xiě)不上程序去啊,有什么辦法能讓主程序從0030開(kāi)始嗎? |
|
| 5樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 10:27:00 發(fā)布:
怎麼辦啊 AT89C2051只有2Kflash,程序只能在0000-7FFF里面,現(xiàn)在程序從7FFF以后才開(kāi)始就燒不進(jìn)IC里面去,怎么辦? |
|
| 6樓: | >>參與討論 |
| 作者: z41992929 于 2005/9/15 10:40:00 發(fā)布:
你在設(shè)置里是不是關(guān)閉了那一段FLASH,去看哈 |
|
| 7樓: | >>參與討論 |
| 作者: 殷淼 于 2005/9/15 10:42:00 發(fā)布:
re 應(yīng)該是你在建立工程文件的時(shí)候又問(wèn)題吧,你是不是沒(méi)有選擇正確的芯片阿? |
|
| 8樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 11:19:00 發(fā)布:
謝謝 謝謝你們的回答! 我還是沒(méi)有找到原因,芯片我肯定沒(méi)有選錯(cuò),上面那位 大哥說(shuō)可能是關(guān)閉了那一段FLASH我不知道是不是,如果 是關(guān)閉了FLASH要怎么樣才能找開(kāi)? |
|
| 9樓: | >>參與討論 |
| 作者: xymxym 于 2005/9/15 11:43:00 發(fā)布:
是直接用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 于 2005/9/15 12:45:00 發(fā)布:
呵呵,一般在option里面,找到后把勾去掉就好了 |
|
| 11樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 13:24:00 發(fā)布:
@_@ 我是直接用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 于 2005/9/15 13:33:00 發(fā)布:
BL51 Locate 中的對(duì)號(hào)勾上就OK 了. Use MEMORY Layout from Target DIALOG 前面的對(duì)號(hào)鉤上就OK了。 你是不是建工程的時(shí)候選了硬件仿真的 模式?? |
|
| 13樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 14:20:00 發(fā)布:
#_# 不是,我改了還是不行 |
|
| 14樓: | >>參與討論 |
| 作者: zalin 于 2005/9/15 14:50:00 發(fā)布:
2K評(píng)估版 |
|
| 15樓: | >>參與討論 |
| 作者: nosky 于 2005/9/15 15:05:00 發(fā)布:
樓主你把工程文件發(fā)給我我看看 不方便的話就算了.. 在我的印象中好象只有這個(gè)地方會(huì)影響. nosky100@126.com |
|
| 16樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 18:42:00 發(fā)布:
下面是工程文件 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 于 2005/9/15 19:04:00 發(fā)布:
option選項(xiàng)問(wèn)題 在target中有一個(gè)use on_chip rom(0x0-0x7FF)的選項(xiàng)選上就可以了 你設(shè)置使用外部rom空間了 |
|
| 18樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/15 19:55:00 發(fā)布:
結(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 于 2005/9/15 20:05:00 發(fā)布:
剛錯(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樓: | >>參與討論 |
| 作者: 陳雙君 于 2005/9/15 22:19:00 發(fā)布:
有種事情? 你在編譯的時(shí)候可以設(shè)置有問(wèn)題 。 |
|
| 21樓: | >>參與討論 |
| 作者: nosky 于 2005/9/16 8:13:00 發(fā)布:
樓主可能我們理解不一樣. 我說(shuō)的工程文件是 .Uv2文件,不是M51文件。 |
|
| 22樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/16 8:14:00 發(fā)布:
哪個(gè)設(shè)置? 陳雙君 發(fā)表于 2005-9-15 22:19 侃單片機(jī) ←返回版面 有種事情? 你在編譯的時(shí)候可以設(shè)置有問(wèn)題 。 哪個(gè)設(shè)置會(huì)影響到主程序開(kāi)始的地方呢?我找了很久都 沒(méi)有找到 |
|
| 23樓: | >>參與討論 |
| 作者: z41992929 于 2005/9/16 10:00:00 發(fā)布:
樓主放你程序出來(lái)吧 我估計(jì)是你程序或者常量定位有問(wèn)題 |
|
| 24樓: | >>參與討論 |
| 作者: djh2000 于 2005/9/16 13:17:00 發(fā)布:
我測(cè)試的程序 程序:芯片AT89C2051 #include<reg51.h> void main(void) { P1=0; } 我試了很多程序,包括從網(wǎng)上COPY下來(lái)的已正確測(cè)試的程序,結(jié)果主程序都是在07FF后面,換其它芯片也是一樣 |
|
| 25樓: | >>參與討論 |
| 作者: nosky 于 2005/9/16 14:58:00 發(fā)布:
樓主,你發(fā)的文件在我的KEIL中編譯無(wú)問(wèn)題 我看了你的HEX文件,確實(shí)是在0x07FF之后,但是我什么都不改再編譯依次就OK了?? 是不是你的KEIL版本的問(wèn)題?? 你用的什么版本啊?? |
|
| 26樓: | >>參與討論 |
| 作者: zw820506 于 2005/9/16 15:48:00 發(fā)布:
我也碰到過(guò)~ 后來(lái)用了個(gè)注冊(cè)版的就沒(méi)問(wèn)題了~~ |
|
| 27樓: | >>參與討論 |
| 作者: andytian 于 2005/9/27 23:19:00 發(fā)布:
怎樣使用keil的軟件仿真功能 |
|
| 28樓: | >>參與討論 |
| 作者: sophist98 于 2005/10/1 19:00:00 發(fā)布:
也許是編譯器搞的鬼。 有些編譯器會(huì)先自動(dòng)加入startup.a51的, 這樣,程序就不會(huì)在0000h的位置了。 如果用keil 的話,可以選擇去掉startup.a51, 就不會(huì)有這樣的問(wèn)題了。 |
|
|
|
| 免費(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) |