Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Especificaciones:
✓ El sistema debe poseer 3 secuencias de visualización en un display de 7 segmentos. El
display debe estar conectado a un único puerto del microcontrolador.
✓ La selección de las distintas secuencias de visualización debe ser realizada por medio de
micro interruptores (microswitch).
✓ El sistema debe poseer controles para regular la velocidad de exhibición (temporización)
de las distintas secuencias por medio de pulsadores de Incremento y Decremento. La
atención a los eventos de los pulsantes debe ser realizado por interrupción externa.
Sustento teórico:
➢ Microcontroladores de 8 bits
La gama PIC16F de microcontroladores de Microchip son MCU de 8 bits que incorporan la arquitectura
PIC® de Microchip de una gran variedad de opciones de encapsulado y contactos.
Además, estos dispositivos son las primeras MCU PIC de Microchip en incorporar un convertidor analógico
a digital con cálculo (ADC2). Las funciones como cálculo de acumulación, promedio y filtro de paso bajo
se completan en el hardware del ADC en lugar del software de la MCU, liberando a la CPU para hibernar
o completar otras tareas.
➢ Interrupciones.
Los microcontroladores PIC se programan para que realicen tareas de acuerdo a lo que interese,
normalmente realizarán esas tareas en forma ordenada una tras otra en forma cíclica, a esto se le conoce
como el programa principal; las interrupciones microcontroladores con el PIC son eventos que hacen
que el programa principal se detenga, para que el microcontrolador PIC se dedique ha realizar otras
tareas, mientras no ocurra una interrupción el microcontrolador solo realizará las tareas indicadas dentro
del programa principal.
Cada modelo de microcontrolador PIC tendrá una serie de interrupciones que podrá detectar, para que
se detecten las interrupciones con el PIC, es necesario programar algunos registros dependiendo de cual
se quiere que sea la causa de las interrupciones, se tienen registros para habilitar las interrupciones con
el PIC y registros para detectar cuando se han producido interrupciones.
Para la programación de los microcontroladores PIC y por tanto de las interrupciones con el PIC, se
utilizará el XC8 en el MPLABX, con el cual se programa en C/C++, se utilizará este programa porque
fácilita mucho la comprención de la forma de utilizar los registros involucrados en el uso de las
interrupciones con el PIC, una vez que se comprenda el uso de las interrupciones con el PIC es fácil
hacer lo mismo con otros programas dedicados a los microcontroladores PIC.
Para habilitar el uso de las interrupciones con el PIC se utiliza el registro INTCON, cada microntrolador
PIC tiene su registro INTCON, algunos tendrán mas de uno, es necesario revisar su hoja de datos para
verificar para que se utilizan cada uno de sus bits, pero lo que si es común en ellos es el bit7 o bit GIE.[2]
Codigo de Programacion
// CONFIG1
#pragma config FEXTOSC = HS // External Oscillator mode selection bits (XT (crystal oscillator) above
500kHz, below 4MHz; PFM set to medium power)
#pragma config RSTOSC = EXT1X // Power-up default value for COSC bits (EXTOSC operating per
FEXTOSC bits)
#pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator
function on OSC2)
#pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled)
// CONFIG2
#pragma config MCLRE = ON // Master Clear Enable bit (MCLR pin is Master Clear function)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config LPBOREN = OFF // Low-Power BOR enable bit (ULPBOR disabled)
#pragma config BOREN = ON // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN
bit is ignored)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR)
set to 1.9V on LF, and 2.45V on F Devices)
#pragma config ZCD = OFF // Zero-cross detect disable (Zero-cross detect circuit is disabled at
POR.)
#pragma config PPS1WAY = ON // Peripheral Pin Select one-way control (The PPSLOCK bit can be
cleared and set only once in software)
#pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or
Underflow will cause a reset)
// CONFIG3
#pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software
control of WDTPS)
#pragma config WDTE = OFF // WDT operating mode (WDT Disabled, SWDTEN is ignored)
#pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%);
software control; keyed access not required)
#pragma config WDTCCS = SC // WDT input clock selector (Software Control)
// CONFIG4
#pragma config WRT = OFF // UserNVM self-write protection bits (Write protection off)
#pragma config SCANE = available// Scanner Enable bit (Scanner module is available for use)
#pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming
enabled. MCLR/Vpp pin function is MCLR.)
// CONFIG5
#pragma config CP = OFF // UserNVM Program memory code protection bit (Program Memory
code protection disabled)
#pragma config CPD = OFF // DataNVM code protection bit (Data EEPROM code protection disabled)
#include <xc.h>
#include <pic16f18875.h>
#define _XTAL_FREQ 4000000
// Prototipos de Funciones
void Secuencia1();
void Secuencia2();
void Secuencia3();
void Delay();
void main()
{
// Configuracion de Puertos
// Configuracion de Interrupciones
PIR0bits.IOCIF = 0;
}
void Delay()
{
int i;
for(int i = 0; i < cont; i ++)
{
__delay_ms(1);
}
}
Debemos configurar de manera correcta ya sean Entradas y/o Salidas los diferentes puertos que se van
a utilizar, de igual manera debemos configurar si los puertos que usamos van a ser Digitales y/o
Analogicos.
De igual manera debemos configurar de manera adecuada las interrupciones, teniendo en cuenta el tipo
de interrupción a usar, en este caso las interrupciones al cambio.}}
Bibliografía: