5x系列芯片的復(fù)位入口問題
有關(guān)5x系列的復(fù)位入口位于可用程序空間的最高地址 , 在那里寫上一條GOTOMAIN讓程序跳到主程序入口。如:
ORGPIC16C54
GOTOMAIN
這些都沒有錯(cuò)誤。很多書上也是這么寫的。
其實(shí),你可以根本不用管5x系列復(fù)位入口的不同,所有程序都從000位置開始寫。以57為例,其復(fù)位地址是7FFH,空片時(shí)此處為FFF,對(duì)應(yīng)指令是"xorlw0xff",當(dāng)這條指令執(zhí)行后,PC加一,為8000H?不是,PC變成000H,在57中PC只有11位長(zhǎng)。類似的,所有5x系列在復(fù)位后于程序空間最高處執(zhí)行一條無關(guān)緊要的指令后,回到000處繼續(xù)執(zhí)行。
為什么推薦大家這么做?主要是在一些有片上內(nèi)部RC振蕩的單片機(jī)內(nèi),如12C508,16C505等,在出廠前做了振蕩器頻率校準(zhǔn),校準(zhǔn)值被放在復(fù)位入口出,以指令“movlwxx”形式存放。這時(shí),如果你再在該處寫指令GOTOMAIN,就會(huì)產(chǎn)生沖突。而且,這樣寫的程序移植性得到提高,程序排列不用做任何修改(OPTION/TRIS例外),就可以移植到PIC其它系列的單片機(jī)中。