Autor Tema: Manejo de bits en pic 16f877a  (Leído 1717 veces)

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

Desconectado JSTA

  • PIC10
  • *
  • Mensajes: 2
Manejo de bits en pic 16f877a
« en: 20 de Junio de 2013, 20:22:15 »
Hola amigos del foro...bueno ya son mas de 5 años q aprendi a programar pics y los deje..y por cuestiones de trabajo y facilidades q brindan e vuelto a ellos...me olvidado un poco el programar y ahora me encontré con un problema espero me puedan ayudar...quiero controlar leds rgb desde labview...como sabemos la intensidad de cada uno de los colores va de 0-255(8bits)...quiero controlar cada una de las intensidades de los rgb, el problema es que tengo que enviar 3 bytes desde labview, es decir un byte para cada color para controlarlos de 0-255 cada uno, aparentemente desde labview los envio correctamente, en el virtual terminal de proteus recibo los 3 bytes enviados desde labview, ahora en el pic solo me recibe el ultimo byte, osea solo el de un color, en este punto es donde tengo el problema como hago para recibir completamente los 3 bytes (24 bits) y separarlos en 3 cadenas de 8 bits para poder controlar por separado cada color, el pic q uso es el 16f877a y el pic lo estoy programando en mikroC PRO, si me pueden dar alguna idea de como hacer esto les agradezco por su colaboración y si estoy mal de igual manera serán bienvenidas las sugerencias.

Gracias

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: Manejo de bits en pic 16f877a
« Respuesta #1 en: 21 de Junio de 2013, 00:39:59 »
Hola.
Estaria bueno que subieras el codigo fuente de tu programa y el esquema electronico que estas usando.
Decis que solo recibis el ultimo byte. ¿No sera que estas sobreescribiendo los bytes que envias y por eso te queda el ultimo?.
Tenes que ir salvando los bytes que recibis en distintas variables.
Trata de, en tu proximo mensaje, mejorar tu redaccion. Utiliza puntos ( punto aparte, punto seguido), para poder interpretar mejor tu idea.  Salvo los puntos suspensivos no has puesto un punto.
Saludos.

Desconectado JSTA

  • PIC10
  • *
  • Mensajes: 2
Re: Manejo de bits en pic 16f877a
« Respuesta #2 en: 21 de Junio de 2013, 14:41:18 »
Gracias Darkman por tu respuesta y sugerencias.

Este es el código que estoy utilizando para recibir los datos, los almaceno en la variable lectura.

long lectura;

void main()
{
     trisb=0x00;
     trisd=0x00;
     portb=0;
     portd=0;
     UART1_Init(9600);
     delay_ms(100);
     while(1)
     {
        if(UART1_Data_Ready()==1)
        {
           lectura = UART1_READ();
           portb = lectura;
        }
     }
}


La idea es la siguiente, quisiera sacar dos señales por los pwm del pic y una señal por el puerto B el cual lo tengo configurado como salida; y a la salida de este puerto tengo un arreglo de resistencias R-2R para sacar el valor analógico.

Pero antes de sacar por el pwm y el puerto B, quiero separar los 3 bytes, e intentado guardarlos en distintas variables.
A la variable lectura e tratado de recorrerle los bits y hacer una operación AND

dato1=(lectura>>8) & 0xFF
dato2=(lectura>>16) & 0xFF

tampoco me ha funcionado

Antes de sacar por el pwm, estoy probando sacar dos bytes, uno por el puerto B y otro por el D con el mismo arreglo de resistencias, pero lo que consigo es sacar por los dos puertos el ultimo byte recibido...

Es evidente que necesito separar los 3 bytes que envío desde labview, pero no logro hacerlo, la verdad me olvidado un poco el programar pics, así que cualquier sugerencia sera bienvenida

Gracias.