/*
programa: prueba oscilador interno
pic: 18f4550
crystal: NO CPU: 1Mhz (valor por defecto)
en RA6 sale la frecuencia de Fosc/4 = 250khz
CONEXIONES:
1 led en port b0 con una resistencia en serie de 470ohms
1 led en port b1 con una resistencia en serie de 470ohms
Los leds cambian de estado cada 1 segundo. Uno enciende y el otro se apaga cada vez.
*/
/*Includes globales*/
#include <p18f4550.h>
#include <delays.h>
/*Includes locales*/
/* Bits de configuración*/
#pragma config FOSC = INTOSC_EC // Seleccionamos Oscilador interno, en pin RA6 sale Fosc/4. El USB usa Clock Externo.
#pragma config WDT = OFF //desactivamos watchdog timer
#pragma config PWRT = ON // activamos power up timer
#pragma config LVP = OFF
#define PINLED0 TRISBbits.TRISB0
#define PINLED1 TRISBbits.TRISB1
#define LED0 LATBbits.LATB0
#define LED1 LATBbits.LATB1
/*declaración de funciones*/
//////////////////////////////////////////////////////////////////////////////////////////////////
// Programa Principal //
//////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
ADCON0 = 0X00,ADCON1 = 0X0F,CMCON = 0X07; //puerto A con todos los pines digitales
TRISA = 0X00; // puertos A B y C como salida. Recordar Tip: el 0 es una o de ouput y el 1 una I de input!!!
TRISB = 0X00;
TRISC = 0X00;
LATA = 0X00; // ponemos los puertos en cero
LATB = 0X00;
LATC = 0X00;
PINLED0 = 0; // Seteamos el pin como salida para el LED
PINLED1 = 0; // Seteamos el pin como salida para el LED
while(1)
{
LED0 = ~LED0; // Intercambiamos el estado del pin del led (Toggle LED)
Delay10KTCYx(25); //Delay de 250K ciclos (1 segundo a 1MHz. Ya que cada instrucción toma 4 ciclos)
LED1 = ~LED1; // Intercambiamos el estado del pin del led (Toggle LED)
}
}