Autor Tema: Rutina LCD 4 Bits  (Leído 34456 veces)

0 Usuarios y 7 Visitantes están viendo este tema.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Rutina LCD 4 Bits
« Respuesta #30 en: 26 de Junio de 2006, 08:21:13 »
Para que sirve y que significa la instrucción:
   CBLOCK  0x0C
   ENDC


picto CBLOCK ENDC no es una instrucción en ensamblador sino mas bien una "directiva"

Con esto, le estas diciendo que todas las variables que declararas en el bloque , comenzarán a partir de 0x0C.

En vez de hacer un equ para cada variable, lo haces general.

Por ejemplo

Código: ASM
  1. TEMP1   equ     0x0C
  2.         TEMP2   equ     0x0D
  3.         TEMP3   equ     0x0E

Es idéntico a:

Código: ASM
  1. CBLOCK  0x0C
  2.         TEMP1
  3.         TEMP2
  4.         TEMP3
  5.         ENDC

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado LabPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 143
Re: Rutina LCD 4 Bits
« Respuesta #31 en: 26 de Junio de 2006, 12:14:34 »
Felicidades picto :-/ :-/, todo esfuerzo tiene recompensa, no cabe la menor duda :mrgreen:.

Saludos LabPIC
¡¡¡Viva México cabrones!!!

Desconectado picto

  • PIC16
  • ***
  • Mensajes: 106
Re: Rutina LCD 4 Bits
« Respuesta #32 en: 26 de Junio de 2006, 12:37:58 »
Buenas tardes EQUIPO!

Al final he conseguido pode escribir en la línea de abajo.

Ya he juntado el primer programa que hice (el de ir pulsando un pulsador por RE0 ye ir activando todas las salidas del puerto A, B yC) y ahora he conseguido manejar el LCD pues juntarlos  :D


He hecho que al iniciar el Pic muestre un mensaje de bienvenida y luego Pulsar P1 para activar salidas.
Pero pasa una cosa muy rara... cuando llegala ultima salida y le vuelvo a dar yo quiero que me muestre un mensaje de PRUEBAS OK y empieze de nuevo, pero el pic se resetea solo la llegar a ese sitio.

Es decir, pulso la ultima salida, me muestra el mensaje rotante y antes de que acabe de rotar se resetea el pic y empieza de nuevo...

Voy avanzando pero cada vez salen problemas nuevos.

Maunix, gracias por lo del Cblock.

Una cosa, como sé si tengo memoria en el pic o como sé en que posicion definir variables?

Gracias. Mañana colgaré una foto!

Saludos

Desconectado LabPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 143
Re: Rutina LCD 4 Bits
« Respuesta #33 en: 26 de Junio de 2006, 12:59:21 »
Con respecto a saber en que posicion definir variables, las data sheet muestran los bancos que tiene cada dispositivo, en esta información de los bancos, en la parte inferior de cada banco se muestra una parte que dice "General Purpose Register, estas direcciones estan alli para ser ocupadas por el usuario.

Por ejemplo el banco 0 del PIC16F877 tiene disponibles de la dirección 20h a la 7Fh para ser ocupadas por cualquier variable o constante que en determinado momento el usuario requiera, de igual manera el banco 1 tienes disponibles las direcciones A0h a EFh.

Aprovechando el momento, alguien puede decirme si las direcciones F0h a FFh del banco 1 del PIC16F877 pueden ser utilizadas por el usuario¿?, al igual que las que aparecen en los bancos 2 y 3 (por variables o constantes), es que no he entendido eso de accesses :mrgreen:.

Espero y no haberme y haberlos confundido esta vez. :roll:

Saludos LabPIC
¡¡¡Viva México cabrones!!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Rutina LCD 4 Bits
« Respuesta #34 en: 26 de Junio de 2006, 14:37:41 »
Hola LabPic.

Te debes estar refiriendo  a los: "accesses 70h-7Fh" que se ven en los Bancos 1,2 y 3 del 16F877.
Esto significa que las posiciones RAM 0x70h-0x7Fh pueden ser accedidas desde cualquiera de los cuatro bancos del pic. Es decir que no hay que cambiarse de banco para trabajar con estas variables.
Ejemplo: Si te refieres a la posicion RAM 0xF0, 0x170 ó 0x1F0 en realidad estas accediendo siempre a la 0x70.

A mi este acceso directo desde cualquier banco a estas variables me ha agilizado mucho los programas, ya que no hay que andar cambiando de banco para acceder a ellas, estes en el banco que estes, tienes asegurado que haras referencia a la mismas.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado LabPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 143
Re: Rutina LCD 4 Bits
« Respuesta #35 en: 26 de Junio de 2006, 14:46:22 »
O sea puedo declarar variables dentro de estas dos limites de direcciones y acceder en un programa a ellas sin importar en que banco me encuentre :mrgreen:. Es genial esto.

Gracias BrunoF :)

No cabe duda que todos los dias aprendemos algo nuevo

Saludos LabPIC
¡¡¡Viva México cabrones!!!

Desconectado picto

  • PIC16
  • ***
  • Mensajes: 106
Re: Rutina LCD 4 Bits
« Respuesta #36 en: 27 de Junio de 2006, 05:32:09 »
O sea puedo declarar variables dentro de estas dos limites de direcciones y acceder en un programa a ellas sin importar en que banco me encuentre :mrgreen:. Es genial esto.

Gracias BrunoF :)

