/*******************************************************************************
 *
 *                       LEDs SECUENCIALES
 *
 *******************************************************************************
 * FileName:        main.c
 * Processor:       PIC18F4620
 * Complier:        C18 v3.47
 * Author:          Pedro Sánchez (MrChunckuee)
 * Blog:            http://mrchunckuee.blogspot.com/
 * Email:           mrchunckuee.psr@gmail.com
 * Description:     Desplazamiento de LEDS en LATB, MCLR on, INT OSC = 4MHz
 *******************************************************************************
 * Rev.         Date            Comment
 *   v1.00      19/12/2014     Creación del firmware
 ******************************************************************************/

#include <p18f4620.h>
#include <stdio.h>
#include <stdlib.h>
#include <delays.h>

#include "Config_FusesPIC.h"//Configuración de FUSES

unsigned char LED_Number=0;
//Ejemplo 1:
unsigned char LED_LookupTable[8]={0x01, 0x02, 0x04, 0x08, 
                                  0x10, 0x20, 0x40, 0x80};

//Ejemplo 2: si se usa este ejemplo comentar ejemplo 1 y 3, y descomentar este
//Cambiar if (LED_Number==8) por if (LED_Number==7)
//unsigned char LED_LookupTable[7]={0x81, 0x42, 0x24, 0x18, 
//                                        0x24, 0x42, 0x81};

//Ejemplo 3: si se usa este ejemplo comentar ejemplo 1 y 2, y descomentar este
//Cambiar if (LED_Number==8) por if (LED_Number==15)
//unsigned char LED_LookupTable[15]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 
//                                   0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 
//                                   0x04, 0x02, 0x01};

void main(void){
    OSCCONbits.IRCF=0b110;//Configura oscilador interno a 4MHz
    ADCON1=0xFF;//Entradas y salidas digitales
    TRISB=0x00;//Puerto B como salida
    LATB=0;//Se inicializán el puerto B en cero

    while(1){
        LATB=LED_LookupTable[LED_Number];
        LED_Number++;
        if (LED_Number==8)
            LED_Number=0;
        Delay1KTCYx(100);//Retardo de 100 mS
    } 
}