24-11-2018, 14:40
Z delay łatwo zacząć, trudno skończyć. Można wyobrazić sobie program jako koło fortuny, a to jest już prosta zabawa.
Pętla loop jak koło fortuny, nagrody to poszczególne polecenia, każda przegródka to cykl zegara. Loop z jednym poleceniem kręci się 16mln/s (załóżmy w uproszczeniu, tyle ile zegar), robisz delay to władasz patyk w szprychy i zatrzymujesz to na długo za długo.
Jest OK, jak to jest tylko to jedno polecenie. Jak ich jest 1000 to wszystkie czekają jak zabierzesz blokadę, no ale w tym czasie mogły się zadziać różne rzeczy, ekran się zatrzymał, wciśniętego przycisku nikt nie zauważył. Z millis do koła w jednym punkcie ktoś doczepia karteczki ze zliczonymi ms, ty sobie sprawdzasz w innym punkcie jaki czas upłynął po każdym okrążeniu, jeśli minął czas na np. piknięcie to doczepiasz flagę piknij i w innym punkcie koła if zmieni stan wyjścia buzera, flagę zrzuci do kosza, by następnym obiegiem nie zmienić niepotrzebnie znowu (za np. 5us). Jak zamiast prostej instrukcji jest funkcja to niestety program przeskakuje w tym punkcie na boczne pole lub nawet koło (w sumie delay jest takim bocznym loop i jedynym jego zadaniem jest czekanie), główne jest zatrzymane. Pełnia szczęścia jak wszystko jest tak szybkie, że użytkownik programu nie widzi takich zatrzymań, a z funkcjami jednak jest łatwiej ogarnąć większy program. I jeśli większość instrukcji jest wykonywana w jednym cyklu, część w kilka, a nawet jeśli jakaś MEGA funkcja trwa nawet 16000 cyknięć, to i tak w sekundę zrobić ich można 1000. No a z delay 1000 można zrobić 0.
Pętla loop jak koło fortuny, nagrody to poszczególne polecenia, każda przegródka to cykl zegara. Loop z jednym poleceniem kręci się 16mln/s (załóżmy w uproszczeniu, tyle ile zegar), robisz delay to władasz patyk w szprychy i zatrzymujesz to na długo za długo.
Jest OK, jak to jest tylko to jedno polecenie. Jak ich jest 1000 to wszystkie czekają jak zabierzesz blokadę, no ale w tym czasie mogły się zadziać różne rzeczy, ekran się zatrzymał, wciśniętego przycisku nikt nie zauważył. Z millis do koła w jednym punkcie ktoś doczepia karteczki ze zliczonymi ms, ty sobie sprawdzasz w innym punkcie jaki czas upłynął po każdym okrążeniu, jeśli minął czas na np. piknięcie to doczepiasz flagę piknij i w innym punkcie koła if zmieni stan wyjścia buzera, flagę zrzuci do kosza, by następnym obiegiem nie zmienić niepotrzebnie znowu (za np. 5us). Jak zamiast prostej instrukcji jest funkcja to niestety program przeskakuje w tym punkcie na boczne pole lub nawet koło (w sumie delay jest takim bocznym loop i jedynym jego zadaniem jest czekanie), główne jest zatrzymane. Pełnia szczęścia jak wszystko jest tak szybkie, że użytkownik programu nie widzi takich zatrzymań, a z funkcjami jednak jest łatwiej ogarnąć większy program. I jeśli większość instrukcji jest wykonywana w jednym cyklu, część w kilka, a nawet jeśli jakaś MEGA funkcja trwa nawet 16000 cyknięć, to i tak w sekundę zrobić ich można 1000. No a z delay 1000 można zrobić 0.
Miło być decenianym https://buycoffee.to/kaczakat