#define _XTAL_FREQ 8000000
void main (void){
TRISBbits.RB0 = 0;
while (1){
LATDbits.LATD0 = ~LATDbits.LATD0;
__delay_ms(1000);
}
return;
}
¿Qué es un microcontrolador?
Programación de Microcontroladores PIC: Conceptos Básicos y Aplicaciones
Características de Microcontroladores PIC18 para Aplicaciones Avanzadas
Eligiendo un microcontrolador
Arquitectura y Funcionalidades de Microcontroladores PIC18F4550
Comprar y programar tu primer microcontrolador
Programación de Microcontroladores PIC con Hardware Básico
Configuración de Entorno para Desarrollo con Microcontroladores PIC
Configuración de Microcontroladores: Pines y Modos de Operación
Programación de Microcontroladores PIC: Control de LED Básico
Manejar entradas y salidas básicas
Conexión de microcontrolador PIC a programador Pic Kit
Programación de Microcontroladores: Conexión y Configuración de Pines
Lectura de Entradas con Microcontroladores para Encender un LED
Conexión y Uso de Sensores con Microcontroladores
Cierre del curso
Proyectos con Microcontroladores: Entradas y Salidas Básicas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Iniciar tu viaje en la programación puede parecer desalentador, pero no hay nada más gratificante que ver funcionar ese primer código que has creado. Vamos a adentrarnos en cómo estructurar un archivo principal de tu proyecto y entender su funcionalidad.
El archivo "Main", generalmente llamado main.c
, es el corazón de tu proyecto en C. Es el punto de entrada de tu aplicación donde el microcontrolador comienza a ejecutar las instrucciones.
Crear el archivo:
Agregar metadatos:
Usar librerías es esencial para no reinventar la rueda y aprovechar código ya escrito y optimizado. Debes incluir las librerías que vayas a utilizar mediante el siguiente proceso:
Para utilizar una librería, se usa #include
. Por ejemplo, puedes incluir una librería de configuración con el comando:
#include "configuraciones.h"
#include "18F45K50.h"
El código anterior asume que tienes un archivo de configuración y estás utilizando un microcontrolador específico.
Definir la frecuencia del cristal es crucial para asegurar que tu microcontrolador funcione correctamente:
#define _XTAL_FREQ 8000000
Esta línea indica que la frecuencia es de 8 MHz, esencial para las operaciones de tiempo.
Una parte emocionante de programar un microcontrolador es poder manipular hardware directamente, como un LED. Vamos a ver cómo se configura un simple parpadeo de luz.
TRISB0 = 0;
para definir el pin RB0 como salida.0
representa una salida (output), mientras que un 1
sería una entrada (input), usado típicamente para botones o sensores.Para que el LED parpadee continuamente, utilizamos un bucle while
que se ejecuta para siempre. Un ejemplo básico sería:
while(1) {
RB0 = 1; // Encender LED
__delay_ms(1000); // Esperar 1 segundo
RB0 = 0; // Apagar LED
__delay_ms(1000); // Esperar 1 segundo
}
La depuración es parte de la programación. Si el compilador indica un fallo, generalmente detalla el error en el output de la terminal. Por ejemplo:
expected ;
sugiere que falta un punto y coma.Con el código escrito y sin errores de compilación, el siguiente paso es descargar el programa en el microcontrolador y observar cómo tu LED cobra vida. ¡Es fascinante ver el resultado tangible de tu código funcionando! Sigue fortaleciendo tus bases y explorando más el mundo de los microcontroladores.
Aportes 6
Preguntas 2
#define _XTAL_FREQ 8000000
void main (void){
TRISBbits.RB0 = 0;
while (1){
LATDbits.LATD0 = ~LATDbits.LATD0;
__delay_ms(1000);
}
return;
}
Los microcontroladores disponen de muchos registros de control de sus periféricos, dentro de los cuales se encuentran los registros para configurar los puertos de I/O, puertos ADC, PWM, UART, SPI, USB, Interupciones.
#define _XTAL_FREQ 8000000
#include <xc.h>
#include "config.h"
void main(void) {
TRISB0 = 0;//puerto RB0 como salida, El purto B tiene 8 pines I/O, se direccionan desde el 0 hasta el 7
while(1){
//RB0 = 1;//pone un valor alto en el pin PORTB-0
LATB = 1;//pone un valor alto en el pin PORTB-0, los otros puertos de PORTB son cero.
__delay_ms(1000);//El microcontrolador se mantiene en ésta posición por 1.000 mili-segundos.
RB0 = 0;//pone un valor bajo en el pin PORTB-0
__delay_ms(1000);
}
return;
}
amigo por que usas delays. Brooo brooo espero que sea solo par el ejemplo del led. aun asi es buenas practicas no usar delays por que dejan colgado tu programa. se recomienda el uso del sysTick
Este procedimiento SOLAMENTE VA A FUNCIONAR si lo hacen con el PIC 18F4550, si requieren utilizar otro aunque sea la mismo Familia y gama (por ejemplo: PIC 18F4523).
No va a funcionar debido a que los header (xc.h) son muy diferentes. Así como también la manera de definir nombres y el status de los puertos.
Les dejo un ejemplo para el 18F4523:
#include <xc.h>
#include "18F4523-config.h"
#define _XTAL_FREQ 8000000
//#include "flex_lcd.h"
#include<string.h>
#include<stdio.h>
//#include "i2c/i2c.h"
//#define SW1 PORTCbits.RC3
//#define SW2 PORTCbits.RC2
//#define SW3 PORTCbits.RC1
#define LED_1 PORTCbits.RC2
//#define LED_2 PORTDbits.RD2
//#define LED_3 PORTDbits.RD3
Excelente clase
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?