void main() { clock_int_4MHz(); //Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) disparo=read_eeprom(10); //carrega o último valo ajustado if (disparo==0xff) {disparo=0; write_eeprom(10,0);} //inicio de operação após gravação enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); //enable_interrupts(INT_EXT1); ext_int_edge(L_TO_H); while(true) { ++i; if (i>=50000) {i=0; output_toggle(pin_b7);} //Led de visualização if(!input(botao))//botão de incremento de fase { delay_ms(100); while(!input(botao)) delay_ms(100); //filtro botão disparo++; // na prática está identificando o zero só uma vez por ciclo if(disparo>=7) {disparo=7;} //o botão no pino E3 regula o ângulo de disparo write_eeprom(10, disparo); } if(!input(botao1)) { delay_ms(100); while(!input(botao1)) delay_ms(100); disparo--; if(disparo<=1) {disparo=1;} write_eeprom(10, disparo); } } }
void main(void) { clock_int_4MHz(); habilita_canal_AD(AN0); lcd_ini(); //Lcd_Cmd(LCD_CLEAR); Lcd_Cmd(LCD_CURSOR_OFF); tempo_ms(100); CGRAM_SanUSB(1,sino);//CGRAM_build(monta posicao do caractere especial,vetor do desenho); tempo_ms(300); Lcd_Chr(1, 2, 1); //Lcd_Chr(linha, coluna, posicao do caractere especial); tempo_ms(500); lcd_escreve(1, 3, "Microcontrol"); tempo_ms(500); lcd_escreve(2, 1, "Converte"); tempo_ms(500); while(1) { i= le_AD10bits(0); inverte_saida(pin_b7);inverte_saida(pin_d7); sprintf(buffer1,"%d ",i); lcd_escreve2(2, 12, buffer1); //com buffer tempo_ms(300); //printf("a "); } }
void main(void) { clock_int_4MHz(); ADCON1 = 15; lcd_ini(); Lcd_Cmd(LCD_CLEAR); Lcd_Cmd(LCD_CURSOR_OFF); tempo_ms(100); lcd_escreve(1, 2, "Contagem:"); tempo_ms(500); for(i=110; i>0; i--) { sprintf(buffer1,"%3d",i); //Right aligned text lcd_escreve2(1, 11, buffer1); tempo_ms(100); } Lcd_Cmd(LCD_CLEAR); tempo_ms(500); lcd_escreve(2, 4, "By SanUSB"); while(1){} }
void main(){ clock_int_4MHz(); TRISB = 0b00011111; //B6, B7 E B5 como Saída habilita_interrupcao(timer0); habilita_interrupcao(timer1); habilita_interrupcao(timer3); multiplica_timer16bits(0,32); //B5 tempo_timer16bits(0,62500); //OK multiplica_timer16bits(1,2); //B6 tempo_timer16bits(1,62500); //OK multiplica_timer16bits(3,8); //B7 tempo_timer16bits(3,62500); //OK while (1) { if(!entrada_pin_e3) { Reset(); }//pressionar o botão para gravação tempo_ms(100); } }
void main(){ TRISB = 0; clock_int_4MHz(); habilita_interrupcao(recep_serial); taxa_serial(19200); while(1){ while (pisca==1){ inverte_saida(pin_b7);tempo_ms (300); } tempo_ms (2000); } }
void main() { clock_int_4MHz(); habilita_interrupcao(recep_serial); taxa_serial(19200); while (1) { sendsw((char *) Teste); // const char Teste[] = "Teste\r\n "; inverte_saida(pin_b7); //inverte_saida(pin_d6); tempo_ms(3000); } }
void main (void) { clock_int_4MHz(); while (1) { nivel_alto(pin_b6); tempo_ms(500); nivel_baixo(pin_b6); tempo_ms(500); nivel_alto(pin_b7); tempo_ms(500); nivel_baixo(pin_b7); tempo_ms(500); } }
main(){ clock_int_4MHz(); enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 //enable_interrupts (int_ext); // Habilita interrupcao externa 0 no pino B0 setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8);// configura o timer 1 em 8 x 62500 = 0,5s set_timer1(3036); // Conta 62.500us x 8 para estourar= 0,5s while (TRUE) { output_high(pin_B0); // Pisca Led na função principal delay_ms(500); output_low(pin_B0); delay_ms(500); }}
void main() { clock_int_4MHz(); //Função necessari para o dual clock taxa_serial(9600); habilita_canal_AD(AN0); while (1) { for (i = 0; i < 100; i = i + 5) { SetaPWM1(10000, i); SetaPWM2(10000, i); //frequência em Hz resultado = le_AD10bits(0); //Lê canal 0 da entrada analógica com resolução de 10 bits (ADRES) Vresult = (resultado * 5000) / 1023; //printf("Tensao Result= %lu mV\r\n", Vresult); //evitar o printf o uso do printf e imprimir com sendsw e sendnum sendsw((char *) Tensao); sendnum(Vresult); sendsw((char *) Rn); inverte_saida(pin_b7); tempo_ms(500); } for (i = 100; i > 0; i = i - 5) { SetaPWM1(1200, i); SetaPWM2(1200, i); resultado = le_AD10bits(0); //Lê canal 0 da entrada analógica com resolução de 10 bits (ADRES) //printf("Valor AD= %lu\r\n", resultado); //evitar o printf o uso do printf e imprimir com sendsw e sendnum sendsw((char *) TextoAD); sendnum(resultado); sendsw((char *) Rn); inverte_saida(pin_b7); tempo_ms(500); } } }
void main(){ clock_int_4MHz(); taxa_serial(19200); while(1) { if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação if(PIR1bits.RCIF) //Flag que indica byte na USART - Serial_avaliable() { PIR1bits.RCIF = 0; //reset flag switch(RCREG)// byte recebido { case 'L': nivel_alto(pin_b7); break;//Chega L acende o led case 'D' : nivel_baixo(pin_b7); break;//Chega D apaga o led } } } }
void main() { clock_int_4MHz(); habilita_interrupcao(recep_serial); taxa_serial(9600); while (1) { if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação nivel_alto(pin_b7); tempo_ms(1000); nivel_baixo(pin_b7); tempo_ms(1000); //tempo_ms(2000); ultoa(d,str); // convert to string and print d - importante para sensores putsUSART(str); tempo_ms(200);// o tempo para envio de mais de um caractere // escreve_serial('A'); //while (envia_byte());// escreve só um byte //------------Transmissão Serial ---------------------------------------------------------------- putsUSART((char *) Txdata); // transmite the string if (avisa_interrompeu == 1) //foi inserido um caracter? { if(inputstr[str_pos - 1] == 'K') //0x0D o último caracter foi o ENTER? {avisa_interrompeu = 0; // printf("Comando digitado %s\r", inputstr); str_pos = 0; //reset da posição na string de buffer } } } }
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 } } }