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

[Atmega8][Bascom] Wskażnik biegów (początkujący)

Halls 03 Maj 2009 17:18 1688 2
REKLAMA
  • #1 6485243
    Halls
    Poziom 11  
    Witam serdecznie,
    Zachwycony możliwościami (i niskimi cenami) mikrokontrolerów postanowiłem nauczyć się ich wykorzystania używając do programowania Baskom.
    Jednym z moich pierwszych programów (jak to robiło wielu przede mną) jest zapalanie i gaszenie diody.
    Rozwiąłem to nieco i wyszedł mi taki oto wskaźnik biegów do mojego motocykla.
    [Atmega8][Bascom] Wskażnik biegów (początkujący)

    Zaprogramowałem go tak:

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Portb = Input   
    Portb = &B11111111
    Config Portd = Output                                    
    Portd = &B11000111     -            'Stan wyjściowy pali się "L" - luz
    Do                                                        
    If Pinb.0 = 0 Then Portd = &B11111001                       'jeśli B.0 jest 0 to PORTD wyświetla bieg "1"
    If Pinb.1 = 0 Then Portd = &B10100100                       'jeśli B.1 jest 0 to PORTD wyświetla bieg "2"
    If Pinb.2 = 0 Then Portd = &B10110000                       'jeśli B.2 jest 0 to PORTD wyświetla bieg "3"
    If Pinb.3 = 0 Then Portd = &B10011001                       'jeśli B.3 jest 0 to PORTD wyświetla bieg "4"
    If Pinb.4 = 0 Then Portd = &B10010010                       'jeśli B.4 jest 0 to PORTD wyświetla bieg "5"
    If Pinb.5 = 0 Then Portd = &B11000111                       'jeśli B.5 jest 0 to PORTD wyświetla bieg "L"
    Loop                                                     
    End  


    Konstrukcja przełącznika biegów to rozadzaj przełącznika obrotowego, nie ma więc możliwości zwarcia do masy więcej niż jednego portu.
    Dzięki małemu rozmiarowi ATMEGA8 TQFP i rezystorom SMD całość zmieści sie pod wysietlaczem 20mm.
    Urządenie uruchomiłem na płytce testowej i działa, jednakże..... wydaje mi sie to wszystko zbyt proste! Musiałem gdzieś zrobić jakiś błąd.
    Będę Wam bardzo wdzięczny za pomoc i wszelakie uwagi.
    Pozdrawiam

    Proszę umieszczać listingi programów w znacznikach "Code". [c_p]
  • REKLAMA
  • #2 6485313
    LED5W
    Poziom 34  
    Halls napisał:
    Urządenie uruchomiłem na płytce testowej i działa, jednakże..... wydaje mi sie to wszystko zbyt proste! Musiałem gdzieś zrobić jakiś błąd.

    Program zadziałał przez pomyłkę, ciekawe.;)

    A luz wrzucasz tylko przy odpalaniu?
    Dodaj do pętli:
    If Pinb = 255 Then Portd = &B11000111                      'L


    A to:
    Portd = &B11000111 - 'Stan wyjściowy pali się "L" - luz

    możesz usunąć. ;)

    Dodano po 2 [minuty]:

    Jest jeszcze takie fajne polecenie select case. ;)
REKLAMA