Autor Tema: Proteus y su hyperterminal  (Leído 10441 veces)

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

Desconectado gabalfal

  • PIC10
  • *
  • Mensajes: 8
Proteus y su hyperterminal
« en: 29 de Mayo de 2009, 12:22:29 »

Hola: Estuve "Programando" en niple, y arme un pequeño programa que cuando apreto el boton que esta conectado a Ra0 se escribe en el virtual terminal del proteus "UNO" y si apreto el Ra1 se escribe "DOS" y asi con 4 botones. (Todo esto con el pic 16f627 con Usart)

Mi problema es cuando intento en vez de escribir un texto, escribir una variable o un valor fijo (o sea un numero), no pasa nada. no aparece nada en el terminal virtual, ni se inmuta.

Alguien sabe que esta mal? el terminal virtual imita un puerto serie no?

Saludos Gonzalo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Proteus y su hyperterminal
« Respuesta #1 en: 29 de Mayo de 2009, 12:55:25 »
Creo que solo simula caracteres ASCII, por eso no recibe nada nada.
No contesto mensajes privados, las consultas en el foro

Desconectado gabalfal

  • PIC10
  • *
  • Mensajes: 8
Re: Proteus y su hyperterminal
« Respuesta #2 en: 30 de Mayo de 2009, 13:46:15 »
y no se puede adaptar para que reciba numeros?
En todos lados leo que usan otros hyperterminales... pero se puede en una simulacion usar un hyperterminal externo al programa?

Saludos

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Proteus y su hyperterminal
« Respuesta #3 en: 30 de Mayo de 2009, 13:57:08 »
tenes q pasar el numero a formato ASCII ,asi el hyperterminal te los muestra
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado gabalfal

  • PIC10
  • *
  • Mensajes: 8
Re: Proteus y su hyperterminal
« Respuesta #4 en: 30 de Mayo de 2009, 20:58:42 »
Es verdad, hice la prueba y funciono :) Ahora mi problema es, hay alguna manera de trasnformar automaticamente los numeros a ascci? Yo como comente uso niple, y la verdad no encontre forma alguna :S.

Si realizo el circuito fisico, y lo conecto a la pc, tampoco toma los numeros? o sea tambien tiene que ser ascci para mostrarlos?

Saludos

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Proteus y su hyperterminal
« Respuesta #5 en: 30 de Mayo de 2009, 21:21:13 »
mmm si ...puedes montar el circuito y conetarlo al pc y en proteus por medio de  COMPIM y el hyperterminal puedes ver q es lo q envia el pic. Creo q para pasar a ascii solo debes sumar 30 al dato y listo. entonces puedes hacer un algoritmo para q antes de enviarlo al pc se le sume 30

saludos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Proteus y su hyperterminal
« Respuesta #6 en: 30 de Mayo de 2009, 21:23:04 »
Ahora mi problema es, hay alguna manera de trasnformar automaticamente los numeros a ascci? ?

probaste con la función de C:     atoi();
o con la operacion:                    entero=Variable_Char-'0';

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Proteus y su hyperterminal
« Respuesta #7 en: 30 de Mayo de 2009, 21:56:46 »
Si realizo el circuito fisico, y lo conecto a la pc, tampoco toma los numeros? o sea tambien tiene que ser ascci para mostrarlos?

Saludos
Puedes usar Siow y en este no tendrás problemas.
No contesto mensajes privados, las consultas en el foro

Desconectado gabalfal

  • PIC10
  • *
  • Mensajes: 8
Re: Proteus y su hyperterminal
« Respuesta #8 en: 30 de Mayo de 2009, 22:11:10 »
mmm si ...puedes montar el circuito y conetarlo al pc y en proteus por medio de  COMPIM y el hyperterminal puedes ver q es lo q envia el pic. Creo q para pasar a ascii solo debes sumar 30 al dato y listo. entonces puedes hacer un algoritmo para q antes de enviarlo al pc se le sume 30

saludos

Pasa que eso sirve si le sumo 30 a un registro con 1 solo digito,

Pero si el registro es de 15 y le sumo 30, la pantalla muestra algun otro simbolo del codigo ascci.

Ahora mi problema es, hay alguna manera de trasnformar automaticamente los numeros a ascci? ?

probaste con la función de C:     atoi();
o con la operacion:                    entero=Variable_Char-'0';

No se usar C todavia :(
Pero para que sirve esa funcion?



Suki: El siow se puede configurar, para trabajar con el Isis proteus o me sirve solo si realizo el circuito "fisicamente"?

 Saludos

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Proteus y su hyperterminal
« Respuesta #9 en: 30 de Mayo de 2009, 22:38:38 »
el siow solo te sirve si montas el circuito, tambien hay otro buen programa para experimentar con el puerto serie terminal de bray
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Proteus y su hyperterminal
« Respuesta #10 en: 31 de Mayo de 2009, 00:15:17 »
este algoritmo lo podes utilizar en varios lenguajes de programación:

entero=Variable_Char-'0';

vos pones en la Variable_char el byte que recibis del hiperterminal. Este es un caracter ASCII. Si a ese valor le restas el caracter AscII '0', el resultado es el número entero.

Ej. Por el hiperterminal llega el caracter '3' ( equivale al ASCII = 51). A esto le restas el ASCII '0' ( equivale al ASCII = 48)
Si restas 51 - 48  = 3, y lo tenes como un entero.

Desconectado gabalfal

  • PIC10
  • *
  • Mensajes: 8
Re: Proteus y su hyperterminal
« Respuesta #11 en: 31 de Mayo de 2009, 21:39:57 »
pero si yo tengo un numero de 2 caracteres, seria muy complicado a nivel codigo usar un registro para cada uno, y asi poder hacer la funcion de restar el valor asci. O me estoy equivocando?

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Proteus y su hyperterminal
« Respuesta #12 en: 31 de Mayo de 2009, 23:07:56 »
No se si te entendí bien. Cualquier cosa corregime.

Si vienen los dos caracteres por el hiperterminal, vos lees dos veces, uno para el primer carácter y una vez para el segundo (porque vos lo que lees en realidad son bytes codificados en ASCII).
Cada valor lo podes convertir de la forma:

decena = Variable_Char_2-‘0’         ó lo que es lo mismo: decena=Variable_Char_2-48;
unidad = Variable_Char_1-'0';         ó lo que es lo mismo: unidad=Variable_Char_1-48;

y después interpretas el valor del entero de dos dígitos asi:

Valor_Entero= decena*10+unidad;
« Última modificación: 01 de Junio de 2009, 08:47:14 por alexysar »

Desconectado fjalex

  • PIC18
  • ****
  • Mensajes: 405
    • Proteus - Hubor
Re: Proteus y su hyperterminal
« Respuesta #13 en: 01 de Junio de 2009, 07:35:56 »
No sé si estás programando en ensamblador o en C, pero si utilizas C, puedes utilizar la función printf().

Un saludo.

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Proteus y su hyperterminal
« Respuesta #14 en: 01 de Junio de 2009, 11:07:51 »
No sé si estás programando en ensamblador o en C, pero si utilizas C, puedes utilizar la función printf().

No se me ocurre cómo podes transformar caracteres que llegan por el puerto serie en enteros con la función que  decís. Podrías explicarte mejor?