;********************************************************************* ; * ; PIC16C5X Tutorial 8: Register Banking * ; * ;********************************************************************* ;* TARGET PIC16C5X ;********************************************************************* ;* @version 0.1, 10 October 2001 ;* @author James Caska ;********************************************************************* ;* ;* Runs on Processors without change ;* ;* PIC16c57 ;* ;********************************************************************* #include list p=16C57 MappedAddress EQU 0FH UniqueAddress EQU 10H ORG .0 GOTO START Bank0 BCF FSR,5 BCF FSR,6 RETLW .0 Bank1 BSF FSR,5 BCF FSR,6 RETLW .0 Bank2 BCF FSR,5 BSF FSR,6 RETLW .0 Bank3 BSF FSR,5 BSF FSR,6 RETLW .0 DirectMappedBanks CALL Bank0 CLRF MappedAddress CALL Bank1 CLRF MappedAddress CALL Bank2 CLRF MappedAddress CALL Bank3 CLRF MappedAddress CALL Bank0 MOVLW .1 MOVWF MappedAddress CALL Bank1 MOVF MappedAddress,W XORLW .1 BTFSS STATUS,Z GOTO FAIL CALL Bank2 MOVF MappedAddress,W XORLW .1 BTFSS STATUS,Z GOTO FAIL CALL Bank3 MOVF MappedAddress,W XORLW .1 BTFSS STATUS,Z GOTO FAIL RETLW .0 DirectUniqueBanks CALL Bank0 MOVLW .1 MOVWF UniqueAddress CALL Bank1 MOVLW .2 MOVWF UniqueAddress CALL Bank2 MOVLW .3 MOVWF UniqueAddress CALL Bank3 MOVLW .4 MOVWF UniqueAddress CALL Bank0 MOVF UniqueAddress,W XORLW .1 BTFSS STATUS,Z GOTO FAIL CALL Bank1 MOVF UniqueAddress,W XORLW .2 BTFSS STATUS,Z GOTO FAIL CALL Bank2 MOVF UniqueAddress,W XORLW .3 BTFSS STATUS,Z GOTO FAIL CALL Bank3 MOVF UniqueAddress,W XORLW .4 BTFSS STATUS,Z GOTO FAIL RETLW .0 IndirectMappedBanks MOVLW MappedAddress MOVWF FSR CALL Bank0 CLRF INDF CALL Bank1 CLRF INDF CALL Bank2 CLRF INDF CALL Bank3 CLRF INDF CALL Bank0 MOVLW .1 MOVWF INDF CALL Bank1 MOVF INDF,W XORLW .1 BTFSS STATUS,Z GOTO FAIL CALL Bank2 MOVF INDF,W XORLW .1 BTFSS STATUS,Z GOTO FAIL CALL Bank3 MOVF INDF,W XORLW .1 BTFSS STATUS,Z GOTO FAIL RETLW .0 IndirectUniqueBanks MOVLW UniqueAddress MOVWF FSR CALL Bank0 MOVLW .1 MOVWF INDF CALL Bank1 MOVLW .2 MOVWF INDF CALL Bank2 MOVLW .3 MOVWF INDF CALL Bank3 MOVLW .4 MOVWF INDF CALL Bank0 MOVF INDF,W XORLW .1 BTFSS STATUS,Z GOTO FAIL CALL Bank1 MOVF INDF,W XORLW .2 BTFSS STATUS,Z GOTO FAIL CALL Bank2 MOVF INDF,W XORLW .3 BTFSS STATUS,Z GOTO FAIL CALL Bank3 MOVF INDF,W XORLW .4 BTFSS STATUS,Z GOTO FAIL RETLW .0 START MOVLW .0 TRIS PORTC CLRF PORTC MAIN CALL DirectMappedBanks CALL DirectUniqueBanks CALL IndirectMappedBanks CALL IndirectUniqueBanks PASS MOVLW .1 MOVWF PORTC SLEEP FAIL MOVLW .2 MOVWF PORTC SLEEP END