TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Trust en 11 de Noviembre de 2007, 05:40:32
-
Hola, estoy comunicando el pc con una placa que lleva un 16f876 y un lcd y quiero mostrar los caracteres que envio desde el pc en el lcd. Uso VB 6 en el pc y le envio al pic caracteres y el pic muestra en el lcd numeros y no letras. Se que debo de usar la instruccion Chr de Mikrobasic para obtener la letra a partir del numero pero no se como hacerlo. He probado ya muchas cosas y no me funciona. Aqui os pongo el codigo.
program Lcd_puetoserie
dim dato_recibido as byte
dim textolcd as char[20]
main:
adcon1=7
portc=0
porta=0
trisc=%10000000
usart_init(9600)
while true
if usart_data_ready=1 then
dato_recibido=usart_read
bytetostr(dato_recibido,textolcd)
lcd_config(porta,5,3,2,1,portc,0,1,5)
lcd_cmd(lcd_clear)
lcd_cmd(lcd_cursor_off)
lcd_out(1,1,textolcd)
end if
wend
end.
Saludos.
-
Hola Trust el comando CHR funciona asi:
Chr
Prototipo: sub function Chr(dim code as byte) as char
Regresa: Regresa un carácter asociado con el carácterespecifico de code
Descripción: Regresa un carácter asociado con el carácter especifico de code. Números de 0 a
31 son los códigos ASCCI no imprimibles
Esta es una rutina inline; el código se genera en el lugar de la llamada, para que la
llamada no esté contra el límite de llamadas anidadas.
Requiere: Nada
Ejemplo: c = Chr(13) ' regresa un retorno de carro (enter)
Te dejo este enlace para que descargues una parte del manual de MKB en español (http://mx.geocities.com/navaismo/MANESMKB.zip)
Y sino en la web del master Nocturno encontraras el mirror de este mismo manual.
-
Hola Navaismo, excelente traduccion del manual de Mikrobasic. Buen trabajo. :)
Estoy haciendo varias pruebas para llegar a saber como hacerlo pero de momento no me funciona.
Pongo un codigo de los muchos que he probado.
program Prueba_Chr_6
dim n as char
dim cc as byte
dim lcd as char[20]
main:
adcon1=7
portc=0
porta=0
trisc=%10000000
usart_init(9600)
while true
lcd_config(porta,5,3,2,1,portc,0,1,5)
lcd_cmd(lcd_clear)
lcd_cmd(lcd_cursor_off)
n=99
cc=chr(n)
bytetostr(cc,lcd)
lcd_out(1,1,lcd)
wend
end.
le asigno a n el valor 99 y hago una conversion para que el lcd pueda mostrar ese valor en la pantalla. Pues este codigo me da error de compilacion, en cambio si a la linea cc=chr(n) la cambio por cc=chr(99) si que puedo compilar.
No se si es que estoy declarando las variables con un tipo de datos incorrecto o que pero la cuestion es que he probado muchos tipos de variables y sigue sin funcionarme. :(
El objetivo que quiero conseguir es que desde el pc usando VB6 le envie una letra y mas adelante palabras y que estas me aparezcan en el lcd. Parece sencillo pero no me sale y he estado buscando mucho en el foro y no encuentro ningun codigo que realice la funcion que yo busco.
Tambien he estado buscando en el foro de Mikroe y encontre un tema con un usuario que tiene el mismo problema que yo pero no hay respuesta.
Saludos.
-
Hola ya lo tengo solucionado. No hace falta usar la instruccion chr que no he conseguido hacerla funcionar metiendole una variable por ejemplo: cc=chr(x), pero si funciona asi cc=chr(99). pero clara la segunda opcion no me vale porque es una constante y lo que yo voy a enviar nunca va a ser datos fijos sino variables. :D
En vez de todo este lio de conversiones he utilizado esto: lcd_chr(1,1,dato_recibido), la variable es la que se obtiene directamente de usart_read.
Aqui os pongo el codigo:
program Lcd_puetoserie
dim dato_recibido as byte
main:
adcon1=7
portc=0
porta=0
trisc=%10000000
usart_init(9600)
while true
if usart_data_ready=1 then
dato_recibido=usart_read
lcd_config(porta,5,3,2,1,portc,0,1,5)
lcd_cmd(lcd_clear)
lcd_cmd(lcd_cursor_off)
lcd_chr(1,1,dato_recibido)
end if
wend
end.
Ahora ya se enviar y recibir letras sueltas y voy a probar a enviar palabras.
:mrgreen:
Saludos.