Mruganie diody z funkcją opóźniającą

2015-01-14 17:13
1

Witam, nie mogę pojąć jak działa ten program. Programujemy w C na przedmiocie Technika Mikroprocesorowa, Atmel 89c51 na symulatorze DSM-51.
Program jest prawidłowy, ale go nie rozummiem.
Dioda jest na nóżce 8 portu 1, czyli P1_7, zapalamy ją "0".
Co to znaczy : #define stala 0x77FF?

#include <REGX51.H>
#define stala 0x77FF
sbit dioda=0x90^7;

void opoznienie (int czas)
{
    int i;
    for(i=0;i<czas;i++);
}

void main(void)
{
while(1)
    {
        dioda=!dioda;
        opoznienie(stala);
    } 
}

`dodanie znaczników i ``` - @furious programming

edytowany 1x, ostatnio: furious programming, 2015-01-14 17:34
Wstawiaj kod w znaczniki kolorujące składnię; Jeżeli nie wiesz jak się to robi, zobacz do tego artykułu: Formatowanie treści postów na forum - furious programming 2015-01-14 17:34

Pozostało 580 znaków

2015-01-14 17:14
0

Define - co znaczy?

domknięcie znacznika <url> - @furious programming

edytowany 1x, ostatnio: furious programming, 2015-01-14 17:35
Otworzyłeś znacznik &lt;url&gt;, a zamknąłeś &lt;/code&gt; - poprawiłem ;) - furious programming 2015-01-14 17:36
Nie wiem czemu ale strasznie często mi się to zdarza; automat mi się popsuł - spartanPAGE 2015-01-14 17:40

Pozostało 580 znaków

2015-01-14 17:18
0

http://bit.ly/1xZnF5G
http://bit.ly/1xZnUgS


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-14 17:45
0

Dobrze to w ten sposób definiuje stałą o nazwie "stala" i wartości 77FF w szesnastkowym czyli 30719 w dziesietnym.
Zmniejszając jej wartość dioda miga szybciej.

A w pętli while wywołuje funkcje "opoznienie(stala)" i rozumiem ze program przechodzi do niej, ale nie wiem jaki wpływ ma ta "stala" - bo nie wystepuje w petli for nigdzie ?

Pozostało 580 znaków

2015-01-14 17:53

wywołujesz funkcję opoznienie(stala); czyli opoznienie(0x77FF);

a jak wygląda ta funkcja?
Mniej więcej tak:

void opoznienie (int 0x77FF)
{
    int i;
    for(i=0;i<0x77FF;i++);
}

czyli "marnuje" czas procesora wykonując pustą pętlę (w zasadzie zliczając od 0 do 0x77FF). To jest właśnie ten czas pomiędzy "mruganiem"

edytowany 1x, ostatnio: szopenfx, 2015-01-14 17:53

Pozostało 580 znaków

2015-01-14 17:57
0

Dziękuje za odpowiedz, teraz wszystko mi się wyjaśniło :)

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0