Tienes tres opciones.
1. Usando #defines
AVR Studio pasa el código a través de AVR ASM Preprocessor . Esto hace cosas similares al preprocesador C / C ++, pero funciona en el ensamblaje. Dado que está escribiendo en ensamblador puro, el código no será portátil, por lo que también puede aprovechar las capacidades de AVR Studio (y de hecho cualquier cosa que use AVR libc). Simplemente puedes usar un define como en C:
#define SOMEPIN PINC,2
sbic SOMEPIN;
Incluso podría buscar algo más avanzado para poder utilizar los registros de entrada, salida y dirección. Algo a lo largo de las líneas de:
#define CONCAT(a,b,c) a##b##,##c ; Helper for concatenation
#define SOMEPIN(p) CONCAT(p,C,2) ; Define as xC,2
sbic SOMEPIN(PIN) ; Expands to 'sbic PINC,2', and then to 'sbic 0x##,2'
sbi SOMEPIN(DDR) ; Expands to 'sbi DDRC,2'
Algunos pueden decir que está abusando del preprocesador, pero si te ayuda a entender mejor el código, que así sea.
2. Sólo el bit
Este es posiblemente más fácil ya que no requiere el preprocesador. En lugar de definir todo el comando, simplemente defina el bit que desea, pero también incluya en qué puerto está interesado en el nombre. Por ejemplo:
.equ SOMEPIN_D = 2;
sbic PIND, SOMEPIN_D;
De esa manera, si conoce el nombre del pin (SOMEPIN_D), puede recordar fácilmente a qué puerto / pin / ddr lo pertenece, ya que forma parte del nombre.
3. Macros
@Ignacio mencionó esto en los comentarios. Puede usar macros para hacer lo que quiera, aunque han pasado varios años desde que escribí algo en ensamblador puro, así que no puedo decir de inmediato cómo.