A híres Tetris klónja, assemblerben írva. Teljesen belefér az 512 bájtos rendszerindító szektorba (csak 446 bájt területre van szüksége, ami csak maximális méret rendszerbetöltő MBR-ben).

MBR - az operációs rendszer későbbi indításához szükséges kódot és adatokat tartalmazó szakasz, amely az első fizikai szektorokban található. A lemez legelső 446 bájtja a rendszerbetöltő kódot kapja. Ezen a helyen rögzítik a TetrOS-t.

Természetesen az ilyen tulajdonságok miatt mindenekelőtt betöltődik operációs rendszer- nem igényel operációs rendszert, magától működik. Igen, jól hallottad, a TetrOS saját rendszerbetöltő.

Így néz ki a képernyőn:

A rendszerindító szektor forrása pedig így néz ki:

És igen az egész forrás. Emlékszel, hogy csak 446 bájtot nyom?

Lehetséges ezt a "csoda operációs rendszert" qemu alatt futtatni, vagy akár valódira is telepíteni rendszerindító partíció lemez vagy flash meghajtó.

dob

Csak telepítse a qemu-t:

sudo apt-get install qemu

és fuss:

Letöltés flash meghajtóra

Másolja a képet egy flash meghajtóra. Tegyük fel, hogy ha a flash meghajtó /dev/sde néven van csatlakoztatva, akkor a következő parancs futtatásával írhat rá rendszerindító szektor TetrOS:

sudo dd if=tetros.img of=/dev/sde

A játék leírása

A fejlesztőnek nem a legunalmasabb dizájnt sikerült mindössze 512 bájt memóriába belezsúfolnia. A játékban minden téglának megvan a maga színe, az irányítást gombok végzik, vereség esetén a játék véget ér, a téglák véletlenszerűen generálódnak… BolgenOS közel sem volt!

Sajnos a méret miatt néhány funkciót el kellett hagyni. A játékban nincs pontozás, újra kell indítani a játékot újratöltés nélkül, és megjeleníteni, hogy mi lesz a következő tégla.

BEVEZETÉS Mikrokontrollerek, előfordulásuk és alkalmazásuk
A mikrokontrollerek története
Elektronika görög stílusban
Miért az AVR?
Mi a következő lépés?

I. RÉSZ. AZ ATMEL AVR TERVEZÉSÉNEK ÉS MŰKÖDÉSÉNEK ÁLTALÁNOS ELVEI

1. fejezet Az Atmel AVR mikrovezérlők áttekintése

AVR családok
Az MK AVR gyakorlati használatának jellemzői

2. fejezet Általános elrendezés, memóriarendezés, órajel, reset

Program memória
Adatmemória (RAM, SRAM)
Nem felejtő adatmemória (EEPROM)
Órakészítési módszerek
Visszaállítás
További külső adatmemória csatlakoztatásának jellemzői

3. fejezet Bevezetés a perifériákba

I/O portok
Időzítők-számlálók
Analóg-digitális átalakító
Soros portok
UART
SPI interfész
TWI interfész (12C)
Egyetemes soros interfész USI

4. fejezet Megszakítások és energiatakarékos üzemmódok

Megszakítja
A megszakítások típusai
Energiatakarékos módok
Fogyasztás MK AVR
MK AYR fogyasztási és energiatakarékos módok

RÉSZ II. ATMEL AVR MIKROCONTROLLEREK PROGRAMOZÁSA

5. fejezet Az MK család AVR programozásának általános elvei

Assembler vagy C?
Az AVR programozásának módjai és eszközei
Kódszerkesztő
Az AVR Stúdióról
Az összeszerelő elrendezése
programozók
A hexa fájlokról
Parancsok, utasítások és AVR összeállítás jelölései
Számok és kifejezések
Irányelvek és funkciók
Az AVR program általános felépítése
Megszakítás kezelés
VISSZAÁLLÍTÁS
A legegyszerűbb program
Késleltetés
Számláló program
Megszakítások használata
Időzítő késleltetés
A számlálóprogram megszakítása
A konfigurációs bitekről

