Muchos pines de su microcontrolador tienen diferentes funciones. La función 'normal' se referiría a GPIO, Entrada / Salida de propósito general . En ese caso, puede usar estos pines directamente escribiendo y leyendo desde los registros relevantes.
Las funciones 'alternativas' se referirían a otras funciones, que pueden incluir I 2 C, SPI, USART, CCP, PWM, Clock, ADC, etc. La forma en que controla los pines cuando está en una función alternativa depende del periférico, pero generalmente se reduce a escribir y leer desde registros de funciones especiales (SFR); el periférico se encarga del resto.
La función que es estándar después de un RESET depende ( no siempre es GPIO), y puede encontrarla en la hoja de datos correspondiente. La mayoría de las veces, puede seleccionar la función que desea usar sobre la marcha, para que pueda cambiar entre periféricos.
Al usar un pin para varios periféricos, puede hacer microcontroladores con muchas funciones. Sin embargo, debido a que la mayoría de las veces quiere ese periférico en ese pin todo el tiempo (y no quiere cambiar las funciones sobre la marcha), no puede usar todos los periféricos en un programa, o al menos no al mismo tiempo hora. Por otro lado, eso no es realmente necesario de todos modos.
Como señala Connor , la 'función alternativa' también puede referirse a otra cosa, en un contexto ligeramente diferente: aquí no se trata de qué función pones en un pin, sino de qué pin usas para una función. Esto se llama Peripheral Pin Select, y básicamente significa que puede seleccionar qué pin está usando su periférico. Podría, por ejemplo, hacer RS232 sobre RA1 y RA2 o sobre RB1 y RB2.
Ver la respuesta de Connor para una descripción más detallada (y votarlo por esto).