Descripcion de la Placa B8P40 utilizada para los ejercico de programacion en Laboratorio U.E.B Asignatura ELT
Lista de Repositorio de practicas efectuadas en laboratorio- https:/github.com/pablinza/piclab1.git
- https:/github.com/pablinza/piclab2.git (en desarrollo)
El siguiente codigo es un ejemplo basico creado en MPLABX el cual permite destellar el LED DS1 conectado el pin RE2 del MCU, este codigo sera la base del resto de ejemplo que se veran en los laboratorios. En el codigo se considera que el PIC16F887 opera a una frecuencia de 8MHz utilizando el Oscilador Interno. En caso de utilizar tinybootloader, se debe reservar el uso de memoria en MPLABX.
La carpeta p0apptest.X
coeesponde al proyecto generado con MPLABX
version 6.25 y utiliza el compilador XC8
version 2.5
La carpeta P0apptestasm.X
contiene el proyecto generado con MPLABX
version 6.25 utilizando el ensamblador PIC-AS
ent level
- Codigo del programa en
main c
#pragma config FOSC=INTRC_NOCLKOUT, WDTE = OFF, BOREN = OFF, LVP = OFF
#include <xc.h>
#define LEDpin PORTEbits.RE2 //Led de la tarjeta
volatile __bit tickms;
void setupMCU(void); //Configuracion del PIC
void taskLED(void); //Tarea para destellar el LED
void __interrupt() isr(void) //Rutina de servicio a la Interrupcion
{
if(INTCONbits.T0IF) //Evento del temporizador 0.001s
{
INTCONbits.T0IF = 0;
TMR0 += 131; //Recarga el contador
tickms = 1;
}
}
void main(void)
{
setupMCU();
while(1)
{
if(tickms)
{
tickms = 0;
taskLED(); //Destella LED
}
}
}
void setupMCU(void)
{
OSCCONbits.IRCF = 0b111; //Oscilador Interno 8MHz
while(OSCCONbits.HTS == 0);
ANSEL = 0; //Desactiva pines ADC AN0 al AN7
ANSELH = 0;//Desactiva pines ADC AN8 al AN13
TRISEbits.TRISE2 = 0; //Salida LED
OPTION_REGbits.nRBPU = 0; //Activa las pull-ups PORTB
/* CONFIGURACION TIMER0 1MS a Fosc=8MHz*/
OPTION_REGbits.T0CS = 0;//Modo Termporizador
OPTION_REGbits.PSA = 0; //Con prescala
OPTION_REGbits.PS = 0b011; //Prescala 1:16
TMR0 = 131; //256-(time/((pre)*(4/Fosc))) time=0.001 seg
INTCONbits.T0IF = 0; //Limpia bandera
INTCONbits.T0IE = 1; //Activa interrupcion del TMR0
INTCONbits.GIE = 1; //Habilitador global ISR
}
void taskLED(void) //Destello de LED1 1Hz al 20%
{
static uint16_t cnt = 0;
if(cnt++ > 999)
{
cnt = 0;
LEDpin = 1; //Activa LED
}
if(cnt == 200) LEDpin = 0; //Apaga LED
}
Adjunto el siguiente link que muestra como compilar estos ejemplos en MPLABX
Autor: Pablo Zarate, puedes contactarme a pablinza@me.com / pablinzte@gmail.com.Visita mi Blog [Blog de Contenidos](https://pablinza.blogspot.com/).
Visita mi Canal [Blog de Contenidos](http://www.youtube.com/@pablozarate7524)).
Facultad de Ciencias y Tecnologia UEB - Ingenieria Electronica.
Santa Cruz - Bolivia
***********************