예제 #1
0
void DIGITAL_WRITE(unsigned int pin, unsigned int state) {
	saida_pino(pin, state);
}
void main()         {
clock_int_4MHz();

TRISB = 0b00000011;          //B0 a B5 como entrada e B6-B7 como Saída

//habilita_interrupcao(timer0);
INTCONbits.TMR0IE = 1; T0CONbits.TMR0ON = 1;
multiplica_timer16bits(0,16);           //liga timer0 - 16 bits com multiplicador (prescaler) 8
tempo_timer16bits(0,62500);       //Conta 16 x 62500us = 1 seg.

taxa_serial(19200);
//printf("Aguardando tecla de comando..."); // Exibimos a mensagem serial via bluetoth...

while (1){ if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação
      
bitStd = entrada_pin_b0; //Lê o estado do pino STD e armazena em 'bitStd'
  if (bitStd == 1) {//Se estiver em nível alto fará as leituras
                       //dos bits dos pinos Q3, Q2, Q1 e Q0

    bit01 = entrada_pin_b1;
    bit02 = entrada_pin_b2;
    bit03 = entrada_pin_b3;
    bit04 = entrada_pin_b4;

    tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para

                                                                  //decimal (ver Vídeo1)

 sendsw((char *)Recebido);

    switch (tecla){ // Seleciona a tecla pressionada

    case 1: // Tecla 1
      swputc('1');
      /* COMANDO PARA RELE1 */
      RELE1_STATE = !RELE1_STATE; // Guarda o estado INVERTIDO do Relé.
      break;

    case 2: // Tecla 2
      swputc('2');
      break;

    case 3: // Tecla 3
      swputc('3');
      break;

    case 4: // Tecla 4
      swputc('4');
      break;

    case 5: // Tecla 5
      swputc('5');
      break;

    case 6: // Tecla 6
      swputc('6');
      break;

    case 7: // Tecla 7
      swputc('7');
      break;

    case 8: // Tecla 8
      swputc('8');
      break;

    case 9: // Tecla 9
      swputc('9');
      break;

    case 10: // Tecla 0
      swputc('0');
      break;

    case 11: // Tecla *
      swputc('*');
      break;

    case 12: // Tecla #
      swputc('#');
      break;
    }

    saida_pino(RELE1, RELE1_STATE);//Liga ou desliga o Relé1 conforme o estado (HIGH/ LOW)

    // Zeram-se todas as variáveis
    tecla = 0;
    bit01 = 0;
    bit02 = 0;
    bit03 = 0;
    bit04 = 0;
    bitStd= 0;
    tempo_ms(500); // Aguarda 500 milissegundos - o pino Std fica ativo por volta de 30ms
  }
} 


}