Thanks Richard,
What device did you run this on?
After being unseccessfull in integrating your version into my code I tried to get your code (I removed some oscillator specific stuff to match my device) to compile for the 57Q43 but it won't.
It can't fit bcnt/dcnt into bank 0 so I tried various banks. Bank 5 works but I still get [ASM WARNING: ASM-SCROLL.ASM (411) : Invalid RAM location specified]
Line 411 in the .asm listing is banksel 0 in the NBNC routine.
I know it says warning and not error but the description sounds bad enough :-)
See, this is what I mean....
For reference, here's what I'm trying to compile for the 57Q43:
Code:
DEFINE OSC 64
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 7
DEFINE DEBUG_BAUD 9600
DEFINE DEBUG_MODE 0
LATB.7=1
bcnt VAR BYTE bank0
dcnt VAR BYTE bank0
iteration VAR word
ANSELB=0
ANSELC=0
ANSELA=0
dspbuff var byte[380]
clear
trisc = %01111111
TRISB = %01111111
TRISA = %11111111
pause 1000
debug 13,10,"ready",13,10
LATc.7=0
;38x8 bits wide 10 bits high
dspbuff[379]=$c0
dspbuff[37]=$c0
main:
LATc.7=1; trigger oscilloscope
gosub rotate_r
LATc.7=0
debug 13,10,dec iteration
debug 13,10,bin8 dspbuff[379]," " ,bin8 dspbuff[378]," " ,bin8 dspbuff[343] ," ",bin8 dspbuff[342]
debug 13,10,bin8 dspbuff[37] ," " ,bin8 dspbuff[36] ," " ,bin8 dspbuff[1] ," ",bin8 dspbuff[0]
pause 200
iteration=iteration+1
goto main
rotate_r: ' pic18 100uS
asm
banksel _bcnt ;ROW
movlw 10 ;10 rows
movwf _bcnt
movlw high (_dspbuff)
movwf FSR0H
movlw low (_dspbuff)
movwf FSR0L
movlw 123 ;BUFFER SIZE low byte (380-1) 36 displays + 2 outside of display * 10-1
ADDWF FSR0L
movlw 1 ;BUFFER SIZE high byte (380)
ADDWFC FSR0H
MOVLW 38 ;36 displays + 2 outside of display
NROW
movwf _dcnt
bcf STATUS, C
Ncol
rrcf POSTDEC0 ,f ;PER COLUMN
DECFSZ _dcnt ,F
BRA Ncol
BNC NBNC
bsf PLUSW0,7 ;max displays would be 127 to use plusw
NBNC
DECFSZ _bcnt ,F
BRA NROW
banksel 0
return
endasm
Bookmarks