TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: RedPic en 10 de Noviembre de 2007, 00:30:59
-
Que nadie se escandalice pero mi pregunta es a la vez simple, para quien sabe hacerlo, pero infinitamente compleja para quien no tiene ni idea.
En C si quisiera o quisiese enviar un Hola Mundo al canal serie o a un LCD pondría;
printf("Hola Mundo");
y todo solucionado. :mrgreen:
Podría también declarar una variable o constante como una matriz (arreglo) de caracteres sin especificarle el tamaño y asignarle el famosísimo texto:
char MyText[] = "Hola Mundo";
printf("%s",MyText);
y de nuevo tendría la solución sobre la mesa. :mrgreen:
Pero ¿Y en Pic Basic Pro? ¿Cómo podría hacer esto mismo? :shock:
-
Bueno Redpic veo que te has interesado por el basic, bueno al igual que c es muy facil. ESPERO QUE TE SIRVA O ME EXPLIQUE BIEN :-/
solo escribes la rutina
LCDOUT$FE,1,"HOLA MUNDO"
claro que antes de usar la instruccion debes configurar o en las palabras de basic definir donde estaran ubicadas las conecciones de la lcd y si bas a trabajarla a 8 bit's o solo 4
detalle de la instruccion LCDOUT
LCDOUT Item{ , Item...}
Muestra Items en un visor de cristal líquido inteligente (LCD). PBP soporta módulos LCD con un controlador Hitachi 44780 o equivalente. Estos LCD, usualmente, tienen un cabezal de 14 o 16 pins simples o duales en un extremo.
Si el signo (#) está colocado antes de un Item, la representación ASCII para cada dígito es enviada al LCD. LCDOUT también puede usar cualquiera de los modificadores usados con SEROUT2. Vea la sección de SEROUT2 para más información.
Un programa debe esperar, por lo menos, medio segundo antes de enviar el primer comando a un LCD. Puede tomar bastante tiempo a un LCD arrancar.
Los comandos son enviados al LCD, enviando un $FE seguido por el comando. Algunos comandos útiles se muestran en la siguiente tabla:
Comando
Operación
$FE, 1
Limpia visor
$FE, 2
Vuelve a inicio (comienzo de la primera línea)
$FE, $0C
Cursor apagado
$FE, $0E
Subrayado del cursor activo
$FE, $0F
Parpadeo del cursor activo
$FE, $10
Mueve cursor una posición hacia la izquierda
$FE, $14
Mueve cursor una posición hacia la derecha
$FE, $C0
Mueve cursor al comienzo de la segunda línea
INDICE
Note que hay un comando para mover el cursor al comienzo de la segunda línea en un visor de dos líneas. Para muchos LCD, los caracteres y líneas mostrados no son consecutivos en la memoria del visor - puede haber un salto entre las localizaciones. Para muchos visores 16x2, la primera línea comienza en $0 y la segunda, en $40. El comando:
LCDOUT $FE, $C0
hace que el visor comience a escribir caracteres en el principio de la segunda línea. Los visores 16x1 usualmente están formateados como visores de 8x2, con un salto entre las locaciones de memoria para los primeros y segundos caracteres de 8. Los visores de 4 líneas, también tienen un mapa de memoria no ordenado.
Vea la hoja de datos para el dispositivo LCD, en particular el que usted esté usando, para las locaciones de memoria de caracter y comandos adicionales.
LCDOUT $FE, 1, “Hello” ‘limpia el visor y muestra “Hello”
Para cambiar este seteo, coloque uno o más de los siguientes DEFINEs, todos en mayúsculas, en el comienzo de su programa PBP:
ACA DE DEJO LAS DEFINICIONES
‘ Setea el port de datos LCD
DEFINE LCD_DREG PORTB
‘ Setea el bit de comienzo de datos (0 o 4) si el bus es de 4-bit
DEFINE LCD_DBIT 0
‘ Setea el port LCD Register Select
DEFINE LCD_RSREG PORTB
‘ Setea el bit LCD Register Select
DEFINE LCD_RSBIT 4
‘ Setea el port LCD Enable
DEFINE LCD_EREG PORTB
‘ Setea el bit LCD Enable
DEFINE LCD_EBIT 5
‘ Setea el tamaño del bus LCD (4 o 8 bits)
DEFINE LCD_BITS 4
‘ Setea el numero de lineas en el LCD
DEFINE LCD_LINES 2
-
Muchas gracias microfull, está perfectamente claro ... :mrgreen:
¿Cómo podría asignar un texto a una Matriz (Arreglo o Array) de caracteres?
char MyText[] = "Hola Mundo";
Para poder utilizarlo repetidas veces desde distintos puntos de mi programa.
-
redpic si lo quieres hacer en poca basic plus con el compilador de proton+ primero tienes q definir el puerto que vas a utilizar y los pines xq el pic basic tiene su configiracion por default, lo inconveniente aki y en el pic basic pro de microcode estudio, es que utilizan dos puertos, el b para los datos y activar alguna del lcd, y el porta para el rs creo,,, lo mejor en ambos programas es definir uno solo para todo el lcd,,, ahh y te recimiendo usar solo un bus de 4 bits...
para el pic basic plus solo basta con poner print "hola mundo" y la linea dnd quieres q vaya, claro antes tienes qie definir un delayms para q el lcd inicialize y un delayms despues relativamente largo para q lo puedas visualizar :lol: :-) :-) :-)
-
Hola:
Que andas haciendo con el Basic Diego :shock: :shock: :shock:
Puedes usar Lookup para lo que necesitas:
LOOKUP PRO STD
LOOKUP Index,[Constant{,Constant...}],Var
The LOOKUP statement can be used to retrieve values from a table of 8-bit constants. If Index is zero, Var is set to the value of the first Constant. If Index is one, Var is set to the value of the second Constant. And so on. If Index is greater than or equal to the number of entries in the constant list, no action is taken and Var remains unchanged. The constant list can be a mixture of numeric and string constants. Each character in a string is treated as a separate constant equal to the character's ASCII value. Array variables with a variable index may not be used in LOOKUP although array variables with a constant index are allowed. Up to 255 (256 for 18Cxxx) constants are allowed in the list.
Example
FOR B0 = 0 TO 5 ' Count from 0 to 5
LOOKUP B0,["Hello!"],B1 ' Get character number B0 from string to variable B1
LCDOUT B1
NEXT B0 ' Do next character
-
Gio, entre otras cosas estoy modificando/depurando un programa de otra gente, hecho en Pic Basic Pro, y estoy acostumbrado a mis printf allá donde quiero ver el valor de una variable, o un aviso de que he pasado por alli o ... cosas así. Y no sabia poner ni ese Hola mundo de toda la vida. :mrgreen:
-
Hola:
Para visualizar variables puedes usar:
BIN DEC O HEX, que te permite visualizar en el LCD el valor en decimal, binario o hexadecimal de la variable, tambien "#" que mostrará el dato tal cual es.
Cualquier cosa estamos por aquí. :mrgreen:
-
RedPic multilanguage programmer :D
-
Si amigo Pedro, y la verdad es que lo primero que escribí para un PIC fue en Pic Basic Pro, de hecho fue también una modificación del mismo programa que ahora estoy intentando modificar (de nuevo). El proveedor que nos vendió el cacharro nos dio también los fuentes de su Firmware y mi amado jefe me encargó su mantenimiento, y como están en Pic Basic Pro pues aquí me tienes. :mrgreen:
Yo antes había trabajado mucho en ASM con los Motorola 68HC11 y antes también en ASM con los Intel 8085 y los Motorola 68000 y este fue el primer encargo que recibí para hacer cosas con los PIC´s. Y de ahí salió mi afición por estos maravillosos dispositivos. :mrgreen: :mrgreen: :mrgreen:
-
siempre se vuelve al primer amor :g) :D :D :D :D
-
Exactamente que necesitas hacer, Diego??
Asi revuelvo entre mis cacharros y te doy rutinas de display en PBP que hasta escriben en numeros grandes (como las que hice en C)... :mrgreen:
-
9 años no es nada, siempre se puede preguntar...DGLSOFT, me podrías decir como escribir caracteres grandes en un LCD...Me estoy quedando "chicato", y me gustaría aprender como hacerlo en PBP Pro...Empece hace apenas 3 semanas con este lenguaje, hace 15 años que uso ASM...Gracias por cualquier aporte o idea...Saludos !!!
-
Yo tengo una actualizada para el Basic del PSI, dejo el enlace por si te sirve y video.
Si logras sacarle partido más adelante puedo publicar otra versión que permite numeros negativos y decimales.
No la publico ahora porque está realizada con funciones y tendria que traducirla a subrutinas para hacerla más clara.
http://www.todopic.com.ar/foros/index.php?topic=14917.msg384712#msg384712