me parece buena la idea de este curso ya q estoy estydiando microcontroladores y me ha tocado trabajar con este  pic 16f877 y he podido ver lo completo y facil de maniobrar q es
				
			Follow along with the video below to see how to install our site as a web app on your home screen.
							
						
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include<pic.h>
/*Definición de entradas y salidas*/
#define		v1	RB0
#define		v2	RB1
#define		v3	RB2
#define		v4	RB3
#define	       paro	RD0
#define	      arranque	RD1
#define		m1	RD2
#define		m2	RD3
#define		m3	RC4
#define		m4	RC5
/*Inicio de Programa.*/
void ciclo (void);
void main (void)
{
/*Declaración de los puertos como entradas o salidas.*/
TRISD=255;TRISC=255;TRISB=0;
/*Declaración de variables.*/
v1=0;v2=0;v3=0;v4=0;
/*Inicio de secuencia.*/
while(1)
   { 
   if(arranque==0)
      {
      while(paro==1)
         {
         v1=1;
         v2=0;
         v3=0;
         v4=1;ciclo1();
         v1=1;
         v2=0;
         v3=0;
         v4=0;ciclo2();
	 v1=1;
         v2=0;
         v3=1;
         v4=0;ciclo3();
	 v1=0;
         v2=1;
         v3=1;
         v4=0;ciclo1();
	 v1=0;
         v2=0;
         v3=1;
         v4=0;ciclo2();
	 v1=1;
         v2=0;
         v3=1;
         v4=0;ciclo3();
         }
      }
   if (arramque==1)
      {
      while (paro==0)
         {
	 v1=1;
	 v2=0;
	 v3=1;
	 v4=0;
 	 }
      while (paro==1)
	 {
	 while (m1==0)
      }
   }
}
void ciclo1 (void)
{
int cont=0,cont2=0;
OPTION=8;TMR0;T0IF=0;
for (cont=0;cont<120;cont++)
	{
	for (cont2=0;cont2<255;cont2++)
		{
		if (paro==0)
			{
			cont=1250;
			cont2=64;
			}
		else
			{
			while (T0IF==0);T0IF=0;
			}
		}
	}
}
void ciclo2 (void)
{
int cont=0,cont2=0;
OPTION=8;TMR0;T0IF=0;
for (cont=0;cont<48;cont++)
	{
	for (cont2=0;cont2<255;cont2++)
		{
		if (paro==0)
			{
			cont=1250;
			cont2=64;
			}
		else
			{
			while (T0IF==0);T0IF=0;
			}
		}
	}
}
void ciclo3 (void)
{
int cont=0,cont2=0;
OPTION=8;TMR0;T0IF=0;
for (cont=0;cont<1;cont++)
	{
	for (cont2=0;cont2<255;cont2++)
		{
		if (paro==0)
			{
			cont=1250;
			cont2=64;
			}
		else
			{
			while (T0IF==0);T0IF=0;
			}
		}
	}
}
	#include<pic.h>
#define		v1	RB0
#define		v2	RB1
#define		v3	RB2
#define		v4	RB3
#define	       paro	RD0
#define	      arranque	RD1
void ciclo (void);
void main (void)
{
TRISD=255;TRISB=0;
v1=0;v2=0;v3=0;v4=0;
while(1)
   { 
   if(arranque==0)
      {
      while(paro==1)
         {
         v1=1;
         v2=0;
         v3=0;
         v4=1;ciclo();
         v1=1;
         v2=0;
         v3=0;
         v4=0;ciclo();
         }
      }
   }
}
void ciclo (void)
{
int cont=0,cont2=0;
OPTION=8;TMR0;T0IF=0;
for (cont=0;cont<1;cont++)
	{
	for (cont2=0;cont2<255;cont2++)
		{
		if (paro==0)
			{
			cont=1250;
			cont2=64;
			}
		else
			{
			while (T0IF==0);T0IF=0;
			}
		}
	}
}
	sdcc -mpic14 -p16f877 -V --debug -I/home/erko/Piklab/ -c Seca.c
+ "/usr/bin/sdcpp" -nostdinc -Wall -std=c99 -I"/home/erko/Piklab/" -obj-ext=.o -DSDCC_MODEL_SMALL -DSDCC=270 -DSDCC_pic14 -D__pic14 -DSDCC_PROCESSOR="16f877" -I"/usr/bin/../share/sdcc/include/pic14" -I"/usr/share/sdcc/include/pic14" -I"/usr/bin/../share/sdcc/include" -I"/usr/share/sdcc/include" -I"/usr/bin/../share/sdcc/include/pic" -I"/usr/share/sdcc/include/pic" "Seca.c"
Seca.c:1: 16: error: pic.h: No such file or directory
Seca.c:21: error 20: Undefined identifier 'TRISD'
Seca.c:21: error 20: Undefined identifier 'TRISB'
Seca.c:23: error 20: Undefined identifier 'RB0'
Seca.c:23: error 20: Undefined identifier 'RB1'
Seca.c:23: error 20: Undefined identifier 'RB2'
Seca.c:23: error 20: Undefined identifier 'RB3'
Seca.c:29: error 20: Undefined identifier 'RD1'
Seca.c:33: error 20: Undefined identifier 'RD0'
Seca.c:37: error 20: Undefined identifier 'RB0'
Seca.c:39: error 20: Undefined identifier 'RB1'
Seca.c:41: error 20: Undefined identifier 'RB2'
Seca.c:43: error 20: Undefined identifier 'RB3'
Seca.c:45: error 20: Undefined identifier 'RB0'
Seca.c:47: error 20: Undefined identifier 'RB1'
Seca.c:49: error 20: Undefined identifier 'RB2'
Seca.c:51: error 20: Undefined identifier 'RB3'
Seca.c:67: error 20: Undefined identifier 'OPTION'
Seca.c:67: error 20: Undefined identifier 'TMR0'
Seca.c:67: error 20: Undefined identifier 'T0IF'
Seca.c:77: error 20: Undefined identifier 'RD0'
Seca.c:91: error 20: Undefined identifier 'T0IF'
Seca.c
Seca.c:91: error 20: Undefined identifier 'T0IF'
*** Salida con estado: 1 ***