Hallo,
ich will bei meinem atmega32 an eine Funktion einen Pointer auf ein PIN-Register übergeben. Zusammen mit der Pin-Nummer könnte ich dann einen bestimmten Pin setzen. Also so:

SetOutput(volatile uint8_t *pu8_Register, uint8_t u8_Pin)
{
(*pu8_Register) |= (1<<u8_Pin);
}

Da der Compiler nicht weiß, dass ich "nur" auf ein Register zugreifen will ist der Pointer 16 Bit breit. Das wird also in Assembler eher aufwendig. Dazu kommt nocht, das nicht der OUT-Befehl, sondern ein Zugriff über Z-Pointer gemacht wird.

Weiß jemand, wie man den Compiler dazu überreden kann nur einen 8Bit breiten Pointer zu nehmen?
Das mit dem OUT könnte man mit Inline-Assembler lösen. Oder gibts da auch was besseres?

Drew