6. fejezet AVR Command System

Vezérlő átviteli parancsok és a SREG-regiszter
Check-pass parancsok
Logikai parancsok
Shift utasítások és bitműveletek
Parancsok az aritmetikai műveletekhez
Adatátviteli parancsok
Rendszervezérlő parancsok
Tipikus eljárások végrehajtása assemblerben
A veremről, a lokális és globális változókról

7. fejezet Aritmetikai műveletek

Szabványos aritmetikai műveletek
Többjegyű számok szorzása
Több számjegyű osztás
Műveletek törtszámokkal
Véletlenszám-generátor
Műveletek számokkal BCD formátumban
Negatív számok MK-ban

8. fejezet Időzítők programozása

8 és 16 bites időzítők
A frekvencia alapjelének kialakítása
Visszaszámlálás
Pontos időkorrekció
Frekvenciamérő és periódusmérő
Frekvenciamérő
Periodométer
Dinamikus jelzésvezérlés
LED jelzőfények és bekötésük
Programozás dinamikus jelzés
Időzítők PWM módban

9. fejezet Az EEPROM használata

Még egyszer az EEPROM-ban lévő adatok biztonságáról
Írjon és olvasson EEPROM-ot
Állandók tárolása EEPROM-ban

10. fejezet Analóg komparátor és ADC

Analóg-digitális műveletek és hibáik
Munkavégzés analóg komparátorral
ADC integrálása egy komparátoron
Működési elv és számítási képletek
ADC program integrálása
Beépített ADC
ADC példa
Program

11. fejezet SPI programozás

Alapvető műveletek SPI-n keresztül
Hardver opció
Szoftver opció
A nem felejtő memória fajtáiról
Flash memória írása és olvasása SPI-n keresztül
45DB011B memóriacsere program SPI-n keresztül
Flash kártyák írása és olvasása
MMS-kártyák csatlakoztatása
Parancsok kiadása és MMC inicializálása
MMS írása és olvasása

12. fejezet TWI interfész (12C) és gyakorlati használata

Alapprotokoll 12C
A 12C protokoll szoftveres emulációja
Adatok írása külső nem felejtő memóriába
Üzemmódok cseréje AT24 memóriával
Program
Óra 12C interfésszel
Adatrögzítés
Adatok olvasása

13. fejezet UART/USART programozás

UART inicializálás
Adatok küldése és fogadása
Példa a DS1307 óra beállítására UART segítségével
Kommunikációs hibák elleni védekezési technikák
Még paritás
Hogyan szervezzük meg a megfelelő cserét
További jellemzők USART
RS-232 és RS-485 interfészek megvalósítása
Szintátalakítók RS-232-hez
RS-485

14. fejezet Energiatakarékos üzemmódok és Watchdog időzítő

Energiatakarékos programozás
Példa elemes műszerre
A program finomítása
A watchdog időzítő használata

ALKALMAZÁSOK

1. melléklet. Az Atmel AVR mikrokontrollerek fő paraméterei

2. függelék Atmel AVR parancsok
Aritmetikai és logikai utasítások
Bitműveleti parancsok
Összehasonlítási parancsok
Vezérlő átviteli parancsok
Feltétel nélküli ugrási és szubrutinhívási utasítások
Az ellenőrzés és a feltételes leágazási utasítások kihagyása
Adatátviteli parancsok
Rendszervezérlő parancsok

3. függelék Programszövegek
45DB011B Flash-memória kommunikációs bemutató program SPI interfészen keresztül
Csere eljárások a 12C interfészen

4. függelék Kommunikáció a személyi számítógépés hibakereső programok UART-on keresztül
Dolgozunk COM porttal a Delphiben
COM port és Windows API
COM-val való munkavégzés kész komponenseken keresztül
Az RTS vonal telepítése DOS-ban és Windowsban
COM2000 program
Programok hibakeresése terminálprogrammal

