Autor Tema: ayuda con codigo  (Leído 1788 veces)

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

Desconectado zidfrid23

  • PIC10
  • *
  • Mensajes: 27
ayuda con codigo
« en: 29 de Diciembre de 2009, 19:47:23 »
Hola amigos foreros.

Bueno despues de muchas lidias en mi comienzo con el pic12f675, parece que las cosas estan mejorando un poco. Ahora tengo un inconveniente pero este ya es de pura programacion.
Veran estoy desarrollando un pequeño circuito que es capas de leer datos de usuario mas especificamente dos codigos de los cuales uno es de 32 bits y el otro es de 16 bits, para luego retransmitirlo en un orden especifico sin importar cual dato ingrese primero.
hasta el momento he logrado leer y retransmitir los 48 datos con exito, pero no en el orden que deseo ya que tengo un bufer fifo como podran ver mas adelante en mi codigo.
ahora aqui es en donde necesito la ayuda ya que en base al codigo que tengo quisiera saber como puedo identificar cuando me ingresa primero el dato de 16 bits para almacenarlo en su respectivo bufer y cuando ingresa el de 32 bits para almacenarlo en el bufer de 32 posiciones, esto es con el fin de posterior mente transmitir siempre de primero el de bufer de 16.
este es el codigo que he hecho al momento:
Código: [Seleccionar]
#include "C:\Users\Alejandro\Documents\PIC\POLLIN\pol.h"

#define dato0  output_high(pin_a1)
#define dato1  output_high(pin_a0)
#define max_dat 32

int buf[max_dat];
int bufpin[16];
void tx(void);
void main()
{
   int  a=0;
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);

   output_a(0x00);
   SET_TRIS_A(0x0C);
   while(1)
   {
     if(input_state(pin_a2))
     {
       buf[a]=0;
       a++;
       DELAY_MS(3);
     }
       if(input_state(pin_a3))
     {
       buf[a]=1;
       a++;
       DELAY_MS(3);
     }
     if(a==max_dat)
     {
      tx();
      a=0;
     }
   }
}


void tx(void)
{
  int p=0;
  for(p;p<max_dat;p++)

   {
        if(buf[p] == 1)
        {
          dato1;
          DELAY_US(50);
          output_low(pin_a0);
        }
        else
        {
          dato0;
          DELAY_US(50);
          output_low(pin_a1);
        }
        DELAY_MS(1);
   }
}

Bueno espero me hayan entendido y de antemano muchas gracias por su ayuda y tiempo dedicado a este hilo.

Desconectado zidfrid23

  • PIC10
  • *
  • Mensajes: 27
Re: ayuda con codigo
« Respuesta #1 en: 05 de Enero de 2010, 16:26:32 »
Hola amigos.
bueno les comento que ya solucione el problema con el codigo. lo solucione con los timer del micro, si a alguien le interesa el codigo me comenta y con gusto lo subo.

saludos y gracias por el interes amigos.

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: ayuda con codigo
« Respuesta #2 en: 06 de Enero de 2010, 14:43:14 »
Hola amigos.
bueno les comento que ya solucione el problema con el codigo. lo solucione con los timer del micro, si a alguien le interesa el codigo me comenta y con gusto lo subo.

saludos y gracias por el interes amigos.

seria bueno que primero explicaras mejor el problema y nos indicaras que tipo de comunicación haces, luego seria bueno que compartieras el código para futuros problemas parecidos!


 

anything