"SwapStones" - Проект по Mикропроцесорна Tехника за ATmega8515 и STK500


Задача:

Да се реализира играта "Swap Stones" на кит STK500 и микроконтролер AТmega8515.


Същност на играта:

1. Постановка:

Игралното поле е разделено на 7 части. В левия край са поставени три черни фигурки, а в десния три бели. Средното поле е свободно.


2. Цел:

Играта е за един човек, като неговата цел е да размени местата на белите и черните фигурки като използва свободното поле.

3. Правила на движение:

- Фигурките от двата цвята се движат едни срещу други, като ходове в обратна посока не са разрешени.
- Една фигурка може да се премества в съседно свободно поле.
- Фигурка може да прескача противникова фигурка, ако след нея се намира свободното поле.
- При преместванията редуването на бели и черни фигурки не е задължително.

Хардуерно изпълнение:

За реализацията на този проект не е необходим никакъв допълнителен хардуер. Използват се единствено бутоните (свързани към PORTD) и светодиодите (свързани към PORTB) на STK500. Първите седем бутона служат за извършване на ходовете, а осмият е за рестартиране. Светодиодите показват текущото състояние на играта.





Реализация:

Основният проблем при реализацията на играта е, че са ни необходими три състояния на диодите – две за двата цвята фигурки и едно за празното квадратче. За да се реши проблема се използват два регистъра, в които се зареждат следните маски:



Когато на даден светодиод се подаде 0 той светва. Организираме цикъл, в който към светодиодите една след друга се подават тези две маски. В резултат на това светодиоди 3 и 7 няма да светят, 4, 5 и 6 ще светят, а 0, 1 и 2 ще премигват с много висока честота. Човешкото око не е способно да възприеме това премигване и за него светодиоди 0, 1 и 2 просто ще светят по-слабо. Така вече имаме три състояния на светодиодите. Всичко останало е „жонглиране“ с битовете в тези две маски.


Блок-схема:




Links:

SwapStones.asm - сорс-кодът на програмата като файл за сваляне
http://www.avr-asm-tutorial.net/avr_en/index.html - сайт с много други проекти и допълнителна информация (на английски)