RESPONDIENDO A UN SOLO BIT

unsigned short dato;   // Se declara “dato” para almacenar un byte u octeto
void main() {
  ANSEL=ANSELH=0x00;      // Deshabilita entradas analógicas,  pone todo en digital
  PORTB=0x00;    // Pone a 0 todos los bits del registro RB
  TRISB=0x00;      // Habilita todos los bits de RB como salidas
  // Inicializa módulo USART (8 bit, 9600 bauds, sin bit de paridad)
  Uart1_Init(9600);
  do { // Ciclo infinito para checar continuamente la transmisión
    if (Uart1_Data_Ready()) {   // Si un byte es recibido
      dato = Uart1_Read();         // Lee el byte recibido del pin Rx del PIC en “dato”
       switch (dato){   // Verifica el valor del byte recibido por el PIC
         case 'A': PORTB.F0=1; break;  // Si el dato es “A” pone 1 en el bit 0 de RB
         case 'R': PORTB.F1=1; break;  // Si el dato es “R” pone 1 en el bit 1 de RB
         case 'V': PORTB.F2=1; break;  // Si el dato es “V” pone 1 en el bit 2 de RB
         case 'a': PORTB.F0=0; break;    // Si el dato es “a” pone 0 en el bit 0 de RB
         case 'r': PORTB.F1=0; break;      // Si el dato es “r” pone 0 en el bit 1 de RB
         case 'v': PORTB.F2=0; break;    // Si el dato es “v” pone 0 en el bit 2 de RB
       }
       Uart1_Write(dato);        // Envía el dato leído vía USART por el pin Tx
    }
  } while (1);
}

Comentarios