PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Register in unterprogramm übergeben? [Danke, erledigt]



Christoph2
13.02.2008, 14:06
Hi, ich brauche oft die funktion, dass ein programm auf einen tastendruck wartet.
Dazu habe ich mir das hier geschrieben:


void wait_for_key (uint8_t *inputreg, uint8_t inputbit)
{ do{}
while(bit_is_set(*inputreg, inputbit));
_delay_ms(50);

do{}
while(bit_is_clear(*inputreg, inputbit));
_delay_ms(50);
}


Aufruf:

int main (void)
{ ...
wait_for_key(PINC, 0);
...
}

Ich bekomme beim kompilieren keine errors, nur ein warning, dass ich einen pointer ohne cast mache. Ich habe keine Ahnung wo ich den cast hinmachen soll, aber ich glaube das ist sowieso nicht das einzige problem, ich denk da is was mit der übergabe des PIN-registers falsch.

Wenn ich das programm auf den microcontroller spiele, reagiert er einfach nicht auf den Tastendruck.

Könnt ihr mir sagen was an meinem programm falsch ist?

lg Christoph

PicNick
13.02.2008, 14:16
Versuch mal


int main (void)
{ ...
wait_for_key((uint8_t*)&PINC, 0);
...
}

Christoph2
13.02.2008, 16:34
Danke es hat funktioniert!!

Kann man das Register irgendwie anders (außer mit Pointern) übergeben?
Dass man sich den cast erspart?

lg christoph

PicNick
14.02.2008, 11:15
In deinem Fall nicht wirklich. Deine function braucht nunmal die Adresse des Ports und nicht den Inhalt, also eben den Pointer.

Christoph2
14.02.2008, 12:28
ok, macht nichts, danke!