Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bascom - Komenda if nie działa porawnie.

PolskiElektronikPL 07 Paź 2013 15:45 1086 2
  • #1 07 Paź 2013 15:45
    PolskiElektronikPL
    Poziom 11  

    Witam, ostatnio zacząłem programować w bascom avr'y.

    Cytat:

    $regfile = "m8adef.dat" 'najpierw określamy typ proca
    $crystal = 8000000 'definiujemy z jakim taktowaniem będzie pracował


    Config Portb = Input 'port b jako wejścia
    Portb = 0 'wszędzie stan spoczynkowy-0
    Config Portc = Output 'pprt c jako wyjścia
    Portc = 0 'wszędzie stan spoczynkowy-0

    Do
    If Pinb.0 = 1 Then:
    Toggle Portc.5:
    End If
    Loop 'koniec pętli 'koniec pętli

    End 'koniec programu



    To jest mój pierwszy program. Gdy już się wszystko zaprogramuje, sytyacja jest odwrotna niż jest napisane. Kiedy na wejściu PB.0 jest stan wysoki, dioda świeci mocniej, gdy jest tam masa, dioda gaśnie. A ja chcę odwrotnie niż jest. Natomiast jeśli po THEN dodam instrukcje migania diody, dioda miga gdy nie jest podłączone nic do pb.0. Proszę o pomoc.

    0 2
  • #2 07 Paź 2013 15:56
    lelekx
    Poziom 29  

    Zastanów się, z jaką prędkością ta pętla się powtarza :)

    1. W każdym "obrocie" pętli stan wyjścia jest odwracany, pętla się wykonuje kilkaset tysięcy razy na sekundę.
    2. Nawet jeżeli to poprawisz, musisz wziąć pod uwagę, że mechaniczne przełączniki "dzwonią" - przy wciskaniu i zwalnianiu przycisku na wyjściu pojawia się kilka impulsów.

    Poszukaj samouczków do Bascoma, na pewno tak trywialny problem jest tam omówiony.

    0
  • #3 07 Paź 2013 16:36
    elektron1956
    Poziom 13  

    $regfile = "m8adef.dat" 'najpierw określamy typ proca
    $crystal = 8000000 'definiujemy z jakim taktowaniem będzie pracował
    $framesize = 32
    $swstack = 32
    $hwstack = 32

    Config Portb = Input 'port b jako wejścia
    'Portb = 0 'wszędzie stan spoczynkowy-0 <--TU PIERWSZY BLAD
    'Jezeli definiujesz PORTB jako wejscie to podpinasz rezystor podciagajacy.
    PORTB.0 = 1 <----- TAK. TU NIE USTAWIA SIE STANU SPOCZYNKOWEGO.
    'Stan pinu bedziesz podawal przyciskiem.

    Config Portc = Output 'pprt c jako wyjścia
    Portc.5 = 0 'wszędzie stan spoczynkowy-0 <--TU TAK OK.

    'Do
    'If Pinb.0 = 1 Then: <--poco dwukropek ??
    'Toggle Portc.5: <--poco dwukropek ??
    'End If
    'Loop 'koniec pętli 'koniec pętli

    Do
    if Pinb.0 = 0 then
    Portc.5 = 1
    else
    Portc.5 = 0
    endif
    Waitms 100
    Loop

    End 'koniec programu

    Wytestuj to

    0