Just had quick look. Aren't you going to run out of stack ? (that certainly causes a ding)
 
Haven't checked through the whole thing but this jumps out at me !!!
 

Chase
  Goto Inttmr  ; Initialise timer
  BTFSS PORTB,7
  CALL Loop
  BTFSS INTCON,2 ; If timer has overflowed than skip next
  CALL Chase <************************************************************HERE
  GOTO Step

 

 

Regards,

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mike Cornelius                  Internet: mike@bytethis.com.au
Byte This Interactive           Phone:    +61 2 9310-2157
PO Box 1342 Strawberry Hills    FAX:      +61 2 9319-3948
NSW 2012 Australia              URL:      http://www.bytethis.com.au
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-----Original Message-----
From: pic microcontroller discussion list [mailto:PICLIST@MITVMA.MIT.EDU]On Behalf Of Mathew Cohen
Sent: Saturday, 16 October 1999 9:32
To: PICLIST@MITVMA.MIT.EDU
Subject: Still no solution to the problem in the following script?

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

mmjcohen@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