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 } } }