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

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

有誰研究過keil的Startup.A51,其最后的ljmp ?C_START ??

作者:wang_jun_ 欄目:單片機(jī)
有誰研究過keil的Startup.A51,其最后的ljmp ?C_START ??
本來我認(rèn)為初始化完了,ljmp ?C_START 僅僅跳轉(zhuǎn)到main就可以了(也就是說,編譯的結(jié)果應(yīng)該等同于ljmp main地址),但實(shí)際結(jié)果是它編譯成
ljmp localAddr ;
ljmp main;
而其中l(wèi)ocalAddr(我自己隨便命名的一個標(biāo)號)那小段代碼(我們用戶本身并沒有寫這段代碼)又去好像用DPRT讀一個數(shù),再去判斷其是否為0,再來決定是否跳轉(zhuǎn)到main.
請問哪位高手知道它跳去執(zhí)行的代碼是干什么的,為什么要那么做?我想keil肯定有自己的理由,但我沒找到相關(guān)的資料有說這個的。
非常感謝高手傳道解惑
謝謝

2樓: >>參與討論
wang_jun_
up
期待高手出現(xiàn)

3樓: >>參與討論
wang_jun_
up
 
4樓: >>參與討論
wenxuan204
我編程序從來不用Startup.A51,心里沒底,又占用空間
我編程序從來不用Startup.A51,心里沒底,又占用空間

5樓: >>參與討論
zheng79
那是用來初始化全局變量的吧
 
6樓: >>參與討論
wang_jun_
其它部分我知道它的意思
只是最后一句ljmp ?C_START 編譯結(jié)果不明白。
因?yàn)槲业某绦蛴袝r在這里出錯(IAP),所以要搞明白

7樓: >>參與討論
fu_yun
可我的keil編譯後確實(shí)只有l(wèi)jmp main;沒有多出來呀!
                MOV     SP,#?STACK-1
; This code is required if you use L51_BANK.A51 with Banking Mode 4
; EXTRN CODE (?B_SWITCH0)
;               CALL    ?B_SWITCH0  ; init bank mechanism to code
                                    ;  bank 0
                LJMP    ?C_START

                END
想必是limp ?c_start前面的代碼導(dǎo)致的吧!

8樓: >>參與討論
llisong
高手出現(xiàn)指點(diǎn)指點(diǎn)
 
9樓: >>參與討論
wang_jun_
截圖如下
 LJMP    ?C_START 編譯結(jié)果如下(KC7.02):


10樓: >>參與討論
wang_jun_
而C:E047的代碼截圖如下:
 

11樓: >>參與討論
computer00
奇怪,看起來好象你的代碼有問題啊。
 
12樓: >>參與討論
javie
應(yīng)該是代碼的問題
 
13樓: >>參與討論
wang_jun_
Startup.A51我并沒有修改它,怎么會有問題呢?
而且正常情況下單步確實(shí)是先到E047,執(zhí)行到JZ時才轉(zhuǎn)到E00C(也就是main)的,
但有時候JZ不成立,所以執(zhí)行到下面一句去了。

14樓: >>參與討論
computer00
能否發(fā)你的代碼,我來編譯看看結(jié)果?
 
15樓: >>參與討論
wang_jun_
如何發(fā)?email地址?
我的keil是7.02的,難道別的版本的keil的ljmp ?C_START 編譯的結(jié)果只有一條ljmp ***?


16樓: >>參與討論
computer00
為啥我編譯后的結(jié)果是這樣的?(我自己的程序)
C:0x0000    0208D0   LJMP     C:08D0
C:0x0003    E51C     MOV      A,0x1C
C:0x0005    75F003   MOV      B(0xF0),#0x03

……………………………………
……………………………………

