Witam.
Moje pierwsze początki zapoczątkowałem od procesora At89c2051 i używam kompilatora sdcc, natknąłem się na pewien problem, napisałem coś takiego:
i wyświetlana jest wartość 2999, ale gdy podstawie wartosc_cz=temp; lub wartosc_cz=2999; umieszcze poza funkcją wyswietl_czas( ) , to wyświetlacz pokazuje
jakieś nie określone wartości, proszę o pomoc jak można to zrealizować, końcowy mój
projekt ma wyświetlać wartość liczników (TH0*256)+TL0.
Moje pierwsze początki zapoczątkowałem od procesora At89c2051 i używam kompilatora sdcc, natknąłem się na pewien problem, napisałem coś takiego:
#include "at89x051.h"
unsigned char licznik_x;
int wartosc_cz;
int x;
int temp=145;
unsigned char wyswietlacz[4];
code unsigned char cyfry[] ={0x40, 0x79, 0x24, 0x30, 0x19,
0x12, 0x02, 0x78, 0x00, 0x10, 0x40 };
operacja(){P1=cyfry[wyswietlacz[licznik_x]];}
wyswietl_czas( )
{ wartosc_cz=2999;
wyswietlacz[0] = x = wartosc_cz%10;
wyswietlacz[1] = x =(wartosc_cz=(wartosc_cz-x)/10)%10;
wyswietlacz[2] = x =(wartosc_cz=(wartosc_cz-x)/10)%10;
wyswietlacz[3] = x =(wartosc_cz=(wartosc_cz-x)/10)%10;
if (licznik_x==0) {P3_0=1; operacja(); P3_4=0; }
if (licznik_x==1) {P3_4=1; operacja(); P3_5=0; }
if (licznik_x==2) {P3_5=1; operacja(); P3_1=0; }
if (licznik_x ==3){P3_1=1; operacja(); P3_0=0; } licznik_x ++;
if (licznik_x==4){licznik_x=0; }
}
main()
{
for(;;) wyswietl_czas();}
i wyświetlana jest wartość 2999, ale gdy podstawie wartosc_cz=temp; lub wartosc_cz=2999; umieszcze poza funkcją wyswietl_czas( ) , to wyświetlacz pokazuje
jakieś nie określone wartości, proszę o pomoc jak można to zrealizować, końcowy mój
projekt ma wyświetlać wartość liczników (TH0*256)+TL0.