www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfestellung zu C-Code für Mikrocontroller


Autor: Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen, ich hab für einen Mikrocontroller folgenden Code 
programmiert. Wenn ich im Hauptprogramm die Funktion so aufrufe
read_port("98"), dann soll auch die if-Bedingung erfüllt werden. Dies 
tut aber nicht. Was könnte ich falsch gemacht haben?
unsigned char read_port(char *portname)
{
  if(portname == "P98")
  {
  
    PMC9 = PMC9 | 0x0100;
    PM9  = PM9 | 0x0100;
  }
  
  return P9;
}

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal abgesehen von allem anderen: "P98" ist nicht "98"...

Autor: Marcel V. (antis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich ist read_port("98") falsch und es muss heißen 
read_port("P98")

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(portname == "P98")

das vergleicht zwei Adressen, nicht den Inhalt.  Du kannst Strings nicht 
so vergleichen.

if (!strcmp(portname, "P98"))

Autor: V.H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
portname kann niemals "P98" sein, wenn du die Funktion mit 
read_port("98") aufrufen tust.

Autor: Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char read_port(char *portname)
{
  if(portname == 'P98')
  {
  
    PMC9 = PMC9 | 0x0100;
    PM9  = PM9 | 0x0100;
  }
  
  return P9;
}

void main (void)
{
...
read_port('98')
...
}

Funktioniert aich nicht.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Funktioniert aich nicht.
Sind jetzt ja auch Strings in chars. In Hochkommas darf nur ein Zeichen, 
Zeichenketten kommen in ".

strings müssen mit strcmp verglichen werden. Einfach "==" geht nicht.

also in main
int main(){
  read_port("P98");
  while(1);
}
und in der Funktion
unsigned char read_port(char *portname)
{
  if(!strcmp(portname,"P98"))
  {
  
    PMC9 = PMC9 | 0x0100;
    PM9  = PM9 | 0x0100;
  }
  
  return P9;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AUch wenn ich nicht glaube, dass du da eigentlich mit Strings arbeiten 
willst:

http://www.mikrocontroller.net/articles/FAQ#Wie_fu...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.