elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Resolver problemas con tablas 6 bits.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] Ir Abajo Respuesta Imprimir
Autor Tema: Resolver problemas con tablas 6 bits.  (Leído 19,653 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Resolver problemas con tablas 6 bits.
« Respuesta #30 en: 11 Septiembre 2010, 06:06 am »

Hola:

Pues no, no funciona, se comporta todo como desde el principio. Por lógica debería funcionar.

Código
  1. Principal
  2. movf PORTC,W ; Lee los sensores.
  3. andlw b'00111111' ; Máscara para quedarse con el valor de los sensores.
  4. addwf PCL,F ; Salta a la configuración adecuada.
  5. Configuracion0
  6. call LCD_Linea2EnBlanco
  7. movlw PAGINA_00 ; Lee a partir de la dirección 00 de esta página
  8. call M24LC256_Mensaje_a_LCD ; de la memoria.
  9. goto ActivaSalida
  10. Configuracion1
  11. call LCD_Linea4EnBlanco
  12. movlw PAGINA_01 ; Lee a partir de la dirección 01 de esta página
  13. call M24LC256_Mensaje_a_LCD ; de la memoria.
  14. goto ActivaSalida
  15.  

En l alibrería LCD_4BIT.INC he colocado las instrucciones que me dijiste.
Código
  1. LCD_Linea1EnBlanco
  2. call LCD_Linea1   ; Sitúa el cursor al principio de la línea 1.
  3. call LCD_LineaEnBlanco  ; Borra la línea.
  4. call LCD_Linea1   ; Regresa el cursor al principio de la línea.
  5. return
  6.  
  7. LCD_Linea2EnBlanco    ; Similar que la anterior.
  8. call LCD_Linea2
  9. call LCD_LineaEnBlanco
  10. call LCD_Linea2
  11. return
  12.  
  13. LCD_Linea3EnBlanco   ; Similar que la anterior.
  14. call LCD_Linea3
  15. call LCD_LineaEnBlanco
  16. call LCD_Linea3
  17. return
  18.  
  19. LCD_Linea4EnBlanco   ; Similar que la anterior.
  20. call LCD_Linea4
  21. call LCD_LineaEnBlanco
  22. call LCD_Linea4
  23. return
  24.  

Las cosas que debería funcionar por lógica a veces sorprende.


En línea

Tokes

Desconectado Desconectado

Mensajes: 140


Ver Perfil
Re: Resolver problemas con tablas 6 bits.
« Respuesta #31 en: 11 Septiembre 2010, 18:00 pm »

Mi buen Meta:

Te faltaron algunas intrucciones:

Código
  1.    movf   PORTC,W
  2.    andlw  b'00111111'
  3.    addwf  PCL,F
  4.    goto    Configuracion0   ; Te faltaron estas instrucciones.
  5.    goto    Configuracion1
  6.    goto    Configuracion2
  7.            .
  8.            .
  9.            .

Pero ya está corregido. Te lo envié por si las dudas.

             Saludos.


En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Resolver problemas con tablas 6 bits.
« Respuesta #32 en: 12 Septiembre 2010, 03:54 am »

Que despiste.

Muchas gracias, voy hacer más pruebas, parece que ahora si funciona.

Saludo.

Edito:

Uffffffffffff, algo me impresiona y e decepciona el asm. Espero no recurrir al C18 o CCS por culpa de esta tontería.

He colocado los mensajes en las configuraciones de la EEPROM. Precisamente me sale este aviso:

Código
  1. IF (FinTabla > 0xFF)
  2. ERROR "¡CUIDADO!: La tabla ha superado el tamaño de la página de los"
  3. MESSG "primeros 256 bytes de memoria ROM. NO funcionará correctamente."
  4. ENDIF
  5.  

He dejado de usar las tablas para no tener que cambiar de niveles, por eso uso la EEPROM y descubro que con o sin EEPROM externa me pasa lo mismo.

¿Al final debo usar el truco para superar los 256 bits por obligación aunque use la EEPROM externa?
« Última modificación: 12 Septiembre 2010, 07:56 am por Meta » En línea

Tokes

Desconectado Desconectado

Mensajes: 140


Ver Perfil
Re: Resolver problemas con tablas 6 bits.
« Respuesta #33 en: 13 Septiembre 2010, 04:45 am »

Hola, Meta:

Me parece que los mensajes todavía los tienes en la programación ocupando espacio. Debes quitarlos, ya que no los ocupas puesto que ahora están en la 24LC256.

Si ya los quitaste, entonces la directiva IF FinTabla > 0xFF... debes ponerla después de los goto's, más o menos así:

Código
  1.   movf   PORTC,W
  2.   andlw  b'00111111'
  3.   addwf  PCL,F
  4.   goto    Configuracion0
  5.   goto    Configuracion1
  6.   goto    Configuracion2
  7.           .
  8.           .
  9.           .
  10.   goto    ConfiguracionX
  11. FinTabla
  12.  
  13.   IF (FinTabla > 0xFF)
  14.    ERROR "CUIDADO!: La tabla ha superado el tamaño de la página de los"
  15.   MESSG "primeros 256 bytes de memoria ROM. NO funcionará correctamente."
  16.   ENDIF
  17.  
  18. Configuracion0
  19.    ; Código de la configuracion 0.
  20.  
  21. Configuracion1
  22.   ; Código de la configuracion 1.
  23.  
  24.         .
  25.         .
  26.         .
  27.  

Con respecto a lo de usar lenguaje C, pues te vendría mejor, ya que el compilador gestiona la memoria tanto de datos como de programa y no hay que seleccionar bancos ni páginas de programa como en ensamblador.

Si aún haciendo lo que te dije sigue marcando error, entonces sí debes usar el "truquito" para poner la tabla.

             Saludos.
« Última modificación: 13 Septiembre 2010, 04:48 am por Tokes » En línea

Páginas: 1 2 3 [4] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayundeme a resolver esto problemas :(
Programación C/C++
alkimista1988 1 1,984 Último mensaje 14 Julio 2011, 22:53 pm
por El_Java
problemas con ide no se como resolver poo
Programación C/C++
gorge2004 1 1,898 Último mensaje 8 Marzo 2012, 18:31 pm
por darkvidhack
Problemas de seguridad en HTML5 webrtc permite resolver tu ip local
Bugs y Exploits
WHK 6 7,953 Último mensaje 2 Septiembre 2016, 06:20 am
por EFEX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines