fijate que encontre esto la verdad que es muy tarde son las 2:30am pero sirve de aporte al fora la encontre como libreia de control de pines la verdad no la revise toda ni la analise por que ya tengo sueño pero la ponder aqui
Módulo IO y manipulación de pines
Muestra las funciones para poder trabajar con los pines del PIC.
#include <pinio.h>
output_high_slow
Establece un PIN a un estado alto de voltaje. Verifica el estado del tris.
void output_high_slow( BYTE puerto,
BYTE pin);
ejemplo:
output_high_slow(PIN_B0);
output_high_fast
Establece un PIN a un estado alto de voltaje. No verifica el estado del tris.
void output_high_fast( BYTE puerto,
BYTE pin);
ejemplo:
output_high_fast(PIN_B0);
output_high
Establece un PIN a un estado alto de voltaje. La verificación del estado del tris depende de habilitar el macro SLOW_IO como TRUE o FALSE.
Por defecto, si no se escribe #define SLOW_IO TRUE , SLOW_IO tiene el valor de TRUE.
#define SLOW_IO TRUE
void output_high( BYTE puerto,
BYTE pin);
ejemplo:
output_high(PIN_B0);
output_low_slow
Establece un PIN a un estado bajo de voltaje. Verifica el estado del tris.
void output_low_slow( BYTE puerto,
BYTE pin);
ejemplo:
output_low_slow(PIN_B0);
output_low_fast
Establece un PIN a un estado bajo de voltaje. No verifica el estado del tris.
void output_low_fast( BYTE puerto,
BYTE pin);
ejemplo:
output_low_fast(PIN_B0);
output_low
Establece un PIN a un estado bajo de voltaje. La verificación del estado del tris depende de habilitar el macro SLOW_IO como TRUE o FALSE.
Por defecto, si no se escribe #define SLOW_IO TRUE , SLOW_IO tiene el valor de TRUE.
#define SLOW_IO TRUE
void output_low( BYTE puerto,
BYTE pin);
ejemplo:
output_low(PIN_B0);
input_slow
Devuelve el estado de un pin. puede ser 1 o 0. Verifica el estado del tris.
BYTE input_slow( BYTE puerto,
BYTE pin);
ejemplo:
input_slow(PIN_B1);
input_fast
Devuelve el estado de un pin. puede ser 1 o 0. No verifica el estado del tris.
BYTE input_fast( BYTE puerto,
BYTE pin);
ejemplo:
input_fast(PIN_B1);
input
Devuelve el estado de un pin. puede ser 1 o 0. La verificación del estado del tris depende de habilitar el macro SLOW_IO como TRUE o FALSE.
Por defecto, si no se escribe #define SLOW_IO TRUE , SLOW_IO tiene el valor de TRUE.
#define SLOW_IO TRUE
BYTE input( BYTE puerto,
BYTE pin);
ejemplo:
input(PIN_B1);
set_pin_to_slow
Establece el estado de un pin a 1 o 0. Verifica el estado del tris.
void set_pin_to_slow( BYTE puerto,
BYTE pin,
BYTE X);
ejemplo:
set_pin_to_slow(PIN_C1,1);//el pin C1 ahora tiene un estado alto
set_pin_to_slow(PIN_C1,0);//el pin C1 ahora tiene un estado bajo
set_pin_to_fast
Establece el estado de un pin a 1 o 0. No verifica el estado del tris.
void set_pin_to_fast( BYTE puerto,
BYTE pin,
BYTE X);
ejemplo:
set_pin_to_fast(PIN_C1,1);//el pin C1 ahora tiene un estado alto
set_pin_to_fast(PIN_C1,0);//el pin C1 ahora tiene un estado bajo
set_pin_to
Establece el estado de un pin a 1 o 0.
La verificación del estado del tris depende de habilitar el macro SLOW_IO como TRUE o FALSE.
Por defecto, si no se escribe #define SLOW_IO TRUE , SLOW_IO tiene el valor de TRUE.
#define SLOW_IO TRUE
void set_pin_to( BYTE puerto,
BYTE pin,
BYTE X);
ejemplo:
set_pin_to(PIN_C1,1);//el pin C1 ahora tiene un estado alto
set_pin_to(PIN_C1,0);//el pin C1 ahora tiene un estado bajo
set_pin_tris_to
Establece el TRIS de un pin a 1 o 0.
void set_pin_tris_to( BYTE puerto,
BYTE pin,
BYTE X);
ejemplo:
set_pin_tris_to(PIN_C1,1);//el TRIS C1 ahora tiene un estado alto
set_pin_tris_to(PIN_C1,0);//el TRIS C1 ahora tiene un estado bajo
set_porta_as_digital
Establece el puerto A como DIGITAL.
#define set_porta_as_digital() ADCON1=0x06
ejemplo:
set_porta_as_digital();
set_pullup_portb
Habilita o deshabilita las resistencias de pull-up del puerto B.
Para habilitar las resistencias de pull-up X= 1 o TRUE.
Para deshabilitar las resistencias de pull-up X= 0 o FALSE.
void set_pullup_portb(BYTE X);
Ejemplo de PinIO
Para compilar necesitas los siguientes comandos.
Ejemplo de compilacion : ./compila.sh ej_pinio 16f877a
ej_pinio.c
#include <pic/p16f877a.h>
#define FOSC_HZ 20000000
#include <pinio.h>
#include <delayms.h>
int main (void)
{
delayms(100);
while(TRUE)
{
delayms(50);
output_high(PIN_C2);
delayms(50);
output_low(PIN_C2);
if(input(PIN_A4)==1) output_high(PIN_B7);
else output_low (PIN_B7);
}
return 0;
}