Autor Tema: Instruccion Chr en Mikrobasic  (Leído 3378 veces)

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

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Instruccion Chr en Mikrobasic
« 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.

Código: [Seleccionar]
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.



Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Instruccion Chr en Mikrobasic
« Respuesta #1 en: 11 de Noviembre de 2007, 19:36:27 »
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

Y sino en la web del master Nocturno encontraras el  mirror de este mismo manual.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: Instruccion Chr en Mikrobasic
« Respuesta #2 en: 11 de Noviembre de 2007, 22:14:45 »
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.

Código: [Seleccionar]
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.


« Última modificación: 11 de Noviembre de 2007, 22:17:05 por Trust »

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: Instruccion Chr en Mikrobasic
« Respuesta #3 en: 12 de Noviembre de 2007, 15:07:17 »
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:


Código: [Seleccionar]
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.



 

anything