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

Sterowanie 10 urządzeniami przez LPT

marcin36324 04 Lut 2012 10:49 1837 6
REKLAMA
  • #1 10492751
    marcin36324
    Poziom 10  
    Witam!!
    Mam do zrobienia projekt sterowania 10 urządzeniami załącz/wyłącz. Mój pierwszy pomysł był taki żeby to zrobić za pomocą portu LPT i tu pojawia się problem, jest 8 pinów którymi można sterować (o ile dobrze myślę) i podłączyć do nich przekaźniki. Czy można napisać program który sterowałby pozostałymi pinami?

    Z góry dziękuję !!

    Pozdrawiam
  • REKLAMA
  • REKLAMA
  • #3 10493254
    gaskoin
    Poziom 38  
    Jak masz tylko coś do sterowania pinami z danych to zawsze możesz gdzieś tam dać DEMUX :)
  • REKLAMA
  • #4 10498253
    marcin36324
    Poziom 10  
    Dzięki za odpowiedź :)

    Teraz mam inną prośbę :) czy mógłby mi ktoś "przerobić" kod źródłowy do BASCOMA tak aby był ciągle podtrzymywany stan wysoki na danym pinie do momentu ponownego naciśnięcia przycisku :) Byłbym bardzo wdzięczny :)
    Poniżej zamieszczam schemat oraz kod źródłowy do BASCOMA

    Sterowanie 10 urządzeniami przez LPT

    '****************************
    'Konfiguracja
    '****************************
    $crystal = 12000000 '12MHz
    $regfile = "89C4051.DAT"

    Config Rc5 = P3.2
    Reset Tcon.0 'reaguje na zbocze narastajace
    On Int0 Odbierz_rc5
    Enable Int0
    Enable Interrupts


    Dim Odebrano As Bit
    Dim Komenda As Byte , Adres As Byte

    Dioda Alias P3.7
    '****************************
    'Petla glowna
    '****************************
    Do
    If Odebrano = 1 Then
    Odebrano = 0
    If Adres = 0 Then
    Disable Int0

    Waitms 100
    Reset Dioda

    Select Case Komenda
    Case 1: 'vol+
    Reset P1.7
    Case 2: 'bas+
    Reset P1.6
    Case 3: 'treb+
    Reset P1.5
    Case 4: 'vol-
    Reset P1.3
    Case 5: 'bas-
    Reset P1.2
    Case 6: 'treb-
    Reset P1.1
    Case 15: 'we
    Reset P1.0
    Case 13: 'mute
    Reset P1.4
    End Select

    Waitms 100
    Set Dioda
    P1 = 255

    Enable Int0
    End If
    End If
    Loop
    End
    '****************************
    'Inne Etykiety
    '****************************
    Odbierz_rc5:
    Getrc5(adres , Komenda)
    Adres = Adres And &B00011111 'zerowanie bitu 5
    Odebrano = 1
    Return
    '****************************

    Z góry dziękuje i pozdrawiam!!! :)
  • REKLAMA
  • #5 10498521
    mirekk36
    Poziom 42  
    Nie uważasz, że większą radochę będziesz miał jak sam się tego nauczysz i przerobisz tym bardziej, że to proste jak drut ? ;) i tym bardziej, że jak zaskoczysz i załapiesz tego bakcyla to zaraz będziesz śmigał sam kolejne i to już własne projekciki tego typu ?
  • #6 10498640
    robercik5
    Poziom 11  
    Prócz pinów d0-d7(piny od 2 do 9) mozesz tez sterowac innymi np pinem 1,14, 16,17, Wiec 10 wysterujesz bez problemu
  • #7 10499113
    marcin36324
    Poziom 10  
    Czy ten kod po zmianie będzie wyglądał tak bo nie wiem czy dobrze zrobiłem:

    '****************************
    'Konfiguracja
    '****************************
    $crystal = 16000000 '16MHz
    $regfile = "89C4051.DAT"

    Config Rc5 = P3.2
    Reset Tcon.0 'reaguje na zbocze narastajace
    On Int0 Odbierz_rc5
    Enable Int0
    Enable Interrupts


    Dim Odebrano As Bit
    Dim Komenda As Byte , Adres As Byte

    Dioda Alias P3.7
    '****************************
    'Petla glowna
    '****************************
    Do
    If Odebrano = 1 Then
    Odebrano = 0
    If Adres = 0 Then
    Disable Int0

    Waitms 100
    Reset Dioda

    Select Case Komenda
    Case 1:
    P1.7 = Not P1.7
    Case 2:
    P1.6 = Not P1.6
    Case 3:
    P1.5 = Not P1.5
    Case 4:
    P1.3 = Not P1.3
    Case 5:
    P1.2 = Not P1.2
    Case 6:
    P1.1 = Not P1.1
    Case 15:
    P1.0 = Not P1.0
    Case 13:
    P1.4 = Not P1.4
    End Select

    Waitms 100
    Set Dioda

    Enable Int0
    End If
    End If
    Loop
    End
    '****************************
    'Inne Etykiety
    '****************************
    Odbierz_rc5:
    Getrc5(adres , Komenda)
    Adres = Adres And &B00011111 'zerowanie bitu 5
    Odebrano = 1
    Return
    '****************************
REKLAMA