Ülesanne: Jooksvad tuled (käsitsi juhtimisega)
Ülesande püstitus
Kõrvuti on 8 LED indikaatorit. Vajutades surunuppu S1 peab neist esimene süttima. Iga järgmise vajutusega peab kustuma eelnev LED ja süttima järgmine.
Kui rivi viimane LED on süttinud, siis järgmise nupuvajutusega peab sama protsess jätkuma äraspidiselt kuni jõutakse tagasi rivi esimese LED-ini.
Jõudes tagasi algusesse hakkab kõik korduma.
Nupu all hoidmise aeg ei tohi tulemust mõjutada.
Programm
|
Nimi |
Andmetüüp |
Aadress |
Kommentaar |
|
S1 |
BOOL |
%I0.0 |
Surunupp |
|
frontmemory |
BOOL |
%M0.0 |
Tõusva frondi tuvastuse mälubitt |
|
direction |
BOOL |
%M0.1 |
Liikumissuuna mälubitt |
|
count |
USInt |
%MB1 |
koha lugemise mälu |
|
OutByte |
BYTE |
%QB0 |
Väljundbait (8 LED) |
Programm: Main [OB1]
SCL |
|
IF "S1" AND NOT "frontmemory" THEN
"OutByte":= SHL(IN:=2#1, N:="count");
IF "direction" THEN
"count":="count"-1;
ELSE
"count":="count"+1;
END_IF;
END_IF;
IF "count" = 0 THEN "direction":=false;
ELSIF "count"= 7 THEN "direction":=true;
END_IF;
"frontmemory":="S1";
|