segunda-feira, 27 de setembro de 2010

Primeiro TESTE

 Nesse teste utilizamos leds para sinalizar quando a aceleração em um eixo é maior ou igual a 1g e quando ela  é menor ou igual a menos 1g.

//#include "main.h"
#device <16F877a.h>
#device ADC=10
#FUSES NOWDT, XT, PUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#int_AD
#include <math.h> //Incluindo bibliotéca matemática

void  AD_isr(void)
{

}

void main()
{
   long int x;
   long int y;
   long int z;
   /*
   setup_adc_ports(AN0_AN1_AN2_AN3_AN4);
   //setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_AD);
   enable_interrupts(GLOBAL);
   */

   // TODO: USER CODE!!
   
   setup_adc_ports( AN0_AN1_AN4_VREF_VREF );//Setando as portas analógicas do MCU.
   setup_adc(ADC_CLOCK_INTERNAL ); //Setando clock interno para uso com o ADC
   delay_ms(1000); //Pausa de 1 segundo
  
   //indica que está ligado
   output_bit(PIN_B3, 1);  
   //ao iniciar
   output_bit(PIN_D3, 1);
   delay_ms(500);
   output_bit(PIN_D2, 1);
   delay_ms(500);
   output_bit(PIN_C5, 1);
   delay_ms(500);
   output_bit(PIN_C4, 1);
   delay_ms(500);
   output_bit(PIN_D4, 1);
   delay_ms(500);
   output_bit(PIN_C7, 1);
   delay_ms(500);
  
   output_bit(PIN_D3, 0);
   delay_ms(500);
   output_bit(PIN_D2, 0);
   delay_ms(500);
   output_bit(PIN_C5, 0);
   delay_ms(500);
   output_bit(PIN_C4, 0);
   delay_ms(500);
   output_bit(PIN_D4, 0);
   delay_ms(500);
   output_bit(PIN_C7, 0);
   delay_ms(500);
   //fim
  
   //mandar valor alto para sleep
   output_bit(PIN_D5, 1);
   //selecionar sensibilidade
   output_bit(PIN_D7, 0);
   output_bit(PIN_D6, 0);
  
    /*
         
          channel 0  EIXO x          +g D3  -g D2
          channel 1  EIXO y          +g C5  -g C4
          channel 4  EIXO z          +g D4  -g C7
          sleep   D5
          select1 D7
          select2 D6
         
          */ 
  
   while(true){
          
          //LENDO EIXO X
          x=0;
          set_adc_channel(0); 
          delay_ms(1);
          x=read_adc();
         
         
          if(x>=745){
                        output_bit(PIN_D3, 1);
                        delay_ms(2000);
                        output_bit(PIN_D3, 0);
          }
          if(x<=292){
                        output_bit(PIN_D2, 1);
                        delay_ms(2000);
                        output_bit(PIN_D2, 0);
          }
          delay_ms(1);
         
          //LENDO EIXO Y
          y=0;
          set_adc_channel(1); 
          delay_ms(1);
          y=read_adc();
         
          if(y>=745){
                        output_bit(PIN_C5, 1);
                        delay_ms(2000);
                        output_bit(PIN_C4, 0);
          }
          if(y<=292){
                        output_bit(PIN_C5, 1);
                        delay_ms(2000);
                        output_bit(PIN_C4, 0);
          }
         
          //LENDO EIXO Z
          delay_ms(1);
                       
          z=0;
          set_adc_channel(4); 
          delay_ms(1);
          z=read_adc();
         
          if(z>=745){
                        output_bit(PIN_D4, 1);
                        delay_ms(2000);
                        output_bit(PIN_D4, 0);
          }
           if(z<=292){
                        output_bit(PIN_C7, 1);
                        delay_ms(2000);
                        output_bit(PIN_C7, 0);
          }
        
          delay_ms(1);
  
  
   }
}
  

Nenhum comentário:

Postar um comentário