Поскольку C передается по значению, изменяется только локальная переменная.
Вы можете использовать макросы:
#define SET_LED(POORT, PIN) ((POORT) |= (1<<(PIN)))
или передать переменную в качестве указателя:
void set_led(volatile uint8_t *poort, int pin)
{
*poort |= (1<<pin);
}
и назовите его, например, set_led(&port, pin);
.
Тип int
, вероятно, неправильный и должен быть volatile uint8_t
.