|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
碰到了一個怪問題,百思不得其解啊!大家進(jìn)來看看! |
| 作者:yupingwen 欄目:單片機(jī) |
我把8051的外部數(shù)據(jù)空間擴(kuò)充了一下,用LX51命令如下: BankArea (0x008000, 0x00FFFF) WARNINGLEVEL (0) CLASSES (XDATA (X:0x0-X:0x7FFF), CODE (C:0x0-C:0x7FFF), HDATA (X:0x028000-X:0x02FFFF, X:0x038000-X:0x03FFFF, X:0x048000- X:0x04FFFF,X:0x058000-X:0x05FFFF, X:0x068000-X:0x06FFFF, X:0x078000-X:0x07FFFF, X:0x088000-X:0x08FFFF) , HCONST (B1:0x8000-B1:0xFFFF, B2:0x8000-B2:0xFFFF, B3:0x8000- B3:0xFFFF,B4:0x8000-B4:0xFFFF, B5:0x8000-B5:0xFFFF, B6:0x8000-B6:0xFFFF, B7:0x8000-B7:0xFFFF)) 并在工程中添加了L51_BANK.A51。 我定義了幾個大數(shù)組分別如下: extern unsigned CHAR far large_array1[0x8000] _at_ 0x78000; extern unsigned CHAR far large_array2[0x8000] _at_ 0x28000; extern unsigned CHAR far large_array3[0x8000] _at_ 0x38000; 然后在以下的程序中對數(shù)組分量賦值: while(1) { for (i = 0; i < 1000; i++) { large_array1[i] = (unsigned CHAR) i+0x80; large_carray1[i]=0x81; large_carray2[i] = (unsigned CHAR) i+0x80; } 在debug的時候發(fā)現(xiàn)在對large_array1賦值的時候進(jìn)行了組切換, 但是對large_array2和large_array3賦值的時候被切換到large_array1那一組了,即沒有對R3進(jìn)行新的賦值。 如果我把large_array2定義前的extern去掉,則又切換對了。 如果我把變量定義時的extern全部去掉,則又不對了。 為什么。 |
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |