Program wyświetla mi zero (po liczbie) jednocyfrowej
np. zamiast 3 jest 30 (oczywiście wartość zmiennej jest poprawna tylko tak przetwarza chyba itoa).
Reszta liczb jest wyświetlana poprawnie.
Nie mogłem znaleźć odp na elektrodzie.
Co zrobić żeby była wyświetlana liczba jednocyfrowa jako pojedyncza liczba a nie 01 czy 10
Jeśli potrzeba to kod programu daje poniżej.
np. zamiast 3 jest 30 (oczywiście wartość zmiennej jest poprawna tylko tak przetwarza chyba itoa).
Reszta liczb jest wyświetlana poprawnie.
Nie mogłem znaleźć odp na elektrodzie.
Co zrobić żeby była wyświetlana liczba jednocyfrowa jako pojedyncza liczba a nie 01 czy 10
Jeśli potrzeba to kod programu daje poniżej.
#include<avr/io.h>
#include<delay.h>
#include "HD44780.h"
#include "HD44780.c"
#include "itoa.h"
int main()
{
DDRB = 0x00;
PORTB = 0xFF;
TCCR1B |= (1 << WGM12); //tryb CTC Timera
OCR1A = 15625; //flaga co 1Hz
TCCR1B |= (1 << CS10) | (1 << CS11); //preskaler 64
LCD_Initalize();
LCD_Home();
LCD_WriteText("PRACA:");
LCD_GoTo(0,1);
LCD_WriteText("PRZERWA:");
int licznik = 0;
int praca = 0;
int przerwa < 0;
int czasy = przerwa + praca;
int pomocnicza = 0;
char bufor[16];
char bufor1[16];
while(1)
{
LCD_GoTo(10,0);
itoa(praca, bufor,10);
LCD_WriteText(bufor);
LCD_GoTo(10,1);
itoa(przerwa, bufor1,10);
LCD_WriteText(bufor1);
if((!(PINB & 0x01)) && (pomocnicza == 0))
{
praca++;
_delay_ms(20);
}
else if((!(PINB & 0x02)) && (pomocnicza == 0))
{
praca--;
_delay_ms(20);
}
else if((!(PINB & 0x01)) && (pomocnicza == 1))
{
przerwa++;
_delay_ms(20);
}
else if((!(PINB & 0x02)) && (pomocnicza == 1))
{
przerwa--;
_delay_ms(20);
}
else if(!(PINB & 0x04))
{
pomocnicza++;
_delay_ms(20);
}
else if(pomocnicza > 2)
{
pomocnicza = 0;
}
if(licznik <= praca)
{
}
else if((licznik > praca) && (licznik <= czasy))
{
}
else if(licznik > czasy)
{
licznik = 0;
}
if(TIFR & (1 << OCF1A))
{
licznik++;
TIFR = (1 << OCF1A);
}
}
}