5. függelék A gyakori rövidítések és kifejezések szószedete
Az orosz nyelvű kifejezések megfeleltetése angolra fordításukkal
Az angol kifejezések megfeleltetése az orosz nyelvű fordításukkal

Irodalom
Tárgymutató

Valahogy a neten láttam egy érdekes videót, egy mikrokontrollerre és egy 8x8-as LED mátrixra implementált kígyójátékot mutattak be, aztán találtam még pár hasonló videót, ami érdekelt. Köztük volt egy videó is, ahol egy Tetris játékot szereltek össze egy „erős” mikrokontrolleren. A megtekintés után úgy döntöttem, hogy a PIC16F688 mikrokontroller és két, a játékteret 8x16 pixeles felbontású, a játékteret megjelenítő LED-mátrix segítségével kifejlesztem a készülék saját verzióját, amelyben mindkét játékot kombinálják.

A készülék diagramja alább látható. A dinamikus üzemmódban a H1, H2 mátrixra vonatkozó információ kiadása a DD2, DD3, DD4 eltolási regiszterek segítségével történik. A DD2, DD3 mikroáramkörök kimenetei a mátrixok anódjaira csatlakoznak. Mindkét mátrix katódja a VT1-VT8 tranzisztorok kollektoraihoz csatlakozik, amelyekhez a vezérlőjeleket a DD4 chip generálja. A mikrokontroller adatokat tölt be a DD4 regiszterbe, annak túlcsordulásakor a 9. kimenetről a DD3 regiszter bemenetére kerül információ, majd ugyanígy az adatok a DD2 regiszterbe. Az R1-R16 ellenállások korlátozzák a mátrix LED-eken áthaladó áramot. Az R17-R23 ellenállások beállítják a VT1-VT8 tranzisztorok alapáramát. A mikrokontroller 8 MHz-es frekvencián működik egy belső oszcillátorról. A képfrissítési frekvencia 100 Hz.


A tápfeszültség bekapcsolása után a „Snake” játék képernyővédője megjelenik a játéktéren. A mező felső részén az 1-es szám látható, az alsó részben a játék egy töredékének képe. Az SB5 „Start / Szünet” gombjának megnyomásakor a játékmenübe lépünk, melynek tetején a játék szintje 1-től 9-ig terjedő számok formájában jelenik meg. A játék szintjét az SB1 „Up” gombja állítja be. gombot, minden alkalommal, amikor megnyomja, a szint száma egységenként növekszik. A 9-es szám után ismét az 1-es jelenik meg megállapított szinten A játék a kígyó kezdeti hosszától függ, így az 1. szintnél a hossza 3 pont, a 9. szintnél 11 pont. A menü alján a kígyó sebességére vonatkozó információk jelennek meg. Az 1-es szám a minimális sebességnek, a 9-es pedig a maximális sebességnek felel meg. A sebesség értékét az SB4 „Le” gombja állítja be, hasonlóan a játékszint beállításához. A menüben a mező kerülete mentén lévő LED-ek világítása azt jelenti, hogy a játékmód van kiválasztva a pálya kerülete mentén szegélyekkel. Ebben a módban, amikor a kígyó elhagyja a játékteret, veszteség következik be. Ha a menüben a tábla kerülete körüli LED-ek nem világítanak, akkor a szegély nélküli mód van kiválasztva. Ebben az esetben a játéktér elhagyásakor a kígyó feje megjelenik a pálya ellentétes oldalán. Az SB2 „Jobb” és az SB3 „Bal” gombok beállítják a kívánt játékmódot. Amikor először lép be a játékmenübe, a hossz és a sebesség értéke egyre van állítva, a szegélyekkel rendelkező mód kerül kiválasztásra.

