5x系列芯片的复位入口问题
有关5x系列的复位入口位于可用程序空间的最高地址,在那里写上一条GOTO MAIN让程序跳到主程序入口。如:
ORG PIC16C54
GOTO MAIN
这些都没有错误。很多书上也是这么写的。
其实,你可以根本不用管5x系列复位入口的不同,所有程序都从000位置开始写。以57为例,其复位地址是7FFH,空片时此处为FFF,对应指令是"xorlw 0xff",当这条指令执行后,PC加一,为8000H?不是,PC变成000H,在57中PC只有11位长。类似的,所有5x系列在复位后于程序空间最高处执行一条无关紧要的指令后,回到000处继续执行。
为什么推荐大家这么做?主要是在一些有片上内部RC振荡的单片机内,如12C508,16C505等,在出厂前做了振荡器频率校准,校准值被放在复位入口出,以指令“movlw xx”形式存放。这时,如果你再在该处写指令GOTO MAIN,就会产生冲突。而且,这样写的程序移植性得到提高,程序排列不用做任何修改(OPTION/TRIS例外),就可以移植到PIC其它系列的单片机中。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。