⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled.c~

📁 利用avr的芯片MEGA64L的ADC功能来计算电压
💻 C~
📖 第 1 页 / 共 2 页
字号:
              break;
          case 9:                                      //gaodu
            
              buf_sram[sram_count]=buffer[i]; 
            
              sram_count++;
              break;
          case 10:                                     //danwei
            
              buf_sram[sram_count]=buffer[i];     
              
              sram_count++;     
              break;  
              default:
              break;
        } 
      }
  }
   
 void gpvtg(void)
 { 
 gpscount++;
 if((section6==7||section6==8)&&buffer[i]==',')
  { 
     
  buf_sram[sram_count]=0x2c;
  sram_count++;
  } 
  if(buffer[i]==',')
          section6++;
          else
          {
          switch(section6)
          {
           case 7:
            
            buf_sram[sram_count]=buffer[i];
            sram_count++;
            break;
            case 8:
              
            buf_sram[sram_count]=buffer[i];
            sram_count++;
            break;
            }
            }
   if(section6==9&&buffer[i]==',')
      {
       buf_sram[sram_count]=0x0d; 
       sram_count++;
       buf_sram[sram_count]=0x0a;     
       sram_count++;
       count++; 
    if(count<1000)//&&status==1)
     {sramvisible();  
     gpscount=0;
     }
    if(count>=1000)
       {
        sram0=1;
        sram1=0;
        sram2=0;
        sram3=0;
        count=0;
        offset=0x1100;
        offset1=0x1100;
        }
             
       if(status==1&&sate==1)
       { 
         alarm_count++;
         if(alarm_count>=4)

           engps_alarm=1;
          
    
       }
       }
    }
 
  unsigned int alt_on(void)
  {
        unsigned int alt;
        unsigned int alt1;
        alt1=read_adc(0x00)*10;
        alt=alt1*VREF/1024;
        return alt;
  }
  void ttosgdr(void)
  { 
    unsigned long int offset2;
    unsigned long int offset3;       
    unsigned long int  s;  
    unsigned char alt1; 
    
    offset2=offset1-100;  
    offset3=offset1-100;
    a=buffer[i-3];
    b=buffer[i-2];
    c=buffer[i-1];
    s=100*(a-0x30)+10*(b-0x30)+(c-0x30);         
  
    gpsputs("*GDR");
    n++;   
     inttostr(n);
    gpsput('G'); 
    alt1=alt_on();
    gpsput(alt1);
    gpsput('0');
    while(s)
    { 
      if(s>999)
      break;
      str=read1(offset2);
      put_c(str);
      offset2++;
      if(str==0x0d)
      {
      put_c(0x0a);
      offset2=offset3-100; 
      offset3=offset3-100;
      s--;  
   
      }  
      if(offset3==0x1100)
      break;         
      } 
      gpsputs("!!!");
      }
      
  
  interrupt[USART1_RXC]void usart1_isr(void)                      //USART1的接收中断。
   {
     
   
    sh=UDR1; 
    buffer[i]=sh;
     
    if(buffer[i]=='!'&&buffer[i-4]=='R'&&buffer[i-5]=='D'&&buffer[i-6]=='G'&&buffer[i-7]=='*')
    {  
      ttosgdr();    
    }   
    if(buffer[i]=='!'&&buffer[i-5]=='C'&&buffer[i-6]=='S'&&buffer[i-7]=='G'&&buffer[i-8]=='*')
    {
      gpsputs("*GSC");
      inttostr(n);
      n++;
      gpsput(buffer[i-4]);
      gpsput(buffer[i-3]);
      gpsput(buffer[i-2]);
      gpsput(buffer[i-1]);
    } 
    if(buffer[i]=='!'&&buffer[i-1]=='M'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
      {
         power_alarm=1;
         gpsputs("*AAE");
         inttostr(n);
         n++;
         gpsput(buffer[i-1]);
         }
     if(buffer[i]=='!'&&buffer[i-1]=='G'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
      {
        gps_alarm=1; 
        gpsputs("*AAE");
        inttostr(n);
        n++;
        gpsput(buffer[i-1]);  
        }
      if(buffer[i]=='!'&&buffer[i-1]=='P'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
      {
      position_alarm=1;  
      gpsputs("*AAE");
      inttostr(n);
      n++;
      gpsput(buffer[i-1]);
      }
      if(buffer[i]=='!'&&buffer[i-1]=='A'&&buffer[i-2]=='E'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
      {
         power_alarm=1;
         gps_alarm=1;
         position_alarm=1;   
         gpsputs("*AAE");
         inttostr(n);
         n++;
         gpsput(buffer[i-1]);
      }
    if(buffer[i]=='!'&&buffer[i-1]=='M'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
    {
       power_alarm=0;
       gpsputs("*AAD");
       inttostr(n);
       n++;
       gpsput(buffer[i-1]);
      }
     if(buffer[i]=='!'&&buffer[i-1]=='G'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A') 
     {
       gps_alarm=0;
       gpsputs("*AAD");
       inttostr(n);
       n++;
       gpsput(buffer[i-1]);
       }
       if(buffer[i]=='!'&&buffer[i-1]=='P'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
       {
         position_alarm=0;
         gpsputs("*AAD");
         inttostr(n);
         n++;
         gpsput(buffer[i-1]);
         }
       if(buffer[i]=='!'&&buffer[i-1]=='A'&&buffer[i-2]=='D'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
       {
        power_alarm=0;
        gps_alarm=0;
        position_alarm=0;
        gpsputs("*AAD");
        inttostr(n);
        n++;
        gpsput(buffer[i-1]);
        } 
       if(buffer[i]=='!'&&buffer[i-1]=='G'&&buffer[i-2]=='C'&&buffer[i-3]=='A'&&buffer[i-4]=='A')
           engps_alarm=0;
       
         
  if(buffer[i]=='C'&&buffer[i-1]=='M'&&buffer[i-2]=='R'&&buffer[i-3]=='P'&&buffer[i-4]=='G'&&buffer[i-5]=='$')
      {
      sectionid=0;  
      buf[0]='$';
      buf[5]='C';   
      } 
  if(buffer[i]==0x0a)
       i=0;
  if(buffer[i]=='A'&&buffer[i-1]=='G'&&buffer[i-2]=='G'&&buffer[i-3]=='P'&&buffer[i-4]=='G'&&buffer[i-5]=='$')
  {
     sectioncount=0; 
     buf[0]='$';
     buf[4]='A';  
  }
  if(buffer[i]=='G'&&buffer[i-1]=='T'&&buffer[i-2]=='V'&&buffer[i-3]=='P'&&buffer[i-4]=='G'&&buffer[i-5]=='$')
  {
   section6=0;
   buf[0]='$';
   buf[5]='G';
   }
   if(buf[0]=='$'&&buf[4]=='A')
    { gpgga();   
      
      }
   if(buf[0]=='$'&&buf[5]=='C')  
   {   gprmc();     
      
      }
   if(buf[5]=='G'&&buf[0]=='$')
       gpvtg();
   i++;  

  }            
  
  
//  interrupt [USART0_RXC] void usart0_isr(void)                 //有中断的情况下,数据会出现错误
//  {  
//    unsigned long int offset2;
//    unsigned long int offset3;
//     th=UDR0;
//     offset2=offset1-100;  
//     offset3=offset1-100;
//     while(th-0x30)
//     {
//       str=read1(offset2);
//       put_c(str);
//       offset2++;
//       if(str==0x0d)
//       {
//       put_c(0x0a);
//       offset2=offset3-100; 
//       offset3=offset3-100;
//       th--;  
//     
//       }  
//       if(offset3==0x1100)
//       break;
//  
// }   
// }
  
 
 void gps5s(void)
  {
    gpsputs("$PSRF103,2,0,0,1*26\r\n");
    
    delay_ms(500);
    
    gpsputs("$PSRF103,3,0,0,1*27\r\n");
    
    delay_ms(500);
    gpsputs("$PSRF103,0,0,255,1*26\r\n");
    delay_ms(500);
   
    gpsputs("$PSRF103,4,0,255,1*22\r\n");
    delay_ms(500);
    
    gpsputs("$PSRF103,5,0,255,1*23\r\n");
    delay_ms(500);
  
    } 
   void main(void)
   { 
    
    #asm("sei")   
    sram0=1; 
    initusart0();
    initusart1(); 
    initadc();
    PORTB=0X40;
    DDRB=0X60;  
    PORTC=0X80;
    DDRC=0X80; 
    DDRD=0XF3;
    DDRE=0X30;  
    PORTD=0X01;
    PORTE=0X10; 
    waikuo();    
    sram0=1;
    sram1=0;
    sram2=0;
    sram3=0; 
    gpsreset();
    gps5s(); 
    while(1)
    { 
        if(engps_alarm==1&&gps_alarm==1)
        {
         gpsputs("*AAR");
         inttostr(n);
         n++;
         gpsput('G');  
         engps_alarm=0;
         }
         
     } 
  }

    

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -