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
;**************************************************************************
; 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