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