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

Bascom Attiny2313 Zwiększenie zmiennej o stałą

Gieneq 28 Cze 2010 00:20 1334 5
REKLAMA
  • #1 8238605
    Gieneq
    Poziom 10  
    Witam
    Chciałbym napisać program, który po wystąpieniu stanu 0 na wejściu zwiększałby/zmniejszałby zmienną np o 10. Taki jakby potencjometr.
    Próbowałem czegoś takiego:


    
    Dim A As Byte
    ...
    If PortD.x = 0 Then
    Do
    A=A+10
    Waitms 100
    Loop until PortD.x = 1
    ...
    

    Coś tego typu ze zwiększaniem zmiennych widziałem na forum ale wydaje mi się dziwne i nie spełnia zamierzonego zadania. Próbowałem jeszcze polecenia incr - też nic. :cry: W helpie bascoma nic nie znalazłem
  • REKLAMA
  • Pomocny post
    #2 8238655
    phoszek
    Poziom 16  
    Witam

    Nie będę się tutaj zbytnio rozpisywał. Ogólnie program nie jest zły tylko zmień Portd.x na Pind.x, gdyż do odczytywania stanu stosuje się PIN a nie PORT.
  • REKLAMA
  • #3 8238923
    Gieneq
    Poziom 10  
    Zasiedziałem się trochę i porobiły się błędy. Zmieniłem co trzeba, fragment kodu wygląda mniej więcej tak:

    
    D1 Alias Portb.1
    ...
    Dim A As Byte 
    ...
    Do
    ...
    Elseif Pind.1 = 0 Then
    Toggle D1
    A = A + 50
    Waitms A
    
    Elseif Pind.1 = 1 Then
    Ml1 = 0
    Mr1 = 0
    Ml2 = 0
    Mr2 = 0
    D1 = 0 ' Wykluczenie możliwość wystąpienia stanu 1 po Toggle
    End If
    Loop
    ...
    End
    

    *W miejscach kropek występuje kilka warunków i określone dla nich funkcje.

    Dioda (dostawiona do PortuB.1) nie wiem dla czego ale najpierw wykonuje pojedyncze wolne mignięcie, a potem 2 razy szybkie i tak w kółko. Próbowałem jeszcze dodać osobną funkcje z pętlą, zwiększanie zmiennej na dodatkowym wejściu ale w ogóle nie reagowało.
    Czy na pewno poprzez samo "A = A + 10" da się zmienić zmienną?
    Czy nie trzeba tego zapisać i na której są wykonywane operacje?
    Jest to jak dla mnie dziwna funkcja bo matematycznie wychodzi bodajże równanie sprzeczne.
  • REKLAMA
  • REKLAMA
  • #6 8239434
    Gieneq
    Poziom 10  
    Zmieniłem typ zmiennej z Byte na Integer i działa :D
    A i mam jeszcze jedno pytanie. Spotkałem się ze zmienną WORD której wartości mieszczą się w granicach 0-65535. Nie jest to aby zmienna LONG ?
REKLAMA