Skrzyżowanie świateł w Assemblerze, procesor: Picoblaze 3

0

Witam, otóż piszę na tym forum, nie w celu uzyskania gotowca, lecz może możecie odpowiedzieć na pytania bądź podpowiedzieć ideologie.
na razie myślę nad algorytmem (jeżeli jest algorytm, to i program można napisać)... i tak naprawde potrzebne by mi bylo tylko jedno żeby zrozumieć... chce zrobic mniejwiecej cos takiego:
Jeżeli na czujniku jest coś, to ustaw zmienną oznaczającą zajętość na 1 (0 - nikt nie czeka na skrzyzowaniu, 1- jest chociaż jeden samochód) polecenie : COMP portwejsciowy,1 (port wejsciowy ma 8 bitow, tak wiec rozne cyfry oznaczaja rozne czujniki: 1- pierwszy czujnik, 2- drugi czujnik, 4- trzeci czujnik). Użytkownik po prostu symuluje samochody wciskając odpowiednie bity na porcie wejsciowym.
i znowu jade... sprawdzam czy jest cos na czujniku nr 2...
i znowu ustawiam zmienna...
problem pojawia sie w procedurze decyzyjnej, na codzien jestem programistą c#, i wiem jak to powinno wyglądać w c#, lecz pojawia sie problem gdy chce to przelozyc na assemblera, chcialbym zrobic tak jakby If'a w Ifie, czyli:
1.Jezeli warunek1(ktos jest na czujniku nr 1),
2. to sprawdz warunek2(ktos jest na czujniku nr 2), i jezeli warunek2 zachodzi:
3. skocz do procedury
Problem jest taki że: przy sprawdzaniu pierwszego warunku, (jezeli nie zachodzi) omija punkt 2 (zgodnie z ideologia polecenia COMP na Picoblaze 3) i przechodzi do skoku na procedurze -.- Jakieś podpowiedzi? Ktoś może ma pomysł jak to inaczej obsłużyć, bądź robił coś podobnego? Dodam że ma to być projekt jedynie na ZALICZENIE przedmiotu (czyli bez żadnych hardkorów w środku- po prostu ma działać i tyle)

0

Wpadłem na genialny pomysł, napiszę go jeżeli któryś z podobnych laików jak ja miał z tym problem:
start:

  • Sprawdzić warunek1, jeżeli tak idź do funkcji,
    -w środku drugiej funkcji sprawdzić czy warunek 2 zachodzi
    -Jeżeli tak zapalić odpowiednie światła, odczekać kwant czasu i powrócić do głównej pętli programu...
  • sprawdzić warunek3, jeżeli zachodzi przejść do procedury
    -sprawdzić warunek4 jeżeli zachodzi
    -zapalić światła, odczekać kwant czasu i JUMP start... i tak w kółko
    Jedyny problem z tym programem jest taki że jak np. pojawi się ktoś na czujniku nr 1, a nie pojawi się nikt na czujniku nr 2 osoba będzie stała w nieskończoność... aż ktoś się nie pojawi.
    Z drugiej strony jakby sprawdzać tylko jeden warunek, no to lipa jeżeli chodzi o funkcjonalność tych świateł, bo załóżmy na czujnikach 3 i 4 stoją auta i czekają, a na czujniku 1 stoi auto, lecz na czujniku2 już nie... wtedy przepuścimy najpierw czujnik1 :) tak to wygląda :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1