No cabe duda que todos los dias aprendemos algo nuevo

Saludos LabPIC
Aprendiendo más cositas...

Por cierto como sé cuanto ocupa cada variable?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Rutina LCD 4 Bits
« Respuesta #37 en: 27 de Junio de 2006, 06:03:44 »
Es verdad, siempre se aprende algo nuevo  :mrgreen:
A que variables te referis picto?
TODOS los registros especiales(SFR), como los destinados a usos generales(GPR) como los registros de la EEPROM poseen una longitud de 8 bits(1 byte).
Es decir que el cada registro puede contener un valor entre 0 y 255( en sistema decimal).
Si te estas refiriendo a la cantidad de registros GPR en cada banco, pues en la tabla de Memory Organization del datasheet tienes el rango y cantidad para cada banco.
Saludos.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Rutina LCD 4 Bits
« Respuesta #38 en: 27 de Junio de 2006, 12:23:53 »
Por cierto como sé cuanto ocupa cada variable?

picto, si te refieres a las variables que tu defines en el código, bueno, solo tú podrás saber cuanto ocupan :)

Suena tonto, pero en ensamblador tienes que saber todo lo que haces.

Por eso si quieres definir una variable de 8 bits y otra variable de 16 bits lo haces 'salteandote' un posición de memoria cuando haces tus declaraciones de variables con los 'equs'

Ejemplo:
Código: ASM
  1. VAR8bits        equ     0x20
  2. VAR16bits       equ     0x21
  3. VARtmp8bits     equ     0x23

Fíjate que la posición de la primer variable es 0x20.

Luego la de la segunda variable es 0x21 porque la anterior variable la quiero de 8 bits

La variable Vartmp8bits se ubica a partir de 0x23 (2 posiciones más arriba) para permitirme que la variable VAR16bits sea de 2 bytes.

Luego por ejemplo en el código haces así.

Código: ASM
  1. incf    VAR16bits+0,f
  2.         incf    VAR16bits+1,f

De esa forma, en la segunda instrucción estamos seteando el byte 'alto' o 'high' de la variable.  (al menos así lo hago yo).

Nuevamente en ensamblador tu armas como te parezca.  Puedes hacer que el byte 0 sea tu low byte, o el high. 

Es tu decisión. 

De hecho la gente de intel hace eso, el low es el byte con posición de memoria mas baja y la gente de Motorola hace totalmente lo inverso.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado picto

  • PIC16
  • ***
  • Mensajes: 106
Re: Rutina LCD 4 Bits
« Respuesta #39 en: 28 de Junio de 2006, 04:41:47 »
Maunix, ya lo voy cogiendo... 16 bits = 2 posiciones 8 bits=1

8 bits x ejemplo 0x10
16 bits x ejemplo 0x11
16 bits x ejemplo 0x13


Tienes razón en cuanto en ensamblador hay que saber todo lo que se hace, y ese es mi problema, que soy novato y lo estoy aprendiendo por mi cuenta y con vuestra ayuda, y claro, habrá mil cosas que se me escapan.

Ahora mismo, el programa al llegar a un punto se resetea y vuelve a empezar y no sé porqué...

Saludos

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Rutina LCD 4 Bits
« Respuesta #40 en: 28 de Junio de 2006, 07:33:04 »
Hola picto, postea el programa si podes para poder ayudarte mas rapido. Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Rutina LCD 4 Bits
« Respuesta #41 en: 28 de Junio de 2006, 09:08:36 »
Ahora mismo, el programa al llegar a un punto se resetea y vuelve a empezar y no sé porqué...

Haz caso a lo que dice BrunoF, postea tu código.  Esto puede deberse a múltiples razones diferentes.

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado picto

  • PIC16
  • ***
  • Mensajes: 106
Re: Rutina LCD 4 Bits
« Respuesta #42 en: 28 de Junio de 2006, 09:15:59 »
Ahí vá!

Tengo que ir mejorandolo poco a poco.

Lo que hace es:
- Muestra mensajes bienvenida.
- Espera a que haya un 1 en RE0 para activar salidas (cada vez que pulso RE0) , así hasta activar todo el Puerto A,B, C, Re1 y Re2.
- Vuelve a esperar y si pulsamos de nuevo RE0 debería mostrar un mensaje que se desplaza y luego saltar a la etiqueta empieza.

El problema es que cuando activo todas las salidas, y vuelvo a darle a RE0 me muestra el mensaje pero antes de que acabe se resetea y empieza desde el principo...

A ver que os parece...

Seguro que hay muchas cosas mal... :P


Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Rutina LCD 4 Bits
« Respuesta #43 en: 28 de Junio de 2006, 09:40:47 »
Mirevision fugaz me suena a que tenes problemas con las tablas...problemas con el PCLATH(extenso tema, ya lo he explicado varias veces en el foro).

Move la parte de los Mensajes(las tablas) y ponelas debajo de:

   org     00h      ;Vector de reset (aqui viene el micro cuando arranca)
   goto    Inicio   ;inmediatamente lo mandamos a Inicio

proba y nos contas que tal te fue.
Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado picto

  • PIC16
  • ***
  • Mensajes: 106
Re: Rutina LCD 4 Bits
« Respuesta #44 en: 29 de Junio de 2006, 03:35:31 »
Probaré ahora, a ver si se soluciona.

Entonces copio las tablas de los mensajes arriba despues del ORG y el Goto Inicio?

Que es el pclath?

Saludos


 

anything