BANKSEL Example
Directives highlighted in this example are:
Program Functional Description
This program demonstrates the utility of the
banksel
directive. This directive generates the appropriate code to set/clear the RP0 and RP1 bits of the STATUS register.Commented Code Listing
list p=16f877 ;Select the device.
#include <p16f877.inc> ;Include standard header file
;for the selected device.
group1 udata H'20' ;group1 data stored at locations
;starting at H'20'(bank 0).
group1_var1 res 1 ;group1_var1 located at H'20'.
group1_var2 res 1 ;group1_var2 located at H'21'.
group2 udata H'A0' ;group2 data stored at locations
;starting at H'A0'(bank 1)
group2_var1 res 1
group2_var2 res 1
RST CODE H'0' ;The code section named RST
;is placed at H'0'. The
;instruction 'goto start' is
;placed in code section RST
goto start ;Jumps to the location labelled
;'start'.
INTRT CODE H'4' ;The code section named INTRT is
;placed at H'4'. The instruction
;'goto service_int' is placed in
;code section INTRT.
goto service_int ;Jumps to the location labelled
;'service_int'.
PGM CODE ;This is the beginning of the
;code section named PGM. It is a
;relocatable code section since
;no absolute address is given
;along with directive 'CODE'.
start
banksel group1_var1 ;This directive generates code
;to set/clear bank select bits
;RP0 & RP1 of STATUS register
;depending upon the address of
;group1_var1.
clrf group1_var1
clrf group1_var2
banksel group2_var1 ;This directive generates code
;to set/clear bank select bits
;RP0 & RP1 of STATUS register
;depending upon the address of
;group2_var1.
clrf group2_var1
clrf group2_var2
goto $
service_int
retfie
end
Microchip Technology Inc. Microchip's Web Site Voice: (480) 792-7200 Fax: (480) 899-9210 Microchip's E-mail Address |