Gracias Oldkami por tu rápida respuesta. No obstante, cambiando el origen de la interrupcion a la direccion 100 hex, funciona, no sé por qué no me deja empezar desde la direccion 5 que se supone que es la posicion libre inmediatamente despues del vector de interrupción.
además , he intentado añadir "pagesel" en el vector de interrupcion para saltar a la ISR y me dice que no cabe. No será pq sólo hay una palabra de espacio para el mapeo del vector de int. en la 04?
Bueno, más cositas. Tengo un programa que hace una cuenta binaria de 3 bits (Típico contador Johnson, o como se diga) y la saco por tres líneas del puerto B y ok, pero la saco en RA2,3 y 4 y no lo consigo. El hecho es que siempre que activo un bit del puerto A se desactiva el que hubiere anteriormente, ¿inquietante eh? (con RA4 no pasa esto, es la única que fluctua debidamente sin que la afecten las demás)
He tenido en cuenta el drenador abierto de RA4, pero se ve que la inversión del dato se resuelve de forma transparente al usuario, ya que tengo un pull-up a la salida y el dato sale tal y como lo escribo en el puerto, no invertido como esperaba que lo hiciese.
Por cierto RA2,3 y 4 van colgadas a la entrada de un MUX 8 a 1, y éste funciona aparentemente bien.
Aquí os dejo un pequeño ejemplo que ilustra el fallo mediante una barrido de tres lineas del puerto, parece simple, pero ocurre lo que os he mencionado.
MAIN CODE ; Zona de Programa
inicio:
;-------Configuración de puertos-------
movlw b'00000011' ; como salida, y ent RA0, RA1 y RA3 b'00001011'
banksel TRISA ; configurando el puerto B
movwf TRISA
movlw b'00001001' ; como salida, y ent RB0 y RB3 -> b'00001001'
banksel TRISB ; configurando el puerto B
movwf TRISB
movlw b'00001010' ;
banksel PORTB
movwf PORTB
movlw b'00000000' ; como salida
banksel TRISC ; configurando el puerto B
movwf TRISC
movlw b'00000000' ; como salida
banksel TRISD ; configurando el puerto B
movwf TRISD
movlw b'00000000' ; como salida
banksel TRISE ; configurando el puerto B
movwf TRISE
banksel PORTA
;movwf PORTA
bcf PORTA,BIT2
bcf PORTA,BIT3
bcf PORTA,BIT4 ; limpiamos puerto
salta
call delay_1s
bsf PORTA,BIT3
call delay_1s
bsf PORTA,BIT2
call delay_1s
bsf PORTA,BIT4
call delay_1s
goto salta
No sé si es un fallo software, porque he cambiado por varios micros, incluso usé un 648A programado (sin usar el modo depuración) y pasa lo mismo. Tengo un header que me he hecho yo que convierte 40 a 18 pines, pero esto tampoco falla, ya que la placa destino tiene como os digo 18 pines, y allí es donde usé el 648.
Los pines restantes de los puertos del 877, como veis los configuro como salida, recomendacion que te da Microchip cuando no los vas a usar.
Bueno, o bien encomiendo a San Silicio, aunque me gustaría que me comentarais sobre esto en breve.
Saludito para todos, y gracias de nuevo