logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AT89C2051 - Programowanie migacza LED z przyciskami w Bascomie

pavel0910 24 Sty 2013 16:50 2502 14
REKLAMA
  • #1 11835192
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Witam.
    Potrzebuję prostego przykładu programu do AT89C2051. Chcę zbudować migacz na 2 diodach LED. Diody chcę podłączyć do portów P1.1 i P1.2 przez rezystory powiedzmy 500 Ohm. Potrzebuję też 3 przycisków, podłączonych do portów P1.4, P1.5, P1.6 i do masy.
    Co z RESETEM? Wyczytałem, że nie może on wisieć w powietrzu i trzeba go podłączyć przez kondensator 4,7uF do +5V i opornik 10KOhm do masy. Nie chcę stosować zewnętrznego kwarcu.

    Działanie przycisków:
    - przycisk podłączony do portu P1.4 zmienia tryb migania na kolejny
    - przycisk podłączony do portu P1.5 zmniejsza szybkość migania diód
    - przycisk podłączony do portu P1.6 zwiększa szybkość migania diód

    Tryby migania diód:
    - tryb I: diody migają razem
    - tryb II: diody migają na przemian (prawa, lewa, prawa, lewa, itd.)

    Nie znalazłem nic co by mi pomogło. Nie znam żadnego języka programowania, ale najlepiej by było jakby ktoś mógł mi podać jakiś przykład prostego programu w Bascomie. Jeśli będę widział program, to sam już jakoś rozgryzę o co tam chodzi i np. dodam sobie tryby migania diód czy coś jeszcze.

    Proszę o pomoc.
    Pozdrawiam.
  • REKLAMA
  • #2 11835305
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    89C2051 nie ma wewnętrznego oscylatora, więc bez kwarcu lub generatora nie ruszy. Reset - wystarczy sam kondensator.

    Rzecz jest na tyle mała i prosta, że warto to napisać w asemblerze. Z drugiej strony, jeśli jesteś nowicjuszem, to masz sporo do nauczenia się - potrzebny Ci będzie timer do odliczania czasu, więc musisz się z nim zaprzyjaźnić.

    Bascom omijaj z daleka. Fakt, jest sporo gotowców, ale to fatalne narzędzie - nadaje się tylko do zabawy.
  • #3 11835924
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Ok, to dam kwarc 12Mhz. Mógłby ktoś podać mi przykładowy kod do migającej diody? Tak, żeby była możliwość regulacji migania. Wiem, że będzie to proste, ale sam nie potrafię napisać.
  • REKLAMA
  • #4 11835961
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2818
    pavel0910 napisał:
    Ok, to dam kwarc 12Mhz. Mógłby ktoś podać mi przykładowy kod do migającej diody? Tak, żeby była możliwość regulacji migania. Wiem, że będzie to proste, ale sam nie potrafię napisać.

    Napisz kod sam i zaprezentuj, pomożemy poprawić, ale tu nie ma gotowców.
  • #5 11836737
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Dzięki za odpowiedź.

    Posiedziałem trochę i napisałem takie coś:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Pewnie coś tu jest nieźle skopane, więc proszę o dalsze wskazówki. Nie mam pojęcia czy to co napisałem jest w ogóle poprawne, czy takie coś zadziała.
    W pętli głównej led1 i led2 migają co 1s.

    W trybie 1: co 1s migają na przemian led1 i led2.

    W trybie 2: led1 miga szybko 3 razy, 1s przerwa, led2 3 razy szybko, 1s przerwy i znowu led1.

    Czy to ma w ogóle sens?

    Nie wiem jak rozwiązać problem regulacji szybkości migania diód w pętli głównej i trybie pierwszym. Jedynie co mi przychodzi do głowy to tworzenie nowego trybu i zmiana wartości wait 1 na waitms 500, w następnym trybie na 250, itd ... Ale to chyba bardzo okrężna droga do celu. Na pewno są inne sposoby, o których nie mam pojęcia.

    Dziękuję za odpowiedź.
  • #6 11840232
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Tamten program ma błędy. Napisałem nowy, ale dalej jest to okrężna droga do celu. Zrobiłem symulację i działa niby.

    Ale... :
    - zamiast przycisków musiałbym użyć chyba normalnych włączników
    - zmiana trybu działa tylko na początku trybu (jeśli program czeka to wtedy przycisk nie działa)
    - nie wiem dalej jak zrobić regulację szybkości migania
    - ogólnie to jeszcze nie to co potrzebuję

    Proszę o jakieś wskazówki, co poprawić, inaczej zrobić, itp.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #7 11840665
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Zacznij od timera - przerwanie z częstotliwścią np. 100 Hz, w nim testowanie przycisków i sterowanie diodami.
  • REKLAMA
  • #8 11840876
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2818
    pavel0910 napisał:
    Napisałem nowy, ale dalej jest to okrężna droga do celu. Zrobiłem symulację i działa niby
    i tak też będzie działać, dopóki będziesz używał komend wait
  • REKLAMA
  • #9 11841010
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Jakiś prosty przykład mrugającej diody z użyciem timera? Nie bardzo rozumiem jak działa to polecenie. Czytałem o nim w polskiej pomocy do bascoma, ale dalej nie wiem co z tym zrobić.
  • #10 11841073
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Zacznij od zrozumienia, jak działa timer i co to są przerwania, a potem dopiero szukaj, jak to oprogramować w potworku pt. Bascom.

    Bez lektury manuala mikrokontrolera daleko nie zajedziesz.
  • #11 11842160
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Czytałem i licznikiem można zliczać impulsy np. z układu taktującego procesor.

    Ale jak mam to wykorzystać? Proszę o jakiś prosty przykład tylko. Wam zajmie to pewnie kilka sekund, a ja cały dzień szukam i czytam.
  • #12 11842350
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Naprawdę nikt nigdzie nie napisał o użyciu timera i przerwań? Ech, leniuszku - popatrz na linki, które podają tutaj Koledzy takim, co zaczynają z mikrokontrolerami - mnóstwo opisów i przykładów kodu.
  • #13 11842606
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2818
    pavel0910 napisał:
    Czytałem i licznikiem można zliczać impulsy np. z układu taktującego procesor.

    Ale jak mam to wykorzystać? Proszę o jakiś prosty przykład tylko. Wam zajmie to pewnie kilka sekund, a ja cały dzień szukam i czytam.

    Czyżbys miał zablokowaną funkcje "szukaj" na elektrodzie ? Ja dostałem kilkadziesiąt ciekawych odpowiedzi.
  • #14 11843560
    pavel0910
    Poziom 15  
    Posty: 246
    Pomógł: 3
    Ocena: 12
    Szukałem, ale nie znalazłem nic co by mi pomogło. Żadnego przykładu. Wszędzie widzę jakieś rozbudowane konstrukcje, w których nie mogę ogarnąć co za co odpowiada. To tak jakbym kazał wam się dogadać z Chińczykiem, jeśli nie znacie chińskiego...

    Potrzebuję tylko przykładu migającej diody. Napisałem kod, tak jak potrafiłem, ale to nie jest to. Gdybym wszystko wiedział i znalazł to co potrzebuję, nie zakładałbym tego tematu. Forum jest po to żeby pomagać, a nie bezsensownie pisać o szukaniu. Jesteście chyba już przyzwyczajeni do tego. Dla was to jest proste, umiecie zrobić, ale nie pomożecie tylko karzecie szukać komuś, kto nie wie o co chodzi.

    Co się stanie jeśli jutro ktoś będzie chciał zrobić taki układ migającej diody na AT89C2051? Znajdzie na pewno ten temat. Co dalej? Dowie się, że musi szukać. Wielkie odkrycie. Ale żeby podać jakiś konkret to nie ...
  • #15 11843732
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Wrzuciłem hasło "89c2051 led blink" w Google, żeby sprawdzić, czy masz powody do narzekania i pomstowania. Nie masz, leniuszku, więc albo do roboty, albo nie marudź i usuń wątek.

Podsumowanie tematu

✨ Użytkownik poszukuje prostego przykładu programu do mikrokontrolera AT89C2051, który umożliwi sterowanie dwoma diodami LED oraz trzema przyciskami. Diody mają być podłączone do portów P1.1 i P1.2, a przyciski do P1.4, P1.5 i P1.6. Użytkownik planuje różne tryby migania diod oraz regulację ich szybkości. W odpowiedziach podkreślono, że AT89C2051 nie ma wewnętrznego oscylatora, co wymaga zastosowania zewnętrznego kwarcu. Użytkownik otrzymuje wskazówki dotyczące użycia timerów i przerwań, ale napotyka trudności w implementacji kodu w Bascomie. Wiele odpowiedzi sugeruje, aby użytkownik samodzielnie napisał kod i prosił o pomoc w poprawkach, co spotyka się z frustracją ze strony pytającego, który nie znalazł wystarczających przykładów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA