Christoph2
22.02.2008, 22:41
Hallo!
Wie kann ich ein ein Register (PIN oder PORT) in ein Unterprogramm übergeben.
Ich weiß dass es mit Pointern geht, aber da brauche ich einen Cast, das will ich vermeiden.
bei den Funktionen:
bit_is_set(PINB, 5)
bit_is_clear(PINC, 2)
Geht das ja auch.
Ich habe nach ihnen in den Include datein gesucht, aber nichts gefunden, was ich verstanden habe, die includedatein schaun gar nicht wie C aus, ich checks überhaupt nicht.
Diese Funktion will ich schreiben (ohne Cast beim Aufruf):
void wait_for_key (uint8_t *inputreg, uint8_t inputbit) // Pin Register über Pointer einlesen
{ do{}
while(bit_is_set(*inputreg, inputbit)); // Auf Tastendruck warten
_delay_ms(50); // Entprellung
do{}
while(bit_is_clear(*inputreg, inputbit)); // Aufs loslassen warten
_delay_ms(50); // Entprellung
}
Aufruf:
int main(void)
{ ...
wait_for_key((uint8_t*)&PINC, 0);
...
}
lg Christoph
Wie kann ich ein ein Register (PIN oder PORT) in ein Unterprogramm übergeben.
Ich weiß dass es mit Pointern geht, aber da brauche ich einen Cast, das will ich vermeiden.
bei den Funktionen:
bit_is_set(PINB, 5)
bit_is_clear(PINC, 2)
Geht das ja auch.
Ich habe nach ihnen in den Include datein gesucht, aber nichts gefunden, was ich verstanden habe, die includedatein schaun gar nicht wie C aus, ich checks überhaupt nicht.
Diese Funktion will ich schreiben (ohne Cast beim Aufruf):
void wait_for_key (uint8_t *inputreg, uint8_t inputbit) // Pin Register über Pointer einlesen
{ do{}
while(bit_is_set(*inputreg, inputbit)); // Auf Tastendruck warten
_delay_ms(50); // Entprellung
do{}
while(bit_is_clear(*inputreg, inputbit)); // Aufs loslassen warten
_delay_ms(50); // Entprellung
}
Aufruf:
int main(void)
{ ...
wait_for_key((uint8_t*)&PINC, 0);
...
}
lg Christoph