Написание программы-игры, использующей в своей работе клавиатуру и дисплей (ЖКИ) стенда. Генератор случайных чисел

Страницы работы

Содержание работы

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

—————————

Кафедра систем автоматического управления

ОТЧЕТ

по лабораторной работе №9

«Игра»

по курсу «ВМ, системы и сети»

Студент:

Ву Ван

гр. 3083/2

Преподаватель:

Санкт-Петербург — 2010

задание

Задача состоит в написании программы-игры, использующей в своей работе клавиатуру и дисплей (ЖКИ) стенда. Программа должна вести счёт игры, выдавать на экран случайное число и сравнивать его с нажатым на клавиатуре.

описание

Передняя панель выглядит следующим образом

Всю задачу можно разбить на подзадачи:

  • Реализовать генерирование случайных чисел.
  • Написать подпрограмму, распознающую нажатия на кнопки клавиатуры.
  • Компоновка подпрограмм в единую программу.

Генератор случайных чисел

На самом деле мы будем реализовывать генератор псевдослучайных чисел (то есть выдаваемые величины не случайны, их появление можно предсказать), однако в данной программе это не важно. Алгоритм для генерации таких чисел выглядит следующим образом:

Имеется счётчик (содержимое R3), который при каждом вызове подпрограммы будет увеличиваться на единицу. Для получения случайного берём остаток от деления значения счётчика на число   . Далее остаётся перевести цифру в ASCI код. Для этого увеличиваем её на 30h.

Составим блок-схему

Распознавание нажатой кнопки

На передней панели стенда находится клавиатура.

Напишем подпрограмму для считывания нажатой кнопки. Принцип действия следующий. Имеется порт P4, в котором хранится информация о нажатых клавишах. Для определения того, нажата ли в данный конкретный момент клавиша, например «4», необходимо послать сигнал во вторую строку. Управляющим сигналом является ноль, поэтому в порт нужно записать число, у которого в соответствующей позиции стоит 0, а в других 1. В случае со второй строкой этот код имеет вид 11110111, так как за вторую строку отвечает 3-й бит.

После записи кода в порт проверим, была ли нажата клавиша. Для этого прочитаем содержимое P4 и если бит 5,7 или 6 изменены (т.е. стали равны 0), то была нажата клавиша первого, второго или третьего столбца соответственно. Так мы определим, какая конкретно клавиша была нажата.

Блок схема для распознавания нажатой клавиши

Главная программа

Программа будет работать следующим образом. Сначала необходимо инициализировать переменные и монитор, выключить светодиод, очистить дисплей. Далее на ЖКИ будет выводиться случайное число. После нажатия клавиши на ЖКИ будет отображена нажатая клавиша, текущий счёт и новое случайное число. Также в случае правильного ответа загорится зелёный светодиод, а в случае неправильного – красный. Для защиты от нажатия двух клавиш поставим задержку на 0.5 сек, запускаемую сразу после обнаружения нажатой клавиши.

Блок-схема главной программы

распределение памяти

Код программы хранится в памяти в ячейках начиная с 8000h

текст программы

;==================================

;программа-игра

;==================================

;объявление и подключение библиотек

#include <REG51GB.H>

EXTERN CODE (LCD_INIT)

EXTERN CODE (LCD_OUT)

;==================================

;главная программа

;---------------------------------LCALL LCD_INIT      ;инициализация дисплея

LCALL LCD_OUT      ;очистка дисплея

MOV A,#5H                ;послаем в аккумулятор число 5

MOV R0,A                  ;установка счёта игры

MOV R3,#0H               ;уснановка счётчика рандома

;---------------------------------;выключение светодиодов

MOV A,P5       ;содержимое порта 5 посылаем в аккумалятор

ANL A,#OFF   ;умножаем на маску

MOV P5,A       ;записываем обратно в порт 5

;---------------------------------GLAV:

Похожие материалы

Информация о работе