Miután megnyomta a „Start / Szünet” gombot a játékmenüben, egy kígyó az alaphelyzetben és egy véletlenszerű szabad pont jelenik meg a játéktéren. A "Fel", "Balra", "Jobbra" gombok bármelyikének megnyomásával a kígyó a megfelelő irányba mozog. A mozgás megkezdése után a „Le” gomb is elérhetővé válik a kígyó irányításához. Egy világító pont eltalálásakor a kígyó hossza megnő. 14 pont összegyűjtése után a játékos továbblép a játék következő szintjére. A 9. szint után átmenet következik az első szintre. Ha a kígyó eltalálja a saját testét, vagy határ módban kilép a játéktérről, veszteség következik be. 3 vereség után visszatér a játékmenübe, ahol az aktuális játékszint és sebesség látható. Miután a kígyó elkezd mozogni, a „Start / Szünet” gombok megnyomásával szüneteltetheti és folytathatja a játékot.

A játék menüből való kilépéshez tartsa lenyomva a „Start / Szünet” gombot 1 másodpercig, majd a játék indítóképernyője megjelenik a játéktéren. A játékok közötti váltás a „Fel”, „Le”, „Bal”, „Jobb” gombok bármelyikének megnyomásával történik. Ezzel egyidejűleg megjelenik a megfelelő játék kezdőképernyője.

A Tetris játék indítóképernyőjének felső részén a 2-es szám, alsó részén pedig a játék egy töredékének képe látható. A játékmenübe való váltás a „Start/Szünet” gomb megnyomásával történik. A menü tetején a játékos által szerzett pontok száma jelenik meg. Mindegyikért pont jár törölt sor. A pontszámszámláló 99-ig számol, majd nullára áll, és a pontszám újra kezdődik. Mindegyik elején új játék, a számláló is nullázódik. A menü alsó részén a darabok mozgási sebességére vonatkozó információk jelennek meg, melyeket a "Fel", "Le" gombokkal lehet beállítani. A menüből a „Start / Szünet” gomb megnyomása után elindul a játék, a mező felső részében véletlenszerű figurák jelennek meg, amelyeket a „Bal” és „Jobbra” gombokkal lehet a megfelelő irányba mozgatni. A Fel gomb minden egyes megnyomásakor 90 fokkal elforgatja az alakzatot az óramutató járásával megegyezően. A „Le” gomb nyomva tartásával felgyorsíthatja a figura mozgását. A „Start/Szünet” gomb lehetővé teszi a játék szüneteltetését és folytatását. A játék akkor ér véget, ha egy új figura nem fér el a játéktéren, ezután át kell lépni a menübe, ahol megtekintheti a játékos által szerzett pontok számát. A menüből való kilépés ugyanúgy történik, mint a „Snake” játékban.

Ha 4 percen belül egyik gombot sem nyomják meg, a készülék alacsony fogyasztású üzemmódba kapcsol, a mikrokontroller kikapcsolja a LED-mátrixokat, és alvó üzemmódba lép. A készülék a „Start” gomb megnyomása után „felébred”, és visszatér előző állapotába.

A készülék felületre szereléshez 1206-os méretű ellenállásokat használ. C2, C3 kondenzátorok - kerámia mérete 1206. LED mátrixok H1, H2 - TOM-1088BG-B zöld fény, 3 mm-es LED átmérővel, 8x8 pixeles felbontással. A gombok szabványos óra.

Az áramforrás 3,7-5V feszültségű stabilizált táp, galvanikus cellákat vagy elemet is használhatsz, pl 3 db 1,5V AA vagy AAA elemet sorba kötve én pl 3 db AA elemet használok. A készülék működőképes marad, ha a tápfeszültség 3,3 V-ra csökken, miközben a LED-mátrixok fényereje csökken.

Név: Atmel AVR mikrokontrollerek gyakorlati programozása assembly nyelvű 2 kiadásban

Kiadó:"BHV-Pétervár"

A megjelenés éve: 2011

Oldalak: 354

Nyelv: orosz

Formátum: Djvu

