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