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;
}