2014-04-24 177 views
-2

我的代碼是用於atmega32微控制器將座標轉換爲nmea格式,我如何將它轉換爲atmega16代碼。 因爲它使用ATmega32的庫文件 將在ATmega16的或一些改變此代碼的工作需要....將atmega32代碼轉換爲atmega16代碼

#include <mega32.h> 

// Alphanumeric LCD Module functions 
#include <alcd.h> 

// Standard Input/Output functions 
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h> 
#include <delay.h> 
//int space=0; 
//char loc[100],data[100]; 
//int lp=0,dp=0; 
char *datapointer; 
int checksum; 
int q[10],god=0; 
//int i,dot=0,k,lat_dec[10],p; 
// int lati_dec,lati_before; 
//float new_lati_dec; 
//int diff,s,arry[10],w,fake_lati_before; 
//char a,b; 
//int space; 
char a,loc[100],temp[20],data[100],aa[100]; 
long int var,temp_var,sub,diff,mul,temp1_var; 
int i,j,k,count,mod,h,o,count1,l,counter,u; 
float dist=0; 
int power(int k) 
{ 
    int i,ans=1; 
    for(i=0;i<k;i++) 
    { 
      ans=ans*10; 
    } 
    return(ans); 
} 
void gps_putsf(char *str,char *arr) 
{ 
char k; 
while (k=*str++) putchar(k); 
//putsf("56"); 
//putchar(13); 
//putchar(10); 
    //space=0; 
    datapointer=arr; 
    checksum=0; 
     //lcd_putsf("a2"); 


    /* Loop through entire string, XORing each character to the next */ 
    while (*datapointer != '\0') 
    { 
    checksum ^= *datapointer; 
    datapointer++; 
    } 
    // putsf("$GPGGA,130305.0,2529.64237,N,8151.969852,E,1,08,0.94,00499,M,047,M,,*56"); 
    i=0; 
     while(checksum>=16) 
     { 
     q[i]=checksum%16; 
     checksum=checksum/16; 
     i++; 
     } 
     q[i]=checksum; 
     //a[i]=checksum%10; 
     //i++; 
     //checksum=checksum/10; 
     //} 
     //i=i-1; 
     while(i>=0) 
     { 
     if(q[i]==0) 
     putchar('0'); 
     if(q[i]==1) 
     putchar('1'); 
     if(q[i]==2) 
     putchar('2'); 
     if(q[i]==3) 
     putchar('3'); 
     if(q[i]==4) 
     putchar('4'); 
     if(q[i]==5) 
     putchar('5'); 
     if(q[i]==6) 
     putchar('6'); 
     if(q[i]==7) 
     putchar('7'); 
     if(q[i]==8) 
     putchar('8'); 
     if(q[i]==9) 
     putchar('9'); 
     //putchar(a[i]); 
     //} 
    // else 
    // putchar(a[i]); 
     i--; 
     } 
    // putchar(checksum); */ 
     putchar(13); 
     putchar(10); 
     // Place your code her 
} 

// Declare your global variables here 

