	<sect1 id="system" xreflabel="system">
		<title>M&oacute;dulo system</title>
		<para> Aqu&iacute; se ecnuentran algunas funciones de configuraci&oacute;n	</para>
		<para>
		<screen>
	#include &lt;system.h>
		</screen>
		</para>

		<sect2 id="sleep" xreflabel="sleep">
		<title>sleep</title>
		<para> Pone a dormir el microcontrolador </para>
		<screen>
	void sleep(void);
		</screen>
		</sect2>

		<sect2 id="asm" xreflabel="asm">
		<title>ASM</title>
		<para> Funci&oacute;n que incrusta c&oacute;digo ASSEMBLER </para>
		<screen>
	void ASM(char comando[]);
		</screen>
		</sect2>

		<sect2 id="ejemplosystem" xreflabel="Ejemplo System">
		<title>Ejemplo System</title>
		<para> Para compilar necesitas los siguientes comandos </para>
		<para>
		<screen>
Ejemplo de compilacion : ./compila.sh ej_system 16f877a
		</screen>
		</para>
		<para> ej_system.c </para>

		<screen>

#include &lt;pic/p16f877a.h>
#include &lt;system.h>
#include &lt;pinio.h>

int main(void)
{
	unsigned char dato=0xF0;
	unsigned char res;

	//Puerto B como salida
	ASM("BANKSEL TRISB");
	ASM("MOVLW  0x00");
	ASM("MOVWF  TRISB");

	//0xF0  --> PORTB
	ASM("BANKSEL F_REG");//dato se encuentra en el banco de F_REG
	ASM("MOVF  %0,W"::"r" (dato));
	ASM("BANKSEL PORTB");
	ASM("MOVWF  PORTB");

	//PORTB --> res
	ASM("BANKSEL PORTB");
	ASM("MOVF  PORTB,W");
	ASM("BANKSEL F_REG");//res se encuentra en el banco de F_REG
	ASM("MOVWF %0":"=v" (res));

	//cuando termines de escribir en asembler
	//siempre debes dejarlo en el banco de F_REG,
	//de lo contrario el programa falla.

	//Pongo a dormir al micro
	sleep();

	return 0;
}

		</screen>
		</sect2>		
		
	</sect1>
