C Makro, Bits aus verschiedenen Registern setzen

OP #3079416
Lesenswert?

Hi,

Ich habe 26 Transistoren die an 26 Pins eines AtMega2560 (Arduino 
Mega2560) angeschlossen sind.
Jeweils einer ist fürs setzen und einer fürs Rücksetzen.
Leider sind die Pins nicht schön der Reihe nach und auch über mehrere 
Ports verstreut.
1
/*
2
[Arduino Pins connected to row transistors]
3
SET   ROW 0    = PA0 = 22
4
RESET ROW 0    = PA1 = 23
5
SET   ROW 1    = PA2 = 24
6
RESET ROW 1    = PA3 = 25 
7
SET   ROW 2    = PA4 = 26
8
RESET ROW 3    = PA5 = 27
9
SET   ROW 4    = PA6 = 28
10
RESET ROW 4    = PA7 = 29 
11
SET   ROW 5    = PC7 = 30
12
RESET ROW 5    = PC6 = 31
13
SET   ROW 6    = PC5 = 32
14
RESET ROW 6    = PC4 = 33
15
SET   ROW 7    = PC3 = 34
16
RESET ROW 7    = PC2 = 35
17
SET   ROW 8    = PC1 = 36
18
RESET ROW 8    = PC0 = 37
19
SET   ROW 9    = PD7 = 38
20
RESET ROW 9    = PG2 = 39
21
SET   ROW 10   = PG1 = 40
22
RESET ROW 10   = PG0 = 41
23
SET   ROW 11   = PL7 = 42
24
RESET ROW 11   = PL6 = 43
25
SET   ROW 12   = PL5 = 44
26
RESET ROW 12   = PL4 = 45
27
*/

Gibt es eine Möglichkeit mit hilfe eines Makros das setzen des richtigen 
Pins über die Nummer zu bewerkstelligen?

Standart wäre ja z.B.
1
PORTA |= (1<<PA0);

Aber ich würde gerne sowas in die Richtung haben:
1
set_row(11);
die dann den passenden Port und das entsprechende Bit nimmt und setzt.

Kann man sowas über ein PreProzessor Makro machen?

Danke schon mal für eure Hilfe!

Bouni

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren