Example #1
0
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);
        }


    }
}
Example #10
0
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
  }
} 


}