Hallo,
das define kommt mir komisch vor zusammen mit der if Abfrage.
1 | #define TASTER !(PORTC.IN & ~TA)
|
Zum Pin schalten/toggeln würde ich auch die vordefinierten "Namen" aus
dem Headerfile verwenden.
Bsp.
Statt binär würde ich auch die vordefinierten Bitmasken verwenden.
Du kannst dir auch wiederverwendbare Funktionen bauen statt defines. Das
mit den defines würde ich mir erst gar nicht so angewöhnen. Man kommt
schwer wieder davon los und muss dann für alles defines schreiben ob man
will oder nicht.
1 | static inline bool PORTF_get_pin_level(const uint8_t pin)
|
2 | {
|
3 | return VPORTF.IN & (1 << pin);
|
4 | }
|
das wird von ... verwendet
1 | static inline bool SW0_get_level()
|
2 | {
|
3 | return PORTF_get_pin_level(6);
|
4 | }
|
dann rufste nur noch das auf - Bsp.
1 | if ( !SW0_get_level() )
|
2 | {
|
3 | LED0_set_level(false);
|
4 | }
|
Die Pinkodierung musste ja nicht hart kodieren, kannste variabel
gestalten.
Noch was vordefiniertes aus dem Headerfile - zum abschauen. :-)
1 | static inline void PORTF_set_pin_level(const uint8_t pin, const bool level)
|
2 | {
|
3 | if (level == true) {
|
4 | VPORTF.OUT |= (1 << pin);
|
5 | } else {
|
6 | VPORTF.OUT &= ~(1 << pin);
|
7 | }
|
8 | }
|