I purchased 10 values from an ADC and saved them in a table. How (code) can I send them through the serial channel in an external interrupt?

Asked

Viewed 59 times

2

//TAREFA B

#include "c8051f3xx.h"

void configLerV (void) ;

void valorAdc (void);

unsigned char valor,i,v1,v2;

float Vlido;


void main (void)

{    
        __xdata __at 0x0400 float Tab[10];
    Init_Device();
        configLerV ();
        P2_2=0;
        P2_3=0;


      while(RI==0);
       RI=0;
                                            //Premir carater
      if(SBUF=='L')
      {



     valorAdc();                                    //Ler valor do ADC


     SBUF=valor;
         while(TI==0);   //esperar pelo fim da transmissao
            TI=0 ;

     Vlido=(valor*3.3)/256 ;                       //converter para [0V;3.3V]


                                  //mostrar valor lido
      SBUF='T';
         while(TI==0);   //esperar pelo fim da transmissao
            TI=0 ;

      SBUF='=' ;
         while(TI==0);   //esperar pelo fim da transmissao
            TI=0 ;

     SBUF='0'+ (int)Vlido ;
         while(TI==0);   //esperar pelo fim da transmissao
            TI=0 ;

     SBUF= '.';
        while(TI==0);   
            TI=0 ;
     SBUF='0'+ (int)(Vlido*10) % 10 ;
         while(TI==0);
            TI=0;
     SBUF='0'+ (int)(Vlido*100) % 10 ;
            while(TI==0);
                  TI=0;
     SBUF='V';
         while(TI==0);
               TI=0;     



       for(i=0;i<10;i++)
        {
            Tab[i]=Vlido;
        }





   // Acender o LED 

      if (Vlido>=1.00)
        {
            P2_2=1 ;

         } 
    }


}


void configLerV (void)
  {
  TMOD=0b00100000;
  TL1=256-52;
  TH1=256-52;
  TR1=1;
  SCON=0b01010000;  //modo1

  IT1=1;

  IE=0b10000100;//Int.Externa1
  IP=0b00000100 ;// defenir como prioridade EXT1



  }




void valorAdc (void)
{
   AMX0P=0x14 ;

   AD0BUSY=1;

  while(AD0INT==0);

      AD0INT=0;

     SBUF=ADC0H;
         while(TI==0);   //esperar pelo fim da transmissao
            TI=0 ;
     SBUF=ADC0L;
         while(TI==0);   //esperar pelo fim da transmissao
            TI=0 ;

   v1=ADC0L>>2;
   v2=ADC0H<<6;


    valor=v1+v2;

}



void interruInt (void) __interrupt (2)  // Externa 1
    {


       COMO ENVIAR OS VALOR NA TABELA , POR CANAL SÉRIE, QUANDO FAÇO INTERRUPÇÃO.
    }
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.