Quelltext geht nicht weiter

Gast #961686
Lesenswert?

Hallo mein Quelltext bleibt immer an der stelle : sp2 = PINB; stecken 
und geht auch nicht weiter außer ich machen aus dem == ein != in der if 
anweisung ich brauche aber ein ==. Ich verwende ein atmaga 16 und AVR 
studio.

1
int main(void)
2
{
3
uint8_t sp2;
4
//lcd_init();            
5
//lcd_home();
6

7

8
               
9
     DDRB  = 0x00;             
10
     //PORTB = 0xff;
11
   
12
    
13
  while(1) 
14
  {                
15
    
16
  sp2 = PINB;  // hier bleibt er immer stehen 
17
   
18

19
       if (sp2 != 0b00000001) // dort brauche ich eigentlich ==
20
      {
21
      PORTD = 0xff; // Teste 
22
      //lcd_string("1");
23
      }
24
         
25
    if (sp2 != 0b00000010) // dort brauche ich eigentlich ==
26
      {
27
      //lcd_string("2");
28
      PORTD = 0xff;  // Teste
29

30
      }
31
     }            
32
return 0;
}
Gast #961691
Lesenswert?

Du hast das hier vergessen:
1
sp2 = PINB;  // hier bleibt er immer stehen 
2
sp2 &= 0b00000011;

Sonst wird die If-Bedingung niemals erfüllt sein, weil du nicht weißt, 
welchen Pegel die anderen Port-Pins haben
Moderator (Firma: Titel) Persönliche Seite #961702
Lesenswert?

@ Frank
>immer an der stelle : sp2 = PINB; stecken
Wie kommst du darauf, welche Auswirkungen verleiten dich zu der Aussage? 
Welcher Compiler? Hast du Hardware oder machst du das im Simulator?

Oder so:
1
sp2 = PINB & 0b00000011;

Besser wäre aber:
1
  sp2 = PINB;  
2
   
3
  if ( sp2 & (1<<PINB0) )   // Taste gegen Vcc an Pin B0
4
  {
5
      PORTD = 0xff; // Teste 
6
  }
7
         
8
  if ( sp2 & (1<<PINB1) )   // Taste gegen Vcc an Pin B1
9
  {
10
      PORTD = 0xff;  // Teste
11
  }
12
:
Gast #961774
Lesenswert?

Die Beschreibung, dass der Quelltext stehen/stecken bleibt finde ich 
ebenfalls etwas sehr seltsam... wie soll denn das genau gehen? Ich glaub 
mal, dass du einfach deinen Fehler nicht ordentlich beschreiben kannst.

Anhand deiner Beschreibung würde ich eher davon ausgehen, dass er 
einfach nicht in die IF-Anweisung springt. Und das liegt dann wohl 
offenbar daran, dass die Bedingung nicht erfüllt ist. Das würde auch 
erklären, warum es mit != "geht" und mit == nicht. Du solltest also 
tatsächlich mal überprüfen woran  es liegt, dass die Bedingung nicht 
wahr wird.

Also erstmal checken welchen Wert PINB tatsächlich hat. Kann der 
überhaupt den abgefragten Wert annehmen? Ansonsten mal überprüfen ob das 
in den Datentyp pb2 überhaupt sinnvoll reinpaßt. Vielleicht hilft ja 
auch schon ein typecast.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren