學(xué)習(xí)PIC單片機(jī)數(shù)據(jù)存儲(chǔ)器時(shí),不僅要了解各寄存器單元的功能,而且還應(yīng)在編制程序時(shí)會(huì)調(diào)用它們完成編程目的。下面筆者將以編程實(shí)例說明它們的用途。
2間接尋址寄存器INDF和FSR 位于PIC單片機(jī)數(shù)據(jù)存儲(chǔ)器的最頂端、地址00單元(地址碼最小)的間接尋址寄存器INDF是一個(gè)空的寄存器。它只有地址碼,在物理上不是一個(gè)真正的寄存器。它的功能常常與寄存器FSR(又稱寄存器選擇寄存器)配合工作,實(shí)現(xiàn)間接尋址目的。初學(xué)專用寄存器INDF和FSR時(shí),記住下述的邏輯關(guān)系對(duì)編程是有幫助的:使用寄存器INDF的任何指令,在邏輯上都是對(duì)寄存器FSR所指向的RAM進(jìn)行訪問,即對(duì)INDF(本身)進(jìn)行間接尋址(訪問),讀出的應(yīng)是FSR內(nèi)容。以下的一個(gè)簡(jiǎn)單程序是用間接尋址方式清除RAM地址20h~2Fh單元寄存器內(nèi)容的實(shí)例。
MOVLW 0x20 ;20h→w,對(duì)指向RAM單元的指針
;初始化
MOVWF FSR ;20h→FSR,F(xiàn)SR指向RAM
LOOP CLRF INDF ;清除INDF,即清除FSR內(nèi)容所指
;向的單元20h→2Fh
INCF FSR ;(指針)FSR內(nèi)容加1
BTFSS FSR,4;判別(指令)FSR的D3位,若為零
??;執(zhí)行下條循環(huán)指令;若為1間跳
?。粓?zhí)行。
GOTO LOOP;跳轉(zhuǎn)到LOOP(循環(huán))
CONTINUE… ;已完成功能,繼續(xù)執(zhí)行程序
由上述指令看出,因寄存器INDF和FSR的配合工作,達(dá)到了對(duì)RAM地址20h~2Fh的寄存器清零目的。由于完成上述功能的指令數(shù)很少,這就會(huì)簡(jiǎn)化指令系統(tǒng),使PIC單片機(jī)的指令集得以精簡(jiǎn)。
說明:上述各條指令易于看懂,所以無需再?gòu)?fù)述,但其中的一條判別指令“BTFSS FSR,4”比較關(guān)鍵。該條指令是保證題設(shè)中要選擇RAM地址單元上限值2Fh時(shí),其對(duì)應(yīng)的二進(jìn)制數(shù)為00101111B,此時(shí)FSR的第4位恰為1。所以上述指令中用了一條判斷指令;BTFSS FSR,4,判斷FSR的D3位值是否為1,若不為1而為0,則執(zhí)行下條循環(huán)指令GOTO LOOP,使FSR中的地址不斷加1,直到寄存器FSR的D3位為1時(shí),這時(shí)它的內(nèi)容代表的RAM地址恰為2Fh。
由此可見,學(xué)習(xí)PIC單片機(jī)數(shù)據(jù)存儲(chǔ)器中的專用寄存器時(shí),不必要對(duì)每個(gè)產(chǎn)品的專用寄存器進(jìn)行學(xué)習(xí),只需先學(xué)習(xí)它們的共同點(diǎn),然后選中一個(gè)產(chǎn)品型號(hào)的專用寄存進(jìn)行詳細(xì)分析,有條件時(shí)進(jìn)行必要的相關(guān)指令操作,就能完全掌握單片機(jī)技術(shù)?! ~?/p>
成都 丁錦源
---------------------------------------飛江科技 www.wastewaterengineeringjobs.com-------------
|