Forum: Compiler & IDEs bit_is_set bit_is_clear


von Bernd (Gast)


Lesenswert?

Ich schreibe gerade ein Programm, daß unter anderem Daten seriell auf 
einen Pin rauschieben soll.
Ich habe da allerdings ein Problem: es liegt an der Art Verwendung der 
bit_is_set und bit_is_clear Befehle denk ich.

Hier der entsprechende Programmteil:


for(dummy=0; dummy<8; dummy++)  //data senden mit MSB voran
  {
    if(bit_is_set(data, dummy)) sbi(PORTB, PINB1);
    if(bit_is_clear(data, dummy)) cbi(PPOTB, PINB1);
    timer0_start();
    while(1)
    {
      if(inp(TCNT0) == time) break;
    }
    timer0_stop();
  }


Ich habe über bit_is_set folgendes gefunden:

uint8_t bit_is_set(uint8_t port, uint8_t bit);

description. Returns 1 if the specified bit in port is set. bit can be 0 
to 7. This function uses the sbis instruction to test the bit, so port 
needs to be a valid address for that instruction.

Wie kann ich das lösen, eine Alternative zu bit_is_set und 
bit_is_clear??

von Lanius (Gast)


Lesenswert?

was ist denn data?

die Befehle gehen nur für Register, nicht für Variablen denke ich.

ich würde nehmen:

for....
{
      if ((data & 0x01) == 1)
                        sbi(PORTB, PINB1);
       if ((data & 0x01) == 0)
                         sbi(PORTB, PINB1);
     data= data>>1;
}

von Bernd (Gast)


Lesenswert?

Danke für die Antwort, Problem hat sich somit erledigt!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.