Table of Contents

 

Harjutusülesanded

Eesmärgiks on koostada programm, mis täidab kirjeldatud ülesannet.

Soojendusülesanne

Algajale

  1. Imiteerib ülekäiguraja autode valgusfoori tööd. Kuni pole vajutatud ühelegi nupule, põleb autodele roheline LED. Pärast suvalisele nupule vajutamist hakkab roheline kolmeks sekundiks vilkuma, seejärel süttib kolmeks sekundiks kollane ning kümneks sekundiks punane ja lõpuks jääb uuesti pidevalt põlema roheline LED. (Lahendus: ver5)
  2. Loendab nupuvajutusi. Vajutus loetakse lõppenuks alles siis, kui nupp vabastatakse. Tulemus kuvatakse kahendkoodis LED-idel. Maksimaalne tulemus kolmel LED-il on 23-1. Roheline LED tähistab 1. bitti, kollane 2. bitti, punane 3. bitti. (Lahendus: ver5)
  3. Vajutades nupule S1, süttib korraga LED1 ja LED3, vajutades nupule S2, süttib LED2, vajutades nupule S3, kustuvad kõik LED-id. Operatsioonid tuleb teostada otse vastavate registrite väärtusi muutes (ilma Kodulabori teegita). (Lahendus: ver5)
  4. Loendab nupuvajutusi. Tulemus kuvatakse LED-i vilkumistega. Pärast igat nupule vajutamist suureneb vilgutamiste arv ühe võrra. Valida võib suvalise nupu. LED-i vilgutamiseks kasutada alamfunktsiooni, mille parameetriks on vilkumiste arv.(Lahendus: ver5)
  5. Vajutades nupule S1, vilgutab punane LED morsekoodis “SOS”, vajutades nupule S2, vilgutab kollane LED “CQD” ja, vajutades nupule S3, vilgutab roheline LED “OK”.(Lahendus: ver5)

Edasijõudnule

  1. Igale nupule kolmest vastab üks LED, mis süttib nuppu all hoides. Süütamiseks või kustutamiseks tuleb kasutada registreid ja teha võib seda ainult ühe omistamistehtega (vihje: kasutada bitinihutust).
  2. Vajutades nuppe järjekorras S3 – S2 - S1, süttib roheline LED. Kõigi teiste kombinatsioonide korral süttib punane LED. Iga nupuvajutuse korral vilgatab kollane LED, mis kinnitab nupule vajutust.
  3. Igale LED-ile vastab üks nupp. Kontroller vilgutab LED-e suvaliselt ja kasutaja peab nuppe vajutades sama jada kordama. Vilkumiste jada läheb iga korraga järjest pikemaks, lisades eelnevale jadale uue suvalise LED-i. Pärast iga kasutaja sisestuskorda kontrollitakse, kas sisestus oli õige. Sisestuste vahe on kaks sekundit. Vale sisestuse korral vilgutatakse kõiki tulesid korraga kolm korda. (Mängija õigete sisestuste arvu võib kuvada LCD ekraanil.)
  4. Programm mõõdab reaktsiooniaega. Suvalise LED-i süttides peab kasutaja võimalikult kiiresti vajutama nuppu LED-i all. Aeg, mil LED süttib, on juhuslik, kuid vähemalt 100 ms. Reaktsiooniaega näidatakse kasutajale millisekundites LCD ekraanil. Nuppude väärtust ei tohi lugeda kontaktide põrkumist filtreeriva funktsiooniga, sest see tekitab lisaviite.

 

Kordamisküsimused

  1. Mis on tehete “=” ja “==” erinevus? Esitage selle erinevuse tõestuseks kaks näidet.
  2. Mis on tehete “|” ja “||” erinevus? Esitage selle erinevuse tõestuseks kaks näidet.
  3. Kirjutage avaldis, milles kasutate võrrandit “x = x + 1” kaksteist korda.
  4. Kuidas kirjutate C-keeles lõputu tsükli? Esitage kaks erinevat varianti.
  5. Millist tüüpi muutuja valite C-keeles, et esitada positiivseid arve vahemikus 7 kuni 154?
  6. Milline register määrab ära pordi suuna? Tooge pordi näide sisendi ja väljundi seadistamise kohta.
  7. Milliste meetoditega saab elimineerida lüliti kontaktide põrkumisest tekkivaid väärlülitusi? Tooge näiteid riistvaralise ja tarkvaralise lahenduse kohta.
  8. Mida tähendab termin bitinihutus? Tooge praktiline näide koos seletusega.
  9. Miks kasutatakse lülitite juures pull-up takistit? Mille järgi määratakse selle takistus?
  10. Arvutage LED voolu piirava takisti väärtus, kui toitepinge on 5 V, LED päripinge 2,7 V ja vool 30 mA.