C:0x08CF    22       RET      
C:0x08D0    787F     MOV      R0,#0x7F
C:0x08D2    E4       CLR      A
C:0x08D3    F6       MOV      @R0,A
C:0x08D4    D8FD     DJNZ     R0,C:08D3
C:0x08D6    7581C5   MOV      SP(0x81),#0xC5
C:0x08D9    020607   LJMP     main(C:0607)

17樓: >>參與討論
wang_jun_
首先
 LJMP     C:08D0(應(yīng)該源代碼是 LJMP    ?C_START )
到C:08D0 執(zhí)行了
C:0x08D0    787F     MOV      R0,#0x7F
C:0x08D2    E4       CLR      A
C:0x08D3    F6       MOV      @R0,A
C:0x08D4    D8FD     DJNZ     R0,C:08D3
C:0x08D6    7581C5   MOV      SP(0x81),#0xC5
C:0x08D9    020607   LJMP     main(C:0607),我這里是條件跳轉(zhuǎn)。
別的地方代碼可能不一樣,這不是問題的重點(diǎn),重點(diǎn)是它為什么不直接LJMP     main(C:0607),而是LJMP     C:08D0,在08D0的那些代碼完成了什么工作?作用何在?這就是我不明白的問題所在。


18樓: >>參與討論
computer00
上面那段代碼完成了內(nèi)存初始化以及堆棧指針初始化的工作啊
C:0x0000    0208D0   LJMP     C:08D0 ;復(fù)位后從此開始運(yùn)行。跳轉(zhuǎn)到08D0


C:0x08D0    787F     MOV      R0,#0x7F  ;從地址0x7F開始,一直到地址0,清0
C:0x08D2    E4       CLR      A         ;將A累加器清零
C:0x08D3    F6       MOV      @R0,A     ;將0放到0x7F的地址中
C:0x08D4    D8FD     DJNZ     R0,C:08D3 ;R0減1并判斷R0是否為0,若不為0,則跳轉(zhuǎn)到08D3,繼續(xù)清空內(nèi)存
C:0x08D6    7581C5   MOV      SP(0x81),#0xC5 ;初始化堆棧指針為0xC5
C:0x08D9    020607   LJMP     main(C:0607) ;跳轉(zhuǎn)到主函數(shù)開始執(zhí)行

19樓: >>參與討論
wang_jun_
我的startup生成的代碼明顯與你的不同
我的是給DPTR一個值(一般是#0003,但不同的程序會不一樣),然后去讀,再去JZ。你的KEIL版本?

20樓: >>參與討論
wswh2o
re
代碼:
  155:                 LJMP    ?C_START
C:0x0D6C    020DAA   LJMP     C:0DAA
C:0x0D6F    020636   LJMP     main(C:0636)
C:0x0D72    E4       CLR      A
C:0x0D73    93       MOVC     A,@A+DPTR
C:0x0D74    A3       INC      DPTR
C:0x0D75    F8       MOV      R0,A
C:0x0D76    E4       CLR      A



C:0x0DAA    90172E   MOV      DPTR,#0x172E
C:0x0DAD    E4       CLR      A
C:0x0DAE    7E01     MOV      R6,#0x01
C:0x0DB0    93       MOVC     A,@A+DPTR
C:0x0DB1    60BC     JZ       C:0D6F
C:0x0DB3    A3       INC      DPTR
C:0x0DB4    FF       MOV      R7,A
C:0x0DB5    543F     ANL      A,#0x3F


21樓: >>參與討論
wswh2o
好像在讀code區(qū)?
 
22樓: >>參與討論
computer00
我版本是UV2,C編譯器是7.06,匯編器是7.07
如果可以的話,你把所有文件發(fā)到我郵箱我來編譯下,看看是怎樣的。
你是不是用了外部RAM區(qū)?

郵箱地址:computer-lov在tom.com



參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教2051的功耗問題?
單片機(jī)能否工作一段時間后,自行鎖。
用市場最常見的315MHZ的發(fā)射塊和接受塊!
請各位幫我推薦一款單片機(jī)????
輸入阻抗問題
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號