Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program w jezyku c do mikrokontrolera 8051(kompilator Keil)

07 Sty 2009 19:11 2430 2
  • Poziom 9  
    Witam
    Próbuje napisać program w języku C przy pomocy kompilatora Keil i urządzenia dydaktycznego (chyba mikron) dokładną nazwę podam jutro, podobny do DSM -51 tylko taki trochę większy.
    Mój program musi po odpaleniu go na stanowisku dydaktyczny i po naciśnięciu jednego przycisku (np. P3^5) odpalać licznik zliczający sekundy a po naciśnięciu przycisku (np. P3^4) zatrzymywać licznik a wynik w sekundach wyświetlać na diodach (co będzie oczywiście w kodzie binarnym ).

    sam napisałem coś takiego
    #INNCLUDE<Reg515.h>
    #INCLUDE<absacc.h>

    sbit kl=P3^5;

    Void delay()
    {
    unsigned int y=4000;
    while(y--)
    }

    Void main(void)
    {
    unsigned char sek O,i;

    TMOD=0x01;
    TCOM=0x00;
    P5=0;

    while(1)
    {
    while(kl);
    {
    for(i=0,i<25,I++)
    {
    TR0=O;
    TH0=(-46080)>>8;
    TL0=(char)(-46080);
    TR0=1;
    while(!TF0);
    TF0=0;
    }
    sek++;
    if(kl==0)
    break;
    }
    P5=sek;
    sek=0;
    delay();
    }
    }


    Ten program jest na jeden przycisk i pewnym sensie działa tylko ma wadę włączam normalnie licznik leci liczy czas ale gdy chcę go zatrzymać muszę ten przycisk przytrzymać tak z 1-2 sek aby się zatrzymał proszę o jakieś małe sugestie co może być nie tak



    Jeżeli ten post jest w złym miejscu(zastanawiałem się nad tym działem Początkujący Nauka Nauka elektroniki od podstaw)to proszę o jego przeniesienie w odpowiednie miejsce i od razu z góry dziękuje za pomoc
  • Specjalista - Mikrokontrolery
    przycisk musisz trzymac, bo procek wisi w funkcjach opozniajacych (delay()). uzyj przycisku ktory ma przerwanie, wtedy problem bedzie rozwiazany. ewentualnie musisz swoje odliczanie sekund przerobic - na przyklad na timer w tle, ktory daje przerwanie, w ktorym to przerwaniu sa zliczane owe sekundy - tym sposobem tez bedzie rozwiazane.

    procek na raz potrafi robic tylko jedna rzecz, ty chcesz robic dwie (liczyc czas i czekac na klawisz), wiec sila rzeczy jedna z nich powinna byc w przerwaniu... da sie to oczywiscie zrobic inaczej, ale na przerwaniach bedzie naprawde prosciej.

    4\/3!!
  • Poziom 9  
    ok ale mógł byś mi podać coś dokładniej na temat tych przerwań bo zapomniałem dodać ze z tego programowania to orłem nie jestem i za bardzo nie wiem jak ustawić te przerwania