Nestr писал(а):
:D
функция старт игра должна стартовать сразу после включения схемы.
И ждать команды от пульта (старт игра)
команда пришла пошла выполнятся основная программа.
Когда убили, попадаем опять в ту часть кода которая ждет команды от пульта (старт игра).
Код:
if(!get_buffer_bit(0)) //åñëè ýòîò áèò ðàâåí 0, òî ýòî ïàêåò ñ äàííûìè (âûñòðåë)
{
Тут нужно сделать рестарт МК.
}
Как это сделать программно?
(Если мы сделаем переход в начало цикла то могут попасть нежелательные значения от старой игры. типа не 100проц жизней, не полная обойма.)
такие вещи обычно делаются не так. Для простоты основного кода без засерания его лишними циклами и условиями делается функционально независимый код. К примеру - функция в прерывании просто принимает чтото любое без разницы, складывает его в память. Другая функция в основном коде уже вне зоны прерывания обрабатывает это значение во время цикла ожидания и перекладывает обработанные данные в другое место. Основной цикл все время сканирует изменения в переменных и если какие то значения его устраивают, выполняет уже те или иные действия. Идеально, если все это работает без флагов и условий. Тогда код будет прост, надежен и мало чувствителен к изменениям.
В итоге получится, что контроллер как бы всегда находится в состоянии рестарта, каждый цикл, но каждый цикл основной программы проходить от начала и до конца. И искать особых условий для старта или обработки каких то особых команд не придется. Это немного похоже на событийно-управляемый код. Проще объяснить трудно