> Mathew Cohen wrote:
>
> Thankyou to the people who who have given suggestions and help for the
> following code, but no body has solved the problem of the " not in
> bank 0 " error that it generates. Also the code does not work when
> burn to a pic. When simulated it works fine until it hit a loop. Then
> MPLAB starts "dinging" me (making an error sound) I am not sure what
> thats for I think it is to do with the loop being endless.??/
>
> So can someone stop the error and give a definite answer as to why the
> code is counted as an error. Also why the code does not work on the
> pic.
>
> The error is in the "Inttmr" routine.
>
> Thanks (the code is below)
>
> Mathew Cohen
>
>
.....mmjcohenKILLspam
@spam@nsw.bigpond.net.au
>
> ;**************************************************************************
> ; INOUT.ASM
> ;
> ;This is a simple programs that pass the value entered into portb to
> porta.
> ;If portb bit 7 is high it does a little led chase.
> ;
> ;
> ;
> ;**************************************************************************
>
> LIST P=16F84, R=DEC
>
> include "p16f84.inc"
> __FUSES _CP_OFF & _WDT_OFF & _HS_OSC ;Set default config
>
> ;--------------------------------------------------------------------------
>
> ScratchPadRam EQU 0x20
>
> ;--------------------------------------------------------------------------
> ; Variables
> ;--------------------------------------------------------------------------
>
> dipvals EQU ScratchPadRam+0
> step1 EQU ScratchPadRam+1
> step2 EQU ScratchPadRam+2
> step3 EQU ScratchPadRam+3
> step4 EQU ScratchPadRam+4
> Steppos EQU ScratchPadRam+5
> Temp EQU ScratchPadRam+6
>
> ;--------------------------------------------------------------------------
> ; Program Code
> ;--------------------------------------------------------------------------
> ;--------------------------------------------------------------------------
> ; Set the reset vector here. If you are using a PIC16C5X device,
> use:
> ; ORG <last program memory location>
> ; Otherwise, use:
> ; ORG 0
> ;--------------------------------------------------------------------------
>
> ORG 0
> GOTO Start
>
> ;--------------------------------------------------------------------------
> ; Main Program
> ;--------------------------------------------------------------------------
>
> ORG H'50'
>
> Start
> MOVLW B'00000001'
> MOVWF step1
> MOVLW B'00000010'
> MOVWF step2
> MOVLW B'00000100'
> MOVWF step3
> MOVLW B'00001000'
> MOVWF step4
> CALL InitPortA ; Sets up porta to be outputs
> CALL InitPortB ; Sets up portb to be inputs
> CALL Chase
> CALL Loop ; Pass value on portb to porta
>
> ;--------------------------------------------------------------------------
>
> Loop
> MOVF PORTB,w ; Read Portb into w register
> MOVWF PORTA ; Move W into Porta
> BTFSC W,7 ; If bit 7 is set goto Chase
> CALL Chase
> CALL Loop
>
> ;--------------------------------------------------------------------------
> InitPortA
> BSF STATUS,RP0 ; Select bank 1
> MOVLW 0 ; Clears w register
> MOVWF PORTA ; Set port a as outputs
> BCF STATUS,RP0 ; Select page 0
> MOVWF PORTA
> RETURN
>
> ;--------------------------------------------------------------------------
> InitPortB
> BSF STATUS,RP0 ; Select bank 1
> MOVLW 255 ;
> movwf PORTB ; Set port a as outputs
> bcf STATUS,RP0 ; Select page 0
> RETURN
>
> ;--------------------------------------------------------------------------
>
> Chase
> Goto Inttmr ; Initialise timer
> BTFSS PORTB,7
> CALL Loop
> BTFSS INTCON,2 ; If timer has overflowed than skip next
> CALL Chase
> GOTO Step
>
> ;--------------------------------------------------------------------------
>
> Inttmr
> BCF STATUS,RP0
> CLRF TMR0 ; Clear timer
> BCF INTCON,INTF ; Clears the interupt if set
> BSF STATUS,RP0
> movlw B'00000111' ; Set prescaler to 255
> movwf OPTION_REG ; Option reg
> BCF STATUS,RP0
> RETURN
>
> ;--------------------------------------------------------------------------
>
> Step
> BCF INTCON,2 ; Clear the interupt
> BCF STATUS,RP0 ; Select page 0
> INCF Steppos,1
> MOVF Steppos,w
> MOVWF Temp
> MOVLW 1
> SUBLW Temp
> BTFSC STATUS,2
> MOVLW step1
> MOVWF PORTA ; Output Step 1
> MOVF Steppos,w
> MOVWF Temp
> MOVLW 2
> SUBLW Temp
> BTFSC STATUS,2
> MOVLW step2
> MOVWF PORTA ; Output Step 2
> MOVF Steppos,w
> MOVWF Temp
> MOVLW 3
> SUBLW Temp
> BTFSC STATUS,2
> MOVLW step3
> MOVWF PORTA ; Output Step 3
> MOVF Steppos,w
> MOVWF Temp
> MOVLW 4
> SUBLW Temp
> BTFSC STATUS,2
> MOVLW step4
> MOVWF PORTA ; Output Step 4
> MOVLW 0
> MOVWF Steppos
> RETURN
>
>
>
> END