This is an old revision of the document!
Exercises
The goal is to make a program witch is able to perform specified task.
Warm up exercise
For beginners
It simulates traffic light when the button is pressed. Until no button is pressed the yellow light is blinking (traffic light in night mode). After pressing a random button the traffic light starts working in everyday mode, lighting yellow, then red and before continuing again yellow
Counts how many times the button is pressed. The pressing is considered as ended after the button is released. The result is displayed is binary code on LED-s. Maximum result when using three LED-s is 7(23-1). Green is 1. bit, yellow 2. bit and red 3. bit.
By pressing switch S1, LED1 and LED3 are lighted, pressing S2 yellow LED is lighted, pressing S3 all LED-s are switched off. This operation must be done by changing directly values of corresponding registers (without using the library of the home lab).
Counts how many times the button is pressed. The result is displayed by blinking LED-s. After every press the number of blinking is raised by one. Random button may be selected. Blinking the LED sub function witch’s parameter is the number of blinks must be used.
When pushing button S1, red LED will blink “SOS” in Morse. By pressing S2, yellow LED blinks “CQD” and by pressing S3, green will blink “OK”.
For advanced
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).
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.
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. 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.)
Programm mõõdab reaktsiooniaega. Suvalise LED süttides peab kasutaja võimalikult kiiresti vajutama nuppu LED 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 värelust filtreeriva funktsiooniga, sest see tekitab lisaviite.
Kordamisküsimused
Mis on tehete “=” ja “==” erinevus? Esitage selle erinevuse tõestuseks kaks näidet.
Mis on tehete “|” ja “||” erinevus? Esitage selle erinevuse tõestuseks kaks näidet.
Kirjutage avaldis, milles kasutate võrrandit “x = x + 1” kaksteist korda.
Kuidas kirjutate C-keeles lõputu tsükli?
Millist tüüpi muutuja valite C-keeles, et esitada positiivseid arve vahemikus 7 kuni 154?
Milline register määrab ära pordi suuna? Tooge pordi näide sisendi ja väljundi seadistamise kohta.
Milliste meetoditega saab elimineerida nupu värelust? Tooge näiteid riistvaralise ja tarkvaralise lahenduse kohta.
Mida tähendab termin bitinihutus? Tooge praktiline näide koos seletusega.
Miks kasutatakse lülitite juures pull-up-takistit? Mille järgi määratakse selle takistus?
Arvutage LED voolu piirava takisti väärtus, kui toitepinge on 5 V, LED päripinge 2,7 V ja vool 30 mA.