2013-04-18 3 views
0

Veuillez aider à résoudre ce problème, l'erreur que j'obtiens ici est la syntaxe près de { puisque j'avais déclaré char non signé près de DAC_table j'ai eu une erreur, donc définissez en dehors de la fonction qui est faux ... je n'ai pas posté mon code complet ici ... dans cette partie du code que je suis en train de problème ..Programme de débogage avec des pointeurs et des tableaux

unsigned char DAC_table[16];  
unsigned char *ptr2tbl; 
void fnSelectVoltage(void) 
{ 
    line_display(1, "Volt Sel"); 
    sprintf(line_buf," %d V",(unsigned int)*ptr2tbl);  
    line_display(2, line_buf); 

    DAC_table[16] = (0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 
         0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F); 
    *ptr2tbl = &DAC_table; 
    while (START_KEY) 
    { 
     if (!UP_KEY) 
     { 
      wait_for_any_key_counter_0 = 0; 
      for (i = 0; i<15; i++)  
      { 
       P2 = *ptr2tbl++;    
       // delay_ms(1000);   
      } 
     } 
     else if(!DOWN_KEY) 
     { 
      wait_for_any_key_counter_0 = 0; 
      for (i = 0; i<15; i++)  
      { 
       P2 = *ptr2tbl++;     
       // delay_ms(1000);    
      } 
     } 
    } 
} 
+0

Vous ne pouvez pas affecter le contenu de DAC_table de cette manière. Assignez-les directement dans la déclaration du tableau et utilisez des accolades { – gd1

+0

veuillez formater votre question – Alex

Répondre

1
unsigned char DAC_table[16];// u hv created a global array here 

pour affecter des valeurs à elle,

DAC_table[0] = 0x00; 
    DAC_table[1] = 0x01; and so on. 

OU encore mieux

unsigned char DAC_table[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; at the line of declaration. 

Vous ne pouvez pas affecter de valeurs à des variables au niveau de la portée de fichier, sauf à la ligne de déclaration.

+1

Il ne modifie jamais le tableau: il peut simplement définir les éléments lors de la déclaration. – gd1

+0

@ gd1 ya dats betr –

+0

Merci pour cela .. je vais considérer votre suggestion et mettre en œuvre le code mieux .. – user2293738

0

Après un bref coup d'œil à votre code, je peux dire que:

  • ptr2tbl est utilisé sans initialisation, quand il est d'abord appelé -> sprintf(line_buf," %d V",(unsigned int)*ptr2tbl).
  • *ptr2tbl = &DAC_table; est incorrect. Vous voulez probablement quelque chose comme ça: ptr2tbl = DAC_table une fois que les deux sont des pointeurs. Rappelez-vous que * ptr2tbl accèdera à l'élément qu'il pointe vers, et à ce moment, dans votre code, il pointe vers nulle part
  • P2 n'est pas déclaré (P2 est une variable globale?)
  • et, comme dit auparavant, vous ne pouvez pas initialiser DAC_table de cette façon (l'utilisation de parenthèses est incorrecte).
+0

oui vous avez raison..il était ma bêtise de mettre des accolades communes au lieu de bretelles sinueuses .. comme je suis nouveau à la programmation de pointeurs il y a beaucoup à apprendre .. – user2293738

Questions connexes