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??
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;
}
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.