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

Pytanie o poprawnosc kodu

buli439 20 Wrz 2009 01:22 996 1
REKLAMA
  • #1 7036714
    buli439
    Poziom 12  
    Witam napisałem takie cos jest to pilot obsługujący 12 przycisków działający w rc5 .
    Czy poprawnie go napisałem nie mam jak sprawdzić bo nie mam jeszcze atmega czekam na nia z chin jedyne źródło atmelka w UK :)

    
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Portb.1 = Input : Set Portb.1
    Config Portb.2 = Input : Set Portb.2
    Config Portb.4 = Input : Set Portb.4
    Config Portb.5 = Input : Set Portb.5
    Config Portb.6 = Input : Set Portb.6
    Config Portb.7 = Input : Set Portb.7
    Config Portc.1 = Input : Set Portc.1
    Config Portc.2 = Input : Set Portc.2
    Config Portc.3 = Input : Set Portc.3
    Config Portc.4 = Input : Set Portc.4
    Config Portc.5 = Input : Set Portc.5
    Config Portb.0 = Input : Set Portb.0
    
    Config Portb.3 = Output
    
    Dim Togbit As Byte , Command As Byte , Adress As Byte
    
    S1 Alias Pinb.1
    S2 Alias Pinb.2
    S3 Alias Pinb.4
    S4 Alias Pinb.5
    S5 Alias Pind.6
    S6 Alias Pind.7
    S7 Alias Pinc.1
    S8 Alias Pinc.2
    S9 Alias Pinc.3
    S10 Alias Pinc.4
    S11 Alias Pinc.5
    S12 Alias Pinb.0
    
    Do
       Debounce S1 , 0 , Rc51 , Sub
       Debounce S2 , 0 , Rc52 , Sub
       Debounce S3 , 0 , Rc53 , Sub
       Debounce S4 , 0 , Rc54 , Sub
       Debounce S5 , 0 , Rc55 , Sub
       Debounce S6 , 0 , Rc56 , Sub
       Debounce S7 , 0 , Rc57 , Sub
       Debounce S8 , 0 , Rc58 , Sub
       Debounce S9 , 0 , Rc59 , Sub
       Debounce S10 , 0 , Rc510 , Sub
       Debounce S11 , 0 , Rc511 , Sub
       Debounce S12 , 0 , Rc512 , Sub
    
    Loop
    End
    
    Rc51:
       Command = 30
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S1 = 1
    Return
    
    
    
    
    
    
    
    Rc52:
       Command = 10
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S2 = 1
    Return
    
    
    
    
    
    
    
    
    Rc53:
       Command = 20
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S3 = 1
    Return
    
    
    
    
    
    
    
    
    Rc54:
       Command = 40
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S4 = 1
    
    
    
    
    
    
    
    
    Rc55:
       Command = 50
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S5 = 1
    
    
    
    
    
    
       Rc56:
       Command = 60
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S6 = 1
    
    
    
    
    
    
       Rc57:
       Command = 70
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S7 = 1
    
    
    
    
    
    
    
    
       Rc58:
       Command = 80
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S8 = 1
    
    
    
    
    
    
    
    
       Rc59:
       Command = 90
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S9 = 1
    
    
    
    
    
    
    
    
       Rc510:
       Command = 100
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S10 = 1
    
    
    
    
    
    
    
    
    
    
       Rc511:
       Command = 110
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S11 = 1
    
    
    
    
    
    
       Rc512:
       Command = 120
       Togbit = 0
       Adress = 0
       Do
          Rc5send Togbit , Adress , Command
          Waitms 40
       Loop Until S12 = 1
    
    
    Return
    
  • REKLAMA
  • #2 7037740
    grysek
    Poziom 19  
    ło rany, strasznie nakoplikowałeś. Ja bym to zamknął w blok 'case' w głównej pętli zamiast robić osobne podprogramy do kazdego przycisku.

    Poza tym, jeśli ustawiamy jakiś pin jako wejscie to składnia wygląda tak
    Config Pinx.y = input

    A zamiast kazdy pin osobno ustawiać to ja bym dał np
    DDRB = 0b00001000

    Bit 3 portu B ustawiony jako wyjście a reszta jako wejścia

    Poza tym, powinieneś dodać opóźnienia ponieważ po przyciśnięciu jednorazowym przycisku kod będzie wysłany kilkadziesiąt/set razy.

    to takie postawowe zastrzeżenia.

    A to tak to do podprogramu wywaliłbym procedury wysyłania, ten kod zajmie Ci strasznie dużo pamięci
REKLAMA