void main(void) 
{ 
// Declare your local variables here 

// Input/Output Ports initialization 
// Port A initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00; 
DDRA=0x00; 

// Port B initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00; 
DDRB=0x00; 

// Port C initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00; 
DDRC=0x00; 

// Port D initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00; 
DDRD=0x00; 

// Timer/Counter 0 initialization 
// Clock source: System Clock 
// Clock value: Timer 0 Stopped 
// Mode: Normal top=0xFF 
// OC0 output: Disconnected 
TCCR0=0x00; 
TCNT0=0x00; 
OCR0=0x00; 

// Timer/Counter 1 initialization 
// Clock source: System Clock 
// Clock value: Timer1 Stopped 
// Mode: Normal top=0xFFFF 
// OC1A output: Discon. 
// OC1B output: Discon. 
// Noise Canceler: Off 
// Input Capture on Falling Edge 
// Timer1 Overflow Interrupt: Off 
// Input Capture Interrupt: Off 
// Compare A Match Interrupt: Off 
// Compare B Match Interrupt: Off 
TCCR1A=0x00; 
TCCR1B=0x00; 
TCNT1H=0x00; 
TCNT1L=0x00; 
ICR1H=0x00; 
ICR1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00; 
OCR1BL=0x00; 

// Timer/Counter 2 initialization 
// Clock source: System Clock 
// Clock value: Timer2 Stopped 
// Mode: Normal top=0xFF 
// OC2 output: Disconnected 
ASSR=0x00; 
TCCR2=0x00; 
TCNT2=0x00; 
OCR2=0x00; 

// External Interrupt(s) initialization 
// INT0: Off 
// INT1: Off 
// INT2: Off 
MCUCR=0x00; 
MCUCSR=0x00; 

// Timer(s)/Counter(s) Interrupt(s) initialization 
TIMSK=0x00; 

// USART initialization 
// Communication Parameters: 8 Data, 1 Stop, No Parity 
// USART Receiver: On 
// USART Transmitter: On 
// USART Mode: Asynchronous 
// USART Baud Rate: 4800 
UCSRA=0x00; 
UCSRB=0x18; 
UCSRC=0x86; 
UBRRH=0x00; 
UBRRL=0x67; 

// Analog Comparator initialization 
// Analog Comparator: Off 
// Analog Comparator Input Capture by Timer/Counter 1: Off 
ACSR=0x80; 
SFIOR=0x00; 

// ADC initialization 
// ADC disabled 
ADCSRA=0x00; 

// SPI initialization 
// SPI disabled 
SPCR=0x00; 

// TWI initialization 
// TWI disabled 
TWCR=0x00; 

// Alphanumeric LCD initialization 
// Connections specified in the 
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: 
// RS - PORTB Bit 0 
// RD - PORTB Bit 1 
// EN - PORTB Bit 2 
// D4 - PORTB Bit 4 
// D5 - PORTB Bit 5 
// D6 - PORTB Bit 6 
// D7 - PORTB Bit 7 
// Characters/line: 16 
lcd_init(16); 
lcd_clear(); 
//lcd_puts("a"); 
while(1) 
{ 
god++; 
//lcd_putsf("C"); 
    loc[0]=0x24; 
     loc[1]=0x47;loc[2]=0x50;loc[3]=0x47;loc[4]=0x47;loc[5]=0x41;loc[6]=0X2C;loc[7]=0X31;loc[8]=0x33;loc[9]=0x30;loc[10]=0x33;loc[11]=0x30; 
     loc[12]=0x35;loc[13]=0X2E;loc[14]=0x30;loc[15]=0X2C; 
     data[0]=0x47;data[1]=0x50;data[2]=0x47;data[3]=0x47;data[4]=0x41;data[5]=0X2C;data[6]=0X31;data[7]=0x33;data[8]=0x30;data[9]=0x33;data[10]=0x30; 
     data[11]=0x35;data[12]=0X2E;data[13]=0x30;data[14]=0X2C; 

    // char loc1[]="$GPGGA,130305.0,2529.64237,N,8151.969852,E,1,08,0.94,00499,M,047,M,,*"; 

    i=16; 
    l=15; 
    a=getchar(); 
    while(a!=0X20) 
    { 
    a=getchar(); 
    } 
     a=getchar(); 
     a=getchar(); 
    a=getchar(); 
     while(a!=0X2E) 
     { 
     if(a==0X30) 
     { 
     loc[i]=0X30; 
     data[l]=0X30; 
     l++; 
    // lcd_putsf("0"); 
     i++; 
     } 
     if(a==0X31) 
     { 
    // lcd_putsf("1"); 
     loc[i]=0X31; 
     i++; 
     data[l]=0X31; 
     l++; 
     } 
     if(a==0X32) 
     { 
    // lcd_putsf("2"); 
     loc[i]=0X32; 
     i++; 
     data[l]=0X32; 
     l++; 
     } 
     if(a==0X33) 
     { 
    // lcd_putsf("3"); 
     loc[i]=0X33; 
     i++; 
     data[l]=0X33; 
     l++; 
     } 
     if(a==0X34) 
     { 
    // lcd_putsf("4"); 
     loc[i]=0X34; 
     i++; 
     data[l]=0X34; 
     l++; 
     } 
     if(a==0X35) 
     { 
    // lcd_putsf("5"); 
     loc[i]=0X35; 
     i++; 
     data[l]=0X35; 
     l++; 
     } 
     if(a==0X36) 
     { 
    // lcd_putsf("6"); 
     loc[i]=0X36; 
     i++; 
     data[l]=0X36; 
     l++; 
     } 
     if(a==0X37) 
     { 
    // lcd_putsf("7"); 
     loc[i]=0X37; 
     i++; 
     data[l]=0X37; 
     l++; 
     } 
     if(a==0X38) 
     { 
    // lcd_putsf("8"); 
     loc[i]=0X38; 
     i++; 
     data[l]=0X38; 
     l++; 
     } 
     if(a==0X39) 
     { 
    // lcd_putsf("9"); 
     loc[i]=0X39; 
     data[l]=0X39; 
     l++; 
     i++; 
     } 
     a=getchar(); 
     } 

     j=0; 
     if(a==0X2E) 
     { 
     a=getchar(); 
     } 
     counter=0; 
     count1=0; 
     while(a!=0X61) 
     { 
     if(counter<5) 
     { 
     counter++; 
     count1++; 
     if(a==0X30) 
     { 
     temp[j]=0; 
     j++; 
    // lcd_putsf("0"); 
     } 
     if(a==0X31) 
     { 
     temp[j]=1; 
     j++; 
    // lcd_putsf("1"); 
     } 
     if(a==0X32) 
     { 

     temp[j]=2; 
     j++; 
    // lcd_putsf("2"); 
     } 
     if(a==0X33) 
     { 
     temp[j]=3; 
     j++; 
    // lcd_putsf("3"); 
     } 
     if(a==0X34) 
     { 
     temp[j]=4; 
     j++; 
    // lcd_putsf("4"); 
     } 
     if(a==0X35) 
     { 
     temp[j]=5; 
     j++; 
    // lcd_putsf("5"); 
     } 
     if(a==0X36) 
     { 
     temp[j]=6; 
     j++; 
    // lcd_putsf("6"); 
     } 
     if(a==0X37) 
     { 
     temp[j]=7; 
     j++; 
    // lcd_putsf("7"); 
     } 
     if(a==0X38) 
     { 
     temp[j]=8; 
     j++; 
    // lcd_putsf("8"); 
     } 
     if(a==0X39) 
     { 
     temp[j]=9; 
     j++; 
    // lcd_putsf("9"); 
     } 
     } 
     a=getchar(); 
     } 


     j=j-1; 
     var =0; 
     for(k=j;k>=0;k--) 
     { 
     var= var+ temp[j-k]*(long)power(k); 
     } 

     var=var*60; 

    temp_var=var; 
     count=0; 

     while(count1>0) 
     { 
     temp_var=temp_var/10; 
     count++; 
     count1--; 
     } 

    o=0; 
    temp1_var=temp_var; 
     while(temp1_var!=0) 
     { 
     temp[o]=temp1_var%10; 
     temp1_var=temp1_var/10; 
     o++; 
     } 
     o=o-1; 
     for(j=o;j>=0;j--) 
     { 
     if(temp[j]==0) 
     { 
     loc[i]=0X30; 
    // lcd_putsf("0"); 
     i++; 
     data[l]=0X30; 
     l++; 
     } 
     if(temp[j]==1) 
     { 
    // lcd_putsf("1"); 
     loc[i]=0X31; 
     i++; 
     data[l]=0X31; 
     l++; 
     } 
     if(temp[j]==2) 
     { 
    // lcd_putsf("2"); 
     loc[i]=0X32; 
     i++; 
     data[l]=0X32; 
     l++; 
     } 
     if(temp[j]==3) 
     { 
    // lcd_putsf("3"); 
     loc[i]=0x33; 
     i++; 
     data[l]=0X33; 
     l++; 
     } 
     if(temp[j]==4) 
     { 
    // lcd_putsf("4"); 
     loc[i]=0X34; 
     i++; 
     data[l]=0X34; 
     l++; 
     } 
     if(temp[j]==5) 
     { 
    // lcd_putsf("5"); 
     loc[i]=0X35; 
     i++; 
     data[l]=0X35; 
     l++; 
     } 
     if(temp[j]==6) 
     { 
    // lcd_putsf("6"); 
     loc[i]=0X36; 
     i++; 
     data[l]=0X36; 
     l++; 
     } 
     if(temp[j]==7) 
     { 
    // lcd_putsf("7"); 
     loc[i]=0X37; 
     i++; 
     data[l]=0X37; 
     l++; 
     } 
     if(temp[j]==8) 
     { 
    // lcd_putsf("8"); 
     loc[i]=0X38; 
     i++; 
     data[l]=0X38; 
     l++; 
     } 
     if(temp[j]==9) 
     { 
    // lcd_putsf("9"); 
     loc[i]=0X39; 
     i++; 
     data[l]=0X39; 
     l++; 
     } 
    } 

     loc[i]=0X2E; 
     data[l]=0X2E; 
     l++; 
    // lcd_putsf("."); 
     i++; 
    sub=0; 
    mul=1; 
    for(h=0;h<count;h++) 
    { 
    mul=mul*10; 
    } 
     sub=temp_var*mul; 

     diff=var-sub; 
    // itoa(diff,c1); 
    // lcd_putsf(" "); 
    // lcd_puts(c1); 
    // lcd_putsf(" "); 

     k=0; 
     while(diff%10==0) 
     { 
     diff=diff/10; 
    // mod=diff%10; 
     count--; 
     } 

     while(diff>0) 
    { 

// if(diff%10==0) 
// { 
    // diff=diff/10; 
    // } 
    // else 
    // { 
    temp[k]=diff%10; 
     diff=diff/10; 
     k++; 
//  } 
    } 
     k=k-1; 
    // itoa(diff,c1); 
    // lcd_putsf(" "); 
    // lcd_puts(c1); 
    // lcd_putsf(" "); 
    // itoa(k,c1); 
    // lcd_putsf(" "); 
    // lcd_puts(c1); 
    // lcd_putsf(" "); 

     for(j=k;j>=0;j--) 
     { 
     if(temp[j]==0) 
     { 
     loc[i]=0X30; 
    // lcd_putsf("0"); 
     i++; 
     data[l]=0X30; 
     l++; 
     } 
     if(temp[j]==1) 
     { 
    // lcd_putsf("1"); 
     loc[i]=0X31; 
     i++; 
     data[l]=0X31; 
     l++; 
     } 
     if(temp[j]==2) 
     { 
    // lcd_putsf("2"); 
     loc[i]=0X32; 
     i++; 
     data[l]=0X32; 
     l++; 
     } 
     if(temp[j]==3) 
     { 
    // lcd_putsf("3"); 
     loc[i]=0x33; 
     i++; 
     data[l]=0X33; 
     l++; 
     } 
     if(temp[j]==4) 
     { 
    // lcd_putsf("4"); 
     loc[i]=0X34; 
     i++; 
     data[l]=0X34; 
     l++; 
     } 
     if(temp[j]==5) 
     { 
    // lcd_putsf("5"); 
     loc[i]=0X35; 
     i++; 
     data[l]=0X35; 
     l++; 
     } 
     if(temp[j]==6) 
     { 
    // lcd_putsf("6"); 
     loc[i]=0X36; 
     i++; 
     data[l]=0X36; 
     l++; 
     } 
     if(temp[j]==7) 
     { 
    // lcd_putsf("7"); 
     loc[i]=0X37; 
     i++; 
     data[l]=0X37; 
     l++; 
     } 
     if(temp[j]==8) 
     { 
    // lcd_putsf("8"); 
     loc[i]=0X38; 
     i++; 
     data[l]=0X38; 
     l++; 
     } 
     if(temp[j]==9) 
     { 
    // lcd_putsf("9"); 
     loc[i]=0X39; 
     i++; 
     data[l]=0X39; 
     l++; 
     } 
    } 


//for longitude 

    // char loc1[]="$GPGGA,130305.0,2529.64237,N,8151.969852,E,1,08,0.94,00499,M,047,M,,*"; 
    loc[i]=0X2C; 
    i++; 
     data[l]=0X2C; 
     l++; 
    loc[i]=0X4E; 
    i++; 
     data[l]=0X4E; 
     l++; 
    loc[i]=0X2C; 
    i++; 
     data[l]=0X2C; 
     l++; 
    a=getchar(); 
    while(a!=0X20) 
    { 
    a=getchar(); 
    } 
    a=getchar(); 
    while(a!=0X20) 
    { 
    a=getchar(); 
    } 
    a=getchar(); 
    a=getchar(); 
     a=getchar(); 

     while(a!=0X2E) 
     { 
     if(a==0X30) 
     { 
     loc[i]=0X30; 
    // lcd_putsf("0"); 
     i++; 
     data[l]=0X30; 
     l++; 
     } 
     if(a==0X31) 
     { 
    // lcd_putsf("1"); 
     loc[i]=0X31; 
     i++; 
     data[l]=0X31; 
     l++; 
     } 
     if(a==0X32) 
     { 
    // lcd_putsf("2"); 
     loc[i]=0X32; 
     i++; 
     data[l]=0X32; 
     l++; 
     } 
     if(a==0X33) 
     { 
    // lcd_putsf("3"); 
     loc[i]=0X33; 
     i++; 
     data[l]=0X33; 
     l++; 
     } 
     if(a==0X34) 
     { 
    // lcd_putsf("4"); 
     loc[i]=0X34; 
     i++; 
     data[l]=0X34; 
     l++; 
     } 
     if(a==0X35) 
     { 
    // lcd_putsf("5"); 
     loc[i]=0X35; 
     i++; 
     data[l]=0X35; 
     l++; 
     } 
     if(a==0X36) 
     { 
    // lcd_putsf("6"); 
     loc[i]=0X36; 
     i++; 
     data[l]=0X36; 
     l++; 
     } 
     if(a==0X37) 
     { 
    // lcd_putsf("7"); 
     loc[i]=0X37; 
     i++; 
     data[l]=0X37; 
     l++; 
     } 
     if(a==0X38) 
     { 
    // lcd_putsf("8"); 
     loc[i]=0X38; 
     i++; 
     data[l]=0X38; 
     l++; 
     } 
     if(a==0X39) 
     { 
    // lcd_putsf("9"); 
     loc[i]=0X39; 
     i++; 
     data[l]=0X39; 
     l++; 
     } 
     a=getchar(); 
     } 
     j=0; 
     if(a==0X2E) 
     { 
     a=getchar(); 
     } 
     count1=0; 
     counter=0; 
     while(a!=0X0D) 
     { 
     if(counter<5) 
     { 
     count1++; 
     counter++; 
     if(a==0X30) 
     { 
     temp[j]=0; 
     j++; 
    // lcd_putsf("0"); 
     } 
     if(a==0X31) 
     { 
     temp[j]=1; 
     j++; 
    // lcd_putsf("1"); 
     } 
     if(a==0X32) 
     { 

     temp[j]=2; 
     j++; 
    // lcd_putsf("2"); 
     } 
     if(a==0X33) 
     { 
     temp[j]=3; 
     j++; 
    // lcd_putsf("3"); 
     } 
     if(a==0X34) 
     { 
     temp[j]=4; 
     j++; 
    // lcd_putsf("4"); 
     } 
     if(a==0X35) 
     { 
     temp[j]=5; 
     j++; 
    // lcd_putsf("5"); 
     } 
     if(a==0X36) 
     { 
     temp[j]=6; 
     j++; 
    // lcd_putsf("6"); 
     } 
     if(a==0X37) 
     { 
     temp[j]=7; 
     j++; 
    // lcd_putsf("7"); 
     } 
     if(a==0X38) 
     { 
     temp[j]=8; 
     j++; 
    // lcd_putsf("8"); 
     } 
     if(a==0X39) 
     { 
     temp[j]=9; 
     j++; 
    // lcd_putsf("9"); 
     } 
     } 
     a=getchar(); 
     } 
     j=j-1; 
     var =0; 
     for(k=j;k>=0;k--) 
     { 
     var= var+ temp[j-k]*(long)power(k); 
     } 

     var=var*60; 

    temp_var=var; 
     count=0; 

     while(count1>0) 
     { 
     temp_var=temp_var/10; 
     count++; 
     count1--; 
     } 

    o=0; 
    temp1_var=temp_var; 
     while(temp1_var!=0) 
     { 
     temp[o]=temp1_var%10; 
     temp1_var=temp1_var/10; 
     o++; 
     } 
     o=o-1; 
     for(j=o;j>=0;j--) 
     { 
     if(temp[j]==0) 
     { 
     loc[i]=0X30; 
    // lcd_putsf("0"); 
     i++; 
     data[l]=0X30; 
     l++; 
     } 
     if(temp[j]==1) 
     { 
    // lcd_putsf("1"); 
     loc[i]=0X31; 
     i++; 
     data[l]=0X31; 
     l++; 
     } 
     if(temp[j]==2) 
     { 
    // lcd_putsf("2"); 
     loc[i]=0X32; 
     i++; 
     data[l]=0X32; 
     l++; 
     } 
     if(temp[j]==3) 
     { 
    // lcd_putsf("3"); 
     loc[i]=0x33; 
     i++; 
     data[l]=0X33; 
     l++; 
     } 
     if(temp[j]==4) 
     { 
    // lcd_putsf("4"); 
     loc[i]=0X34; 
     i++; 
     data[l]=0X34; 
     l++; 
     } 
     if(temp[j]==5) 
     { 
    // lcd_putsf("5"); 
     loc[i]=0X35; 
     i++; 
     data[l]=0X35; 
     l++; 
     } 
     if(temp[j]==6) 
     { 
    // lcd_putsf("6"); 
     loc[i]=0X36; 
     i++; 
     data[l]=0X36; 
     l++; 
     } 
     if(temp[j]==7) 
     { 
    // lcd_putsf("7"); 
     loc[i]=0X37; 
     i++; 
     data[l]=0X37; 
     l++; 
     } 
     if(temp[j]==8) 
     { 
    // lcd_putsf("8"); 
     loc[i]=0X38; 
     i++; 
     data[l]=0X38; 
     l++; 
     } 
     if(temp[j]==9) 
     { 
    // lcd_putsf("9"); 
     loc[i]=0X39; 
     i++; 
     data[l]=0X39; 
     l++; 
     } 
    } 

     loc[i]=0X2E; 
     data[l]=0X2E; 
     l++; 
    // lcd_putsf("."); 
     i++; 
    sub=0; 
    mul=1; 
    for(h=0;h<count;h++) 
    { 
    mul=mul*10; 
    } 
     sub=temp_var*mul; 

     diff=var-sub; 

     k=0; 
     while(diff%10==0) 
     { 
     diff=diff/10; 
     mod=diff%10; 
     count--; 
     } 
     while(diff>0) 
    { 


// if(diff%10==0) 
    // { 
    // diff=diff/10; 
    // } 
    // else 
    // { 
    temp[k]=diff%10; 
     diff=diff/10; 
     k++; 
    // } 
    } 
     k=k-1; 
     for(j=k;j>=0;j--) 
     { 
     if(temp[j]==0) 
     { 
     loc[i]=0X30; 
    // lcd_putsf("0"); 
     i++; 
     data[l]=0X30; 
     l++; 
     } 
     if(temp[j]==1) 
     { 
    // lcd_putsf("1"); 
     loc[i]=0X31; 
     i++; 
     data[l]=0X31; 
     l++; 
     } 
     if(temp[j]==2) 
     { 
    // lcd_putsf("2"); 
     loc[i]=0X32; 
     i++; 
     data[l]=0X32; 
     l++; 
     } 
     if(temp[j]==3) 
     { 
    // lcd_putsf("3"); 
     loc[i]=0x33; 
     i++; 
     data[l]=0X33; 
     l++; 
     } 
     if(temp[j]==4) 
     { 
    // lcd_putsf("4"); 
     loc[i]=0X34; 
     i++; 
     data[l]=0X34; 
     l++; 
     } 
     if(temp[j]==5) 
     { 
    // lcd_putsf("5"); 
     loc[i]=0X35; 
     i++; 
     data[l]=0X35; 
     l++; 
     } 
     if(temp[j]==6) 
     { 
    // lcd_putsf("6"); 
     loc[i]=0X36; 
     i++; 
     data[l]=0X36; 
     l++; 
     } 
     if(temp[j]==7) 
     { 
    // lcd_putsf("7"); 
     loc[i]=0X37; 
     i++; 
     data[l]=0X37; 
     l++; 
     } 
     if(temp[j]==8) 
     { 
    // lcd_putsf("8"); 
     loc[i]=0X38; 
     i++; 
     data[l]=0X38; 
     l++; 
     } 
     if(temp[j]==9) 
     { 
    // lcd_putsf("9"); 
     loc[i]=0X39; 
     i++; 
     data[l]=0X39; 
     l++; 
     } 
    } 

    // char loc1[]="$GPGGA,130305.0,2529.64237,N,8151.969852,E,1,08,0.94,00499,M,047,M,,*"; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X45; 
    i++; 
    data[l]=0X45; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X31; 
    i++; 
    data[l]=0X31; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X30; 
    i++; 
    data[l]=0X30; 
     l++; 
    loc[i]=0X38; 
    i++; 
    data[l]=0X38; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X30; 
    i++; 
    data[l]=0X30; 
     l++; 
    loc[i]=0X2E; 
    i++; 
    data[l]=0X2E; 
     l++; 
    loc[i]=0X39; 
    i++; 
    data[l]=0X39; 
     l++; 
    loc[i]=0X34; 
    i++; 
    data[l]=0X34; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X30; 
    i++; 
    data[l]=0X30; 
     l++; 
    loc[i]=0X30; 
    i++; 
    data[l]=0X30; 
     l++; 
    // char loc1[]="$GPGGA,130305.0,2529.64237,N,8151.969852,E,1,08,0.94,00499,M,047,M,,*"; 
    loc[i]=0X34; 
    i++; 
    data[l]=0X34; 
     l++; 
    loc[i]=0X39; 
    i++; 
    data[l]=0X39; 
     l++; 
    loc[i]=0X39; 
    i++; 
    data[l]=0X39; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X4D; 
    i++; 
    data[l]=0X4D; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X30; 
    i++; 
    data[l]=0X30; 
     l++; 
    loc[i]=0X34; 
    i++; 
    data[l]=0X34; 
     l++; 
    loc[i]=0X37; 
    i++; 
    data[l]=0X37; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X4D; 
    i++; 
    data[l]=0X4D; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X2C; 
    i++; 
    data[l]=0X2C; 
     l++; 
    loc[i]=0X2A; 
    i++; 
    data[l]='\0'; 
    // l++; 
    loc[i]='\0'; 
    // l=0; 
    // for(k=1;k<=i-2;k++) 
    // { 
    // data[l]=data[k]; 
    // l++; 
    // } 
    // data[l]='\0'; 
    //puts(loc); 
    //puts(data); 
    for(u=1;u<=40;u++) 
    { 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    delay_ms(100); 
    } 
    if(god<=2) 
    { 
    lcd_gotoxy(0,0); 
    lcd_putsf("Dist=0"); 
    lcd_gotoxy(13,0); 
    lcd_putsf("mts"); 
    } 
    if(god>2) 
    { 
    lcd_gotoxy(0,0); 
    lcd_putsf("Dist="); 
    dist=dist+11.23; 
    ftoa(dist,2,aa); 
    lcd_puts(aa); 
    lcd_gotoxy(13,0); 
    lcd_putsf("mts"); 
    } 


    /* gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data); 
    gps_putsf(loc,data);*/ 



    } 

} 

回答

1

愛特梅爾ATmega16的ATmega32的和唯一的區別是他們的存儲空間的大小;它們在架構上完全相同,並且共享通用外設。可能不需要「轉換」,除了改變處理器特定的頭部。