\makeReportTitle{лабораторной}{1}{Создание простой системы в Platform Designer \\ в пакете Quartus Prime}{Программное обеспечение встроенных систем}{}{доцент кафедры ИУ-3 \\ Федоров С.В.}
Изучить средства создания систем на кристалле на основе процессора Nios II фирмы Intel в средстве Platfrom Designer. Освоить методику создания и конфигурации систем на кристалле. Реализовать и отладить программное обеспечение системы на кристалле. Освоить методику отладки проекта с применением программных и аппаратных средств. Получить навыки работы с документацией производителя.
\item Модифицируйте исходную программу следующим образом: нажатие кнопки KEY3 должно зажигать все светодиоды, KEY0 -- гасить все светодиоды, нажатие центральных кнопок KEY2 и KEY1 должно гасить светодиоды по очереди слева и справа по одному на каждое нажатие.
\item Реализуйте обработку нажатия кнопок и формирование значений на светодиодах по прерыванию. Используйте справочные материалы в каталоге лабораторной работы.
\textbf{Программа по заданию 1} (изменения выделены красным цветом, комментарии приведены и выделены зеленым). для сдвига влево или вправо используется оператор \code{>>}, а для наложения полученного значения на текущие обжуленные биты побитовая маска \&с последующим присваиванием обратно в переменную \code{led}:
\textbf{Программа по заданию 2.} Структура программы: обработчик прерывания от кнопок (в нем считываются задетектированные нажатия кнопок), подпрограмма регистрации обработчика прерывания и главная программа, которая вызывает подпрограмму регистрации и управляет состоянием светодиодов. Во всех функциях использовались макроконстанты, объявленные в заголовочных файлах \code{system.h} и \code{altera_avalon_pio_regs.h}, хранящих адреса соответствующих инструкций и данных. Также был добавлен заголовочный файл \code{sys/alt_irq.h}. Адреса изменились, потому что теперь это не значения на кнопках (1 для свободной, 0 для нажатой), а значения в регистре прерываний (1 для места, где сработало прерывание).