Autor Tema: pasar datos de eeprom a hyperterminal con hitech  (Leído 12271 veces)

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

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: pasar datos de eeprom a hyperterminal con hitech
« Respuesta #30 en: 08 de Febrero de 2011, 13:50:30 »
he colocado esta linea, y da resultado, incluso, ya me lee más rápido.... :D

gb:   if (RC7 == 0) {input = Getch_s();}else{goto gb;}

y despues segun el caracter, actuo...


  No son muy elegantes las estructuras con goto, en lugar de ello tenés las estructuras while y do-while. El ejemplo que mostrás arriba, hecho con while quedaría...

Código: C
  1. while (1) // loop infinito
  2. {
  3.   if (RC7 == 0) input = Getch_s(); // si es una sola linea no son necesarias las llaves ( { } ) para determinar el bloque
  4. }

nota: me quedaria estudiar la libreria mas a fondo y averiguar para introducir ese cambio directamente en la libreria. y por otra parte, descubir como recibir una cadena. pero me doy por satisfecho por el momento, porque gracias a ti, he aprendido a nejar un lcd y el rs232, en esta semana...


  El cambio lo tendrías que introducir en la función getch_s(); Esta es la implementación de dicha función sin el cambio

Código: C
  1. unsigned char getch_s(void)
  2.   {
  3.     unsigned char contador = 7;
  4.     unsigned char letra = 0;
  5.  
  6.     DelayReceivebit;
  7.     do
  8.     {
  9.       if (RxPin == 1) letra += 128;
  10.       letra = letra >> 1;
  11.       contador--;
  12.       DelaySendBit;
  13.     }
  14.     while (contador > 0);
  15.     DelaySendBit;
  16.     return letra;
  17.   }

  Y creo que el cambio podría ser poner lo siguiente justo después de declarar las variables y justo antes de la línea "DelayReceivebit;"

Código: C
  1. while (RxPin == 1); // mientras que el pin este en 1 no hago nada y me quedo esperando

  Con dicho cambio, la función getch_s() quedaría a la espera que llegue un caracter,

  Por otra parte en la última versión que subí de la librería existe la función getst_s(), que justamente recibe una cadena de caracteres que termine con "CarrierResturn" que sería el caracter correspondiente al enter
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado LAFUMAT

  • PIC16
  • ***
  • Mensajes: 148
Re: pasar datos de eeprom a hyperterminal con hitech
« Respuesta #31 en: 09 de Febrero de 2011, 03:04:55 »
ok, me apunto los cambios y creo que ya es suficiente. si mas adelante surjen cosas las preguntaré.

ahora voy a asimilar todo esto.

y seguro que mirare otras librerias, par ir aprendiendo....

se admiten sugerencias...

Pero megustria aprender a manejar los TIMERs, hacer un reloj en tiempo real (que hay cosas que no entiendo)...

pero no se en  que hilo encuadrarlas para que quede claro que es para el hitech y pic16, pues creo yo que los que trabajamos con pic16 nos tienen un poco abandonados...


saludos y muchas gracias

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: pasar datos de eeprom a hyperterminal con hitech
« Respuesta #32 en: 09 de Febrero de 2011, 09:20:13 »

Pero megustria aprender a manejar los TIMERs, hacer un reloj en tiempo real (que hay cosas que no entiendo)...

pero no se en  que hilo encuadrarlas para que quede claro que es para el hitech y pic16, pues creo yo que los que trabajamos con pic16 nos tienen un poco abandonados...


  En C es muy difícil que puedas hacer un reloj en tiempo real con los TIMERs del PIC, ya que uno no tiene un control preciso del tiempo que tarda cada instrucción. Si lo hicieras en ASM seguramente se podría llegar a algo razonable.

  Básicamente el uso de los TIMERs es similar tanto para PIC16 como para PIC18, hay un hilo de ejemplos para PIC16F648 que quizá tenga lo que estás buscando.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas


 

anything