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

📄 interrupt.c

📁 与GPS模块连接
💻 C
字号:
#define INT_C   

#include "allheads.h"

#pragma interrupt_handler uart0_rx_isr:19
void uart0_rx_isr(void)
{
char Temp_UDR0;
 uchar Temp_UCSR0A;
 Temp_UCSR0A=UCSR0A;
  Temp_UDR0=UDR0;
 if(!(Temp_UCSR0A&((1<<FE0)|(1<<UPE0)))){
 	GPS_Rx[write_Count ]=Temp_UDR0;
         // writeCount++;
           if(++write_Count>199){write_Count=0;}//ptr=GPS_Rx;
            }
  }

//时间基准:1MS 8MHZ晶振64分频..
#pragma interrupt_handler timer2_ovf_isr:10
void timer2_ovf_isr(void)
{
TCNT2 = 0x83; 
 if(++Count_ms>=100){// 0.1s
	       Count_ms=0;
                 Fbit.Time_ms=TRUE;
 	       Fbit.key_count=TRUE;}
                 //Fbit.Scan_IRQ=TRUE;}
 Count_2ms++;
 
if(!IRQ) {
          Pulse_Data=(uchar)(60000/Count_2ms);
      if(++Idx_Plus>=10)Idx_Plus=0;
             Buf_plus[Idx_Plus]=Pulse_Data;
             Pulse_Data=0;
     if(++Count_Plus>=10){Fbit.Timer_Start=TRUE;
                                                                Count_Plus=0;}
      Read_FIFO();  
      Fbit.Rx_f=TRUE;
       Count_2ms=0;
    }
}

/*
// Timer 0 overflow interrupt service routine
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void){//2 //2ms
TCNT0=0x83;//B2;
if(++Count_ms>=100){// 0.1s
	       Count_ms=0;
  	       Fbit.Time_ms=TRUE;
 	       Fbit.key_count=TRUE;}

 Count_2ms++;
 
if(!IRQ) {
          Pulse_Data=(uchar)(60000/Count_2ms);
      if(++Idx_Plus>=10)Idx_Plus=0;
       //Buf_plus[Idx_Plus]=T_Num[Idx_Plus];
      Buf_plus[Idx_Plus]=Pulse_Data;
      Pulse_Data=0;
     if(++Count_Plus>=10){Fbit.Timer_Start=TRUE;
                                                                Count_Plus=0;}
      Read_FIFO();  
      Fbit.Rx_f=TRUE;
       Count_2ms=0;
    }
  }*/
uchar Read_byte(void)
{ uchar temp;
if(read_Count == write_Count){delay_ms(5);}
	temp = GPS_Rx[read_Count];
	++read_Count;
	if(read_Count >199){read_Count = 0;}
	return temp;	
}

void Clear_GpsData(void)
{
	uchar j;
 for(j=0; j<26; j++)
	{
	           JWDINFO[j] ='0';
			}
   }

//$PTNLRTF,A,A,273306,04,3,2222.28064,N,11332.80025,E,00011,+000.000,+000.000,+000.000*55
void Read_GpsData(void)
{
	uchar temp = 0;
      	temp = Read_byte();
         if(temp=='$')
            {
              temp = Read_byte();
	  if(temp == 'G')
	    { 
                  	temp = Read_byte();
		if(temp == 'P')
		  {
			temp = Read_byte();
			if(temp == 'G')
			{
				temp = Read_byte();
				if(temp == 'L')
				{
				    temp = Read_byte();
				       if(temp == 'L')
                                                      { Parse_GpsData();
                                                         // LED1_OFF;
                                                                                      }
                                                                               }
                                                    	             }
				}
			}
		}
	       }
  

void Parse_GpsData(void)
{	uchar i, temp;
	Clear_GpsData();
     	Read_byte();
	temp = Read_byte();
	if(',' != temp) {
            JWDINFO[0] = temp;
		for(i=0; i<25; i++)
		{
			JWDINFO[i+1] = Read_byte();
		}
    if(((JWDINFO[11]=='S')||(JWDINFO[11]=='N'))&&((JWDINFO[25]=='E')||(JWDINFO[25]=='W')))
                 {  JWD_ptr=JWDINFO;
                      Fbit.Send_GInfoFlag=TRUE;}
    //else{Clear_GpsData();}
                                                                  }
}

void  Send_GpsInfo(void){
       uchar i;
 if(!Fbit.Send_GInfoFlag)return;
 Fbit.Send_GInfoFlag=FALSE;
JWD_ptr=JWDINFO;
  for(i=0;i<26;i++){
  CharTOASC(*JWD_ptr);
   DJWDINFO[i*2]=comm_t;
   DJWDINFO[(i*2)+1]=comm_b;
   JWD_ptr++;
  }
  DJWDINFO[52]=0;
   DJWD_ptr=DJWDINFO;
  // Send_Test();
 }

/*void Send_Test(void){
      uchar i;
  //  (!Fbit.Send_GInfoFlag)return;
      //   Fbit.Send_GInfoFlag=FALSE;
     while(*DJWD_ptr){
                      PSendChar(*DJWD_ptr);
                      DJWD_ptr++;                  
                      }
      PSendChar(0x0d);
      //EN_RxGps;
 }*/

/*void Parse_GpsData(void)
{	uchar i;
	uchar temp;
	Clear_GpsData();
     	//Read_byte();
	//temp = Read_byte();
	if(',' != temp) {
            WD[0] = temp;
		for(i=0; i<3; i++)
		{
			WD[i+1] = Read_byte();
		}
		Read_byte();  //.
		for(i=0; i<5; i++)
		{
			WD[4+i] = Read_byte();
		}
		Read_byte();    //,
                 }
// END WD,START SN.............................................................................	
      temp = Read_byte();    //S/N
	if(',' != temp)
	{
		SN= temp;
		Read_byte();// ,
	}
//END SN.START JD................................................................................	
    temp = Read_byte();
	if(',' != temp)
	{
		JD[0] = temp;
		for(i=0; i<4; i++)
		{
			JD[i+1] = Read_byte();
		}	
		Read_byte();
		for(i=0; i<5; i++)
		{
			JD[5+i] = Read_byte();
		}	
		Read_byte();
	}
  //......................................................................................................................................
     temp = Read_byte();
	if(',' != temp)
	{	EW = temp;
		Read_byte();
	                     }*/
     // Fbit.Send_GInfoFlag=TRUE;
    //		}	


void Timer_Function(void){
if(!Fbit.Time_ms)return;
    Fbit.Time_ms=FALSE;
     if(++Flag_LED>40){Flag_LED=0;
                              if(Fbit.Init_com){Fbit.Com_start=TRUE;
                                                                          Fbit.Init_com=FALSE;} 
                       }
  
    }

void Key_Process(void){
uchar temp;
  if(!Fbit.En_keyproc)return;
  Fbit.En_keyproc=FALSE;
  temp=Key_Value;
   switch(temp){
       case 6:
                    Fbit.En_Tcp=TRUE;//connect to PC;
                   Idx_TCP=ctcp0;
                    	break;
                    
          case 5:
                 Fbit.En_SendData=TRUE;
		break;
                    
	  case 3:
                   // Fbit.Send_GInfoFlag=TRUE;
                    	break;
                          
	default:
               			break;
      }   
}

 void Scan_Key(void){
  if(!Fbit.key_count)return;
  Fbit.key_count=FALSE;
     Key_Value=(PINC&0x07);
	 Delay(50);
       if( Key_Value>=0x07){Fbit.En_keyproc=TRUE;}
	 else{Key_Process();}
		 }  

⌨️ 快捷键说明

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