Bom dia, Boa tarde, Boa noite, pra quem esta tentando me ajudar, desde já agradeço, o problema é o seguinte, quando eu ligo a simulação no proteus o contador já aciona sozinho a parte dos segundos, mas o problema é que ele inicia com letras do alfabeto e depois ele muda pra caracteres só em seguida ele muda para números. Toda vez que o segundo digito vai pra 0 ele muda pra alguma letra ou carácter. Se alguém puder me ajudar, agradeceria muito.
adicionado 3 minutos depois
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
#define horas1 RB0_bit
#define minutos10 RB1_bit
#define starta RB2_bit
#define despejar RB3_bit
char *text = "00:00:00";
char flags=0x00;
int contagem;
char horas = 0x00, minutos = 0x00, segundos = 0x00;
void interrupt()
{
if(TMR1IF_bit)
{
TMR1IF_bit = 0x00;
TMR1L = 0x2C;
TMR1H = 0xCF;
contagem++;
}
}
void main()
{
ADCON1 = 0x0F;
INTCON = 0xC0;
TMR1IE_bit = 0x01;
T1CON = 0x21;
TMR1L = 0x2C;
TMR1H = 0xCF;
TRISB = 0x0F;
TRISD = 0x00;
PORTD = 0x00;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1," ALIMENTADOR");
Lcd_Out(2,1," PET FOOD");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out( 1, 1, "TEMPO" );
Lcd_Out( 2, 1, "VEZES:" );
Lcd_Out( 2, 9, "00" );
while(1)
{
if(contagem==25)
{
contagem = 0;
if(starta)
{
segundos--;
if(segundos < 0)
{
segundos = 59;
minutos--;
if(minutos < 0)
{
minutos = 59;
horas--;
if(horas < 0)
{
horas = 0;
minutos = 0;
segundos = 0;
starta = 0;
Lcd_Out(1,3,"DESPEJANDO");
Lcd_Out(2,3,"RAÇÃO");
} //end if horas
} //end if minutos
} //end if segundos
} //end if starta
} //end if contagem
if(!horas1)
{
flags.b7 = 0x01;
}
if(horas1 && flags.b7)
{
flags.b7=0x00;
horas++;
if(horas > 0x17) horas = 0x00;
}// end if horas1
if(!minutos10)
{
flags.b6 = 0x01;
}
if(minutos10 && flags.b6)
{
flags.b6=0x00;
minutos = minutos + 5;
if(minutos > 0x3B) minutos = 0x00;
}
if(!starta)
{
flags.b5 = 0x01;
}
if(starta && flags.b5)
{
flags.b5 = 0x00;
starta = ~ starta;
}
{
text[7] = segundos%10 + '0';
text[6] = segundos/10 + '0';
text[4] = minutos%10 + '0';
text[3] = minutos/10 + '0';
text[1] = horas%10 + '0';
text[0] = horas/10 + '0';
Lcd_Out(1,9,text);
}
}//END WHILE
}//END VOID
o codigo.
ps: compilador foi o mikroC