Buenas, aunque es un hilo bien antiguo pero igual no deja de ser interesante para muchos incluyéndome e igualmente para los que estén en etapa de aprendizaje, pues aquí dejo mi aporte:
Primero toca definir el puerto como byte de dicho pin a manipular:
#byte PORTB = getenv("SFR:PORTB") // SE DEFINE COMO BYTE EL PUERTO PARA PODER ACCEDER AL PIN DIRECTAMENTE
esta seria la forma mas practica para direccionarlo, pues el compilador CCS de forma autónoma toma la dirección del puerto del pic que se va a utilizar ( es decir que de esta forma funciona para todos los pic), por que no todos los pic tienen dicho puerto en la misma dirección por que la otra forma seria:
#byte PORTB = 0x07 // SE DEFINE COMO BYTE EL PUERTO PARA PODER ACCEDER AL PIN DIRECTAMENTE
pero en este caso la dirección 0x07 correspondería al registro del puerto b del pic16f876a, si se va a usar otro pic tocaria mirar la hoja de datos de dicho pic para ingresar la dirección correcta del puerto a utilizar.
Ahora se define el pin a utilizar:
#bit led = PORTB.1 // DEFINE PIN 1 del puerto b
ya solo quedaría ponerlo como salida como el siguiente ejemplo y asi funcionaria:
output_b (0x00); //Borra las salidas del puerto b
set_tris_b(0x01); //RB0/INT entrada, resto salidas
void mi_led() //
{
if (led == 0) led = 1; // lee la salida, si esta en '0' la cambia a '1',
else led = 0; // si ya esta en '1', la cambia a '0'.
}
adjunto codigo ejemplo,
Espero les sirva, buena suerte, saludos.