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

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

0

Define - co znaczy?

domknięcie znacznika <url> - @furious programming

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 ?

2

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"

0

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

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