Autor Tema: COMO CAMBIO DE BANCOS DE MEMORIA  (Leído 2143 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado minchomania

  • PIC10
  • *
  • Mensajes: 8
COMO CAMBIO DE BANCOS DE MEMORIA
« en: 15 de Febrero de 2005, 21:32:00 »
UTILIZO A ORDEN BANKSEL Y AL COMPILAR NO SALA NUNCA DE BANCO 0
QUE CONFIGURCION HAY QUE UTILIZAR EJ:


ESTE EJEMPLO LA SAQUE DE UN LIBRO


;LEER Y ESCRIBIR LA EEPROM      


      LIST  P=16F676
      #INCLUDE "P16F676.INC"



      CBLOCK 0X20
   CONTA, TECLA, LOOPS, LOOPS1, LOOPS2, LOOPS3
   UNIDAD,DECENAS, PRIMERO, SEGUNDO, DATO
      ENDC

;-------------------------------------
         ORG         00
         CALL      3FFH
         BANKSEL      OSCCAL
         MOVWF      OSCCAL
         GOTO      INICIO
         ORG         05
;------------------------------------
; SECCION PARA LAS SUBRUTINAS
;------------------------------------
VER         CALL      MOSTRAR
RETARDO      MOVLW      D"250"
         MOVWF      LOOPS
TOP1      MOVLW      D"10"
         MOVWF      LOOPS1
TOP         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         DECFSZ      LOOPS1
         GOTO      TOP
         DECFSZ      LOOPS
         GOTO      TOP1
         DECFSZ      CONTA,1
         GOTO      VER
         RETLW      00
RET1      MOVLW      D"1"      ;RETARDO DE UN SEGUNDO PARA LA
         MOVWF      LOOPS2      ;MULTIPEXACION DE LA VISUALIZACION
TOP3      MOVLW      D"110"
         MOVWF      LOOPS3
TOP2      NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         DECFSZ      LOOPS3
         GOTO      TOP2
         DECFSZ      LOOPS2
         GOTO      TOP3
         RETLW      00
MOSTRAR      MOVF      SEGUNDO,W   ;RUTINA PARA MOSTRAR EL
         MOVWF      PORTC      ;SEGUNDO NUMEROS
         BSF         PORTC,4
         CALL      RET1
         BCF         PORTC,4
         MOVF      PRIMERO,W   ;RUTINA PARA MOSTRAR EL   
         MOVWF      PORTC      ;PRIMER NUMERO
         BSF         PORTC,5
         CALL      RET1
         BCF         PORTC,5
         RETURN
BINBCD      CLRF      DECENAS      ;RUTINA PARA PASAR DE
         CLRF      UNIDAD      ;BINARIO A BCD
         MOVLW      .10
REPITE      SUBWF      DATO,1
         BTFSS      STATUS,0
         GOTO      SUM
         INCF      DECENAS
         GOTO      REPITE
SUM         ADDWF      DATO,0
         MOVWF      UNIDAD
         RETURN
LEER      BSF         EECON1,0   ;RUTINA DE LEER EN LA MEMORIA
         MOVF      EEDATA,W   ;EEPROM DE DATOS
         BANKSEL      PORTA
         RETURN
ESCRIBIR   BSF         EECON1,2   ;RUTINA DE ESCRIBIR EN LA MEMORIA      
         BANKSEL    PIR1      ;EEPROM DE DATOS
         BSF         PIR1,EEIF
         BANKSEL      EECON2
         MOVLW      055
         MOVWF      EECON2
         MOVLW      0AAH
         MOVWF      EECON2
         BSF         EECON1,2
ESPERA
         BANKSEL      PIR1
         BTFSS      PIR1,EEIF
         GOTO      ESPERA
         BCF         PIR1,EEIF
         BANKSEL      EECON1
         BCF         EECON1,2
         BANKSEL      PORTA
         RETLW      00
INICIO                        ;INICIO DEL PROGRAMA PRINCIPAL
         BANKSEL      PORTA
         MOVLW      D"7"      ;DESABILITO LOS COMPARADORES Y DEJO
         MOVWF      CMCON      ;LOS PINES DEL PUERTO A COMO I/O
         BANKSEL      TRISA      ;DIGITALES
         CLRF      ANSEL      ;DESTIVO LOS CONVERSORES
         MOVLW      B"111111"   ;CONFIGURO EL PUERTO A COMO ENTRADA
         MOVWF      TRISA
         CLRF      TRISC      ;CONFIGURO PUERTO C COMO SALIDA
         BANKSEL      PORTA
START      MOVF      PORTA,W      ;LEO EL PUERTO A
         MOVWF      DATO      ;LLEVO LO LEIDO EN A AL REGISTRO DATO
         CALL      BINBCD      ;CONVIERTO DE BINARIO A BCD EN
         MOVF      UNIDAD,W   ;LOS REGISTROS UNIDAD Y DECENAS
         BANKSEL      EEDATA      ;CAMBIO A BANCO DE EEDATA
         MOVWF      EEDATA      ;CARGO W EN EEDATA, ESTE ES EL
         MOVLW      D"8"      ;DATO QUE SE ESCRIBIRA EN LA POCISION
         MOVWF      EEADR      ;8 DE LA MEMORIA DE DATOS
         CALL      ESCRIBIR   
         MOVF      DECENAS,W   ;ESCRIBO TAMBIEN EL CONTENIDO DE RE-
         BANKSEL      EEDATA      ;GISTRO DECENAS EN LA POCISION 09
         MOVWF      EEDATA      ;DE LA MEMORIA DE DATOS CARGANDOLO
         MOVLW      D"9"      ;PREVIAMENTE EN E REGISTRO EEDATA
         MOVWF      EEADR
         CALL      ESCRIBIR
         MOVLW      D"8"      ;LEO LOS DATOS QUE ESCRIBI EN LAS
         BANKSEL      EEADR      ;POSICIONES 8 Y 9 DE LA MEMORIA
         MOVWF      EEADR      ;DE DATOS PARA MOSTRAROS
         CALL      LEER
         MOVWF      PRIMERO
         BANKSEL      EEADR
         MOVLW      D"9"
         MOVWF      EEADR
         CALL      LEER
         MOVWF      SEGUNDO
         CALL      MOSTRAR
         BANKSEL      PORTA
         MOVLW      D"40"
         MOVWF      CONTA
         CALL      RETARDO
         GOTO      START
         END
   

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: COMO CAMBIO DE BANCOS DE MEMORIA
« Respuesta #1 en: 16 de Febrero de 2005, 07:57:00 »
Mira el registro STATUS, verás q ahí hay bits cuya función es la selección de banco.

Por ejemplo:

bsf STATUS,5 pone a 1 el bit 5 del registro status del pic... es decir: selecciona el banco 1.
con bcf STATUS,5 vuelves al banco 0

¿te aclaras?

Desconectado minchomania

  • PIC10
  • *
  • Mensajes: 8
RE: COMO CAMBIO DE BANCOS DE MEMORIA
« Respuesta #2 en: 16 de Febrero de 2005, 21:31:00 »
gracias por contestar quisiera saber que otros compiladores de asm hay fuera del del microchip

que configuraciones hay que tener

por favor ensaya con el codigo de arriba a ver si te pasa lo mismo

Eso hago pero al compilarlo me sale esto.....

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:Archivos de programaMPLAB IDEMCHIP_Toolsmpasmwin.exe" /q /p16F819 "LEER Y ESCRIBIR EEPROM.asm" /l"LEER Y ESCRIBIR EEPROM.lst" /e"LEER Y ESCRIBIR EEPROM.err"
Warning[215] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 4 : Processor superseded by command line.  Verify processor symbol.
Message[301] C:ARCHIVOS DE PROGRAMAMPLAB IDEMCHIP_TOOLSP16F676.INC 32 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 18 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[305] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 35 : Using default destination of 1 (file).
Message[305] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 37 : Using default destination of 1 (file).
Message[305] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 52 : Using default destination of 1 (file).
Message[305] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 54 : Using default destination of 1 (file).
Message[305] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 74 : Using default destination of 1 (file).
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 79 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 80 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 83 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 88 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 90 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 91 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 98 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 106 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 108 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 109 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 116 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 118 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 122 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 124 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 128 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:MPASMWIN370PROYECTOSLEER Y ESCRIBIR EEPROM.ASM 133 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Loaded C:MPASMWIN370ProyectosLEER Y ESCRIBIR EEPROM.COD
BUILD SUCCEEDED: Wed Feb 16 22:27:33 2005

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: COMO CAMBIO DE BANCOS DE MEMORIA
« Respuesta #3 en: 16 de Febrero de 2005, 23:34:00 »
Ok, lo q estas leyendo es una serie de advertencias del MPLAB, kieren decir que tu proyecto funciona (esta bien escrito) pero q faltan algunas declaraciones q podrian afectar el funcionamiento.

En primer lugar tienes el mensaje 215, este error refiere a que estas usando un encabezado (include file) distinto al procesador que tienes especificado en el proyecto, si t fijas encontraras que el mpasmwin esta compilando codigo para el 16F819 mientras el encabezado que usas es el de 16F676. La solucion es declarar bien el procesador en el mpasmwin, esto lo haces en opciones de proyecto.

El mensaje 305 refiere a un error tipico de cuando escribes en asm, no es realmente algo de alta importancia pero si un detalle q debes tener en cuenta, refiere a que debes escribir un destino al resultado de la operacion, por ejemplo:

decfsz reg ; este codigo generara un mensaje 305 porq no has definido a dond va el resultado, la forma correcta es


decfsz reg, 1 ;este guardara el resultado de la operacion en el mismo registro reg
o
decfsz reg, 0; este guarda el resultado en W

El compilador usa de forma predeterminada el registro mismo (el primer ejemplo), pero revisa tu codigo, no vaya a ser q necesites q los resultados tengan q ir a w...

Finalmente el mensaje 302, solo t indica q estas trabajando (leyendo y escribiendo) con los registros de la pagina 1 y no con la pagina 0, solo es un recordatorio, pero debes tenrlo en cuenta en caso de q hayas olvidado setear el bit 5 de status en 0, si todos tus registros de trabajo estan en la pagina 0. Si trabajas con la pagina 1 entonces revisa bien la forma en q funciona tu programa a fin de evitar q tengas un problema con tu proyecto.

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: COMO CAMBIO DE BANCOS DE MEMORIA
« Respuesta #4 en: 18 de Febrero de 2005, 05:46:00 »
Mu bien explicado fenix RebotadoRebotadoRebotadoRebotadoRebotado