Está en la página 1de 6

#include <xc.

h>

#define _XTAL_FREQ 4000000

#define C1 LATDbits.LATD3 /*HABILITA SEGUNDO UNIDAD*/

#define C2 LATDbits.LATD2 /*HABILITA SEGUNDO DECENA*/

#define C3 LATDbits.LATD1

#define C4 LATDbits.LATD0

#pragma config FOSC = XT

int segundoUnidad = 0;

int segundoDecena = 0;

int minutoUnidad = 0;

int minutoDecena = 0;

int numeros[10] = {0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111,
0b01100111};

void __interrupt() myISR(void){

//*******************RUTINA DE LA INTERRUPCION TIMER CERO********************

if(TMR0IF == 1){

segundoUnidad++;

if(segundoUnidad > 9){


segundoUnidad = 0;

segundoDecena++;

if(segundoDecena >= 6){

segundoDecena = 0;

segundoUnidad = 0;

minutoUnidad++;

TMR0L = 0xDC;

TMR0H = 0x0B;

TMR0IF = 0;

//*******************RUTINA DE LA INTERRUPCION EXTERNA CERO********************

if(INT0IF == 1){
minutoUnidad++;

if(minutoUnidad > 9){

minutoUnidad = 0;

minutoDecena++;

if(minutoDecena >= 6){

minutoUnidad = 0;

minutoDecena = 0;

INT0IF = 0;

//*******************RUTINA DE LA INTERRUPCION EXTERNA UNO********************

if(INT1IF == 1){

INT1IF = 1;

}
}

void main(void) {

//*************************CONFIGURACION DE TIMER 0 INTERRUPT********************************

TMR0IE = 1;

TMR0IP = 1;

GIE = 1;

PEIE = 1;

//**************************CONFIGURACION DE INTERRUPCIONES EXTERNAS************************

INT0IE = 1;

INT1IE = 1;

INT1IP = 1;

//**************************CONFIGURACION DE PUERTOS I/O************************************

TRISB = 0;
ANSELB = 0x00;

TRISC = 0x00;

TRISD = 0x00;

ANSELC = 0x00;

ANSELD = 0x00;

//************************CONFIGURACIÓN DE TIMER CERO*****************************************

TMR0L = 0xDC;

TMR0H = 0x0B;

T0CON = 0x83;

LATD = 0xFF;

while(1){

C1 = 0;

LATC = numeros[segundoUnidad];

__delay_ms(20);

C1 = 1;

C2 = 0;

LATC = numeros[segundoDecena];

__delay_ms(20);
C2 = 1;

C3 = 0;

LATC = numeros[minutoUnidad];

__delay_ms(20);

C3 = 1;

C4 = 0;

LATC = numeros[minutoDecena];

__delay_ms(20);

C4 = 1;

También podría gustarte