A méret: 12,2 MB

Az Atmel AVR mikrokontrollerek működési elvei, architektúrája és programozási technikái egymásra épülnek.

Kész recepteket adunk a modern mikroelektronikai berendezések fő funkcióinak programozásához: a reakciótól a gombnyomáson vagy a dinamikus jelzés felépítésén át az adatok rögzítésére szolgáló összetett protokollokig. külső memória vagy a valós idejű óra csatlakozási jellemzői. Kiemelt figyelmet fordítanak a mikroelektronikai eszközök személyi számítógéppel történő adatcseréjére, programpéldákat közölnek. A könyv figyelembe veszi a modern AVR modellek és a kapcsolódó chipek jellemzőit. utóbbi években kiadás.
Az alkalmazás tartalmazza az AVR mikrovezérlők főbb paramétereit, a parancsok és szövegek listáját Az alkalmazások tartalmazzák az AVR mikrovezérlők főbb paramétereit, a hozzájuk tartozó parancsok és programszövegek listáját, valamint a használt kifejezések és rövidítések listáját.
Diákoknak, mérnököknek és rádióamatőröknek

7. Mikrokontrollerek, előfordulásuk és alkalmazásuk
8. A mikrokontrollerek előtörténete
10. Elektronika görög stílusban
12. Miért az AVR?
14. Mi a következő lépés?
17. L. RÉSZ AZ ATMEL AVR TERVEZÉSÉNEK ÉS MŰKÖDÉSÉNEK ÁLTALÁNOS ELVEI
19. 1. fejezet Atmel AVR mikrokontrollerek áttekintése
21. AVR családok
23. Az MK AVR gyakorlati használatának jellemzői
23. Fogyasztás
25. Az AVR áramkörökben való használatának néhány jellemzője
27. 2. fejezet Általános készülék, memória szervezése, órajelezés, visszaállítás
27. Programmemória
29. Adatmemória (RAM, SRAM)
31. Nem felejtő adatmemória (EEPROM)
32. Időzítési módszerek
34. Reset
37. 3. fejezet Bevezetés a perifériákba
38. I/O portok
39. Időzítők-számlálók
41. Analóg-digitális átalakító
42. Soros portok
43. UART
46. ​​SPI interfész
50. TWI interfész (I2C)
50. USI univerzális soros interfész
53. 4. fejezet Megszakítások és energiatakarékos üzemmódok
53. Megszakítja
57. A megszakítások változatai
58. Energiatakarékos módok
61. II. RÉSZ. ATMELAVR MIKROCONTROLLEREK PROGRAMOZÁSA
63. 5. fejezet Általános elvek programozás MK család AVR
63. Assembler vagy C?
67. Az AVR programozásának módjai és eszközei
67. Kódszerkesztő
68. Az AVR Stúdióról
70. Az összeszerelő elrendezése
71. Programozók
75. A hexa fájlokról
78. Az AVR assembler parancsai, utasításai és jelölései
79. Számok és kifejezések
80. Irányelvek és funkciók
84. Az AVR program általános felépítése
85. Megszakításkezelés
89. RESET
90. A legegyszerűbb program
92. Késés
94. Számláló program
96. Megszakítások használata
97. Késleltetési időzítő
98. Megszakításokat használó számlálóprogram
101. A konfigurációs bitekről
105. 6. fejezet, AVR parancsrendszer
105. Vezérlés átviteli parancsok és SREG regiszter
111. Check-pass parancsok
113. Logikai műveletek parancsai
114. Shift utasítások és bitműveletek
116. Aritmetikai műveletek parancsai
118. Adatátviteli parancsok
122. Rendszervezérlő parancsok
123. Tipikus eljárások végrehajtása assemblerben
125. A veremről, a lokális és globális változókról
127. 7. fejezet Aritmetikai műveletek
128. Szabványos aritmetikai műveletek
129. Többjegyű számok szorzása
131. Többjegyű számok felosztása
134. Műveletek törtszámokkal
136. Véletlenszám-generátor
138. Műveletek számokkal BCD formátumban
143. Negatív számok az MK-ban
147. 8. fejezet Időzítők programozása
147. 8 és 16 bites időzítők
149. A beállított frekvenciaérték kialakítása
153. Visszaszámlálás
158. Pontos időkorrekció
160. Frekvenciaszámláló és periódusmérő
160. Frekvenciamérő
164. Periodometr
167. Dinamikus jelzésvezérlés
168. LED-jelzők és bekötésük
171. Dinamikus jelzés programozása
174. Időzítők PWM módban
179. 9. fejezet Az EEPROM használata
179. Még egyszer az EEPROM-ban lévő adatok biztonságáról
181. Írjon és olvasson EEPROM-ot
183. Állandók tárolása EEPROM-ban
187. 10. fejezet Analóg komparátor és ADC
187. Analóg-digitális műveletek és hibáik
190. Munkavégzés analóg komparátorral
193. ADC integrálása komparátoron
194. Működési elv és számítási képletek
198. Integráló ADC program
201. Beépített ADC
204. Példa az ADC használatára
206. Program
215. 11. fejezet SPI programozás
215. Alapműveletek SPI-n keresztül
216. Hardverváltozat
218. Program opció
219. A nem felejtő memória fajtáiról
221. Flash-memória írása és olvasása SP-n keresztül!
224. Program a 45DB011B memóriával SPI-n keresztül történő cseréhez
225. Flash kártyák írása és olvasása
225. MMS-kártyák csatlakoztatása
228. Parancsok kiadása és az MMC inicializálása
232. MMC írása és olvasása
237. 12. fejezet TW1 (I2C) interfész és gyakorlati felhasználása
237. Alapjegyzőkönyv 1 2 C
240. Az I 2 C protokoll szoftveres emulációja
241. Adatok írása külső nem felejtő memóriába
241. Cseremódok AT24 memóriával
243. Program
247. Óra I 2 C interfésszel
255. Adatrögzítés
259. Adatok olvasása
261. 13. fejezet UART/USART programozás
262. UART inicializálás
263. Adatok küldése és fogadása
266. Példa a DS1307 óra UART segítségével történő beállítására
271. Kommunikációs hibák elleni védekezési technikák
271. Paritásellenőrzés
273. Hogyan szervezzünk helyes cserét
274. Az USART további szolgáltatásai
276. RS-232 és RS-485 interfészek megvalósítása
280. Szintátalakítók RS-232-hez
283.RS-485
285. 14. fejezet Energiatakarékos üzemmódok és Watchdog időzítő
286. Energiatakarékos mód programozása
287. Példa elemes műszerre
289. A program finomítása
293. A watchdog időzítő használata
299. MELLÉKLETEK
301. 1. melléklet Atmel AVR mikrokontrollerek főbb paraméterei
309 2. függelék Atmel AVR parancsok
310. Aritmetikai és logikai parancsok
311. Bitműveleti parancsok
312. Összehasonlító parancsok
313. Vezérlés átviteli parancsok
313. Utasítások feltétel nélküli ugráshoz és szubrutinok hívásához
314. Check-skip parancsok és feltételes ugrási parancsok
315. Adatátviteli parancsok
316. Rendszervezérlő parancsok
317. 3. melléklet Programok szövegei
317. Bemutató program adatcseréhez 45DB011B flash-memóriával SPI interfészen keresztül
321. Csere eljárások az I2C interfészen keresztül
329. 4. melléklet Adatcsere személyi számítógéppel és hibakereső programokkal UART-on keresztül
329. Dolgozunk COM porttal a Delphiben
335. Az RTS vonal telepítése DOS-ban és Windowsban
337. COM2000 program
339. Programok hibakeresése terminál emulátorral
341. 5. függelék. A gyakori rövidítések és kifejezések szószedete
347. Irodalom
349. Tárgymutató