7.7.4. Схемное решение, структура программы и блок-схема алгоритма
На рис. 7.38 показана структура микроконтроллерной системы для игры в «15». Встроенные порты отладочной платы 68HC912B32EVB используются, чтобы получать и послать данные от вспомогательной клавиатуры и модуля ЖК-дисплея. Принципиальная схема этой системы с расширением памяти приведена на рис. 7.39.
Рис. 7.38. Структура микропроцессорной системы для игры в «15»
Рис. 7.39. Принципиальная схема системы для игры в «15»
На рис. 7.40 показана структура программы для игры в «15», в которой главная программа обращается к шести субмодулям. На рисунке показан также ряд функций, выполняемых каждым субмодулем. Соответствующая блок схема алгоритма приведена на рис. 7.41.
Рис. 7.40. Структура программы для игры в «15»
Рис. 7.41. Блок схема алгоритма программы для игры в «15»
7.7.5. О компонентах системы
Интеллектуальный точечный графический дисплей AND 1391 — это полная точечная матрица ЖКД со встроенным модулем контроллера дисплея и ОЗУ буфера экрана. Он может выводить 21 символ на каждой из 18 строк дисплея. Вы можете прочесть об этом дисплее и функциях его обеспечения в главе 5.
7.7.6. Программный код
//Имя файла: sliding.с
//Программа: Игра в "15"
//Авторы: Scott Lewis, Daniel Pack,
//Дата создания: Начата 27 апреля 2004
//окончена 7 Мая 2004
// Описание: Эта программа реализует игру в "15". Цель игры
// заключается в том, чтобы выстроить фишки по по ряду номеров. Вы
// можете только перемещать на пустое место любую соседнюю фишку.
// Программа постоянно находится в памяти системы по адресу
// $2000. Программа отображает исходное состояние фишек, затем
// показывает состояние к которому необходимо прийти в
// результате. Программа размещает все фишки в случайном
// порядке, и затем позволяет пользователю начать игру
// Конфигурация системы
// Программа: 0x2000
// Данные: 0x3500
// Стек: 0x4000
//
// PDLC0: /WR PP0 Data 0 PS0: Не используется
// PDLC1: /RD PP1 Data 1 PS1: Не используется
// PDLC2: /CE PP2 Data 2 PS2: Кнопка "Влево"
// PDLC3: C/D PP3 Data 3 PS3: Кнопка "Выбор"
// PDLC4: /Reset PP4 Data 4 PS4: Кнопка "Вниз"
// PDLC5: NC PP5 Data 5 PS5: Кнопка "Вправо"
// PDLC6: NC PP6 Data 6 PS6: Кнопка "Вверх"
// PDLC1: NC PP7 Data 7 PS7: Не используется
//
// Выводы ЖКД
// GND - 2 1 - GND
// -14V - 3 4 - +5V
// /WR - 5 6 - /RD
// /CE - 7 8 - C/D
// NC - 9 10 - /Reset
// DO - 11 12 - D1
// D2 - 13 14 - D3
// D4 - 15 16 - D5
// D6 - 17 18 - D7
// GND - 19 20 - NC
//******************************************************
#include 912b32.h // описание портов - header file
// приведен в приложении
//********************************************************************
// Постоянные
//********************************************************************
#define ARRAY_MAX 15
#define ZERO 0x00
#define L_BUTTON 0x04 // сигналы кнопок
#define R_BUTTON 0x20
#define U_BUTTON 0x40
#define D_BUTTON 0x10
#define S BUTTON 0x08
#define LEFT 1 // выбор направления
#define RIGHT 2
#define UP 3
#define DOWN 4
#define SELECT 5