Microcontroladores - Cronómetro Pic 18F4550

 
Vista:
sin imagen de perfil

Cronómetro Pic 18F4550

Publicado por José Diego (1 intervención) el 30/11/2021 05:51:48
Hola, buen día, ¿alguien me podría decir que estoy haciendo mal?, llevo días intentando hacer el cronómetro pero no hay manera. Adjunto código:
#include <xc.h>
#include "Configuracion.h"
#define _XTAL_FREQ 20000000
char Display[10]={0x3f, 0x06, 0x5B, 0x4f, 0x66, 0x6D, 0x7D, 0x07, 0x7f, 0x6f};
int i,a;
int b;
int d;
int c;
int a;
int us=0, ds=0 ,cs=0 ,ms=0;


void timerprincipal(void){
INTCONbits.GIE = 0;
T0CONbits.T0CS = 0;
T0CONbits.PSA = 0;
T0CONbits.T0PS = 0b111;
T0CONbits.T08BIT = 0;
T0CONbits.TMR0ON = 1;
INTCONbits.TMR0IF = 0;
INTCONbits.TMR0IE = 1;
INTCONbits.PEIE = 1;
INTCONbits.GIE = 1;
}
void main (void){
timerprincipal();
ADCON1bits.PCFG = 1;
TRISD=0;
LATD=0;
TRISB=0;
LATB=0;
TRISBbits.RB5 = 0;
TRISBbits.RB6 = 0;
TRISBbits.RB7 = 0;

TRISBbits.RB0 = 0;
TRISBbits.RB1 = 0;
TRISBbits.RB2 = 0;
TRISBbits.RB3 = 0;
while(1){
while(PORTBbits.RB5 == 1){
for(a=0;a==3600;a++){
for(b=0;b==3600;b++){
for(c=0;c==3600;c++){
for(d=0;d==3600;d++){
TMR0L = 3034;
TMR0H = (3034) >> 8;
us=d%360;
LATD= Display[us];
LATBbits.LATB0=1;
__delay_ms(10);
LATBbits.LATB0=0;

LATD= Display[ds];
LATBbits.LATB1=1;
__delay_ms(10);
LATBbits.LATB1=0;

LATD= Display[cs];
LATBbits.LATB2 = 1;
__delay_ms(10);
LATBbits.LATB2 = 0;

LATD= Display[ms];
LATBbits.LATB3=1;
__delay_ms(10);
LATBbits.LATB3=0;
}
ds=c/720;
}
cs=b%360;
}
ms=a/720;
}
}




if(PORTBbits.RB7 == 1){
LATD= Display[us];
LATD= Display[ds];
LATD= Display[cs];
LATD= Display[ms];

}



if(PORTBbits.RB6 == 1){
ms=0;
cs=0;
ds=0;
us=0;
LATD= Display[0];
LATBbits.LATB0=1;
LATBbits.LATB1 =1;
LATBbits.LATB2=1;
LATBbits.LATB3=1;


}
}
}

void __interrupt () ISR_TIMER_0 (void){
if(INTCONbits.TMR0IF == 1){
TMR0L = 3034;
TMR0H = (3034) >> 8;
INTCONbits.TMR0IF = 0;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder