TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: elgarbe en 12 de Mayo de 2013, 21:12:21
-
Hola, tengo el siguente código:
;--------------------------------------------------------------------------------
;**********************programa principal******************************
;--------------------------------------------------------------------------------
inicio
banksel TRISA ;Pasamos al banco 1
;bsf STATUS,RP0
;bcf STATUS,RP1 ;seleccionar banco 1
movlw 15h
movwf TRISA
movlw 02h
movwf TRISB
movlw 01h
movwf TRISC
bcf STATUS,RP0
clrf PORTA
clrf PORTB
clrf PORTC
bsf STATUS,RP0
bcf ADCON1,PCFG3
bsf ADCON1,PCFG2
bsf ADCON1,PCFG1
bsf ADCON1,PCFG0 ;puerto a como digital
bcf OPTION_REG,NOT_RBPU
bsf OPTION_REG,INTEDG
bcf STATUS,RP0 ;vuelve a banco 0
bcf INTCON,INTF ;borrar bandera de interrupcion
bcf INTCON,PEIE ;deshabilitar interrupcion por perifericos
bcf INTCON,T0IE ;deshabilitar interrupcion por timer
bcf INTCON,INTE ;deshabilitar interrupcion por INT
bcf INTCON,RBIE ;deshabilitar interrupcion rbif
bcf INTCON,GIE ;deshabilitar interrupciones generales
En donde al principio quiero elegir el Banco 1, probe con las dos opciones, la del banksel y con la de modificar los bits del STATUS, pero siempre me aparece este mensaje al compilar:
Message[302] xxx\PIC2.ASM 153 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] xxx\PIC2.ASM 155 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] xxx\PIC2.ASM 157 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] xxx\PIC2.ASM 163 : Register in operand not in bank 0. Ensure that bank bits are correct.
las líneas corresponden a las instrucciones despues de querer pasar al banco 1...
Sugerencias?
Saludos y gracias
-
a mi me aparecia tambien lo mismo ,sin embargo lo que yo hice fue verificar el datasheet del micro en mi caso un 16f877a es:
RP1 RP0 (STATUS<6:5>)
00 → Bank0
01 → Bank1
10 → Bank2
11 → Bank3
Hasta donde tengo entendido eso son solo warnings que lanza el mpasm,lo que podrias hacer es utilizar la directiva
errorlevel -302 o otro uso es la misma directiva pero con +numerodecodigo.
Haz simulado en proteus tu codigo?.
-
Lo probe directamente en un micro y no me anda, supuse que era por eso, voy a reducir el código al mínimo y voy a ver si anda aunque salga ese warning.
Saludos
-
tienes comentado la seleccion de los bancos no sera por eso ;-)
-
tienes comentado la seleccion de los bancos no sera por eso ;-)
No!, no es como suponés, esas instrucciones con punto y coma ';'
;bsf STATUS,RP0
;bcf STATUS,RP1 ;seleccionar banco 1
fueron reemplazadas por el
banksel TRISA ;Pasamos al banco 1
Elgarbe, en tu lugar me olvido de los bsf STATUS,RP0
y le doy a los banksel
De lo contrario terminarás loco...
Hace como te indicaron, solo son avisos, del compilador, pero a veces esos avisos te hacen caer en que tenés un error, al principio del projecto, mejor no suprimir los avisos.
Porque no corres tu código en el 'Debug' del mplab, 'observando' cada variable, en un 'paso a paso'
Es la única forma de encontrar errores que no saltan a primer vista.
-
Lo probe directamente en un micro y no me anda, supuse que era por eso, voy a reducir el código al mínimo y voy a ver si anda aunque salga ese warning.
Saludos
y que se supone que debería hacer el programa?, porque ese segmento de código que posteo no hace nada visible, tampoco nos dice que micro esta queriendo programar, si esta armando el hardware o no, como le sugirieron mas arriba puede usar el simulador del MPLABX y ver si los registros se colocan en los valores que usted desea
Saludos
-
Bueno, tenían razón, eran solo avisos (a mi entender un error del compilador, ya que no me toma la seleccion correcta del banco). Lo probe en un micro y salio andando.
El tema es que al principio no andaba para nada y pensé que venía por ahí el problema, ya que no tenia ningun error. El tema venía por el MCLR, es un 16F876A y por lo que veo (es la primera vez que lo uso, en realidad estoy modificando un proyecto de un amigo) no tiene la opcion de deshabilitar el MCLR y yo no lo tenía a +Vdd. Le puse una resistencia a positivo, ignore ese mensaje del compilador y anduvo todo.
Puede ser que ese micro no tenga oscilador interno??????
Saludos!
-
Bueno, tenían razón, eran solo avisos (a mi entender un error del compilador, ya que no me toma la seleccion correcta del banco). Lo probe en un micro y salio andando.
El tema es que al principio no andaba para nada y pensé que venía por ahí el problema, ya que no tenia ningun error. El tema venía por el MCLR, es un 16F876A y por lo que veo (es la primera vez que lo uso, en realidad estoy modificando un proyecto de un amigo) no tiene la opcion de deshabilitar el MCLR y yo no lo tenía a +Vdd. Le puse una resistencia a positivo, ignore ese mensaje del compilador y anduvo todo.
Puede ser que ese micro no tenga oscilador interno??????
Saludos!
esos micros no traen oscilador interno, tiene que tener cuidado con eso al fijar sus bits de configuracion
Saludos