Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Листинг 4 Текст программы interrupt_example.s






.equ KEY1, 0

.equ KEY2, 1

 

/******************************************************************************** Эта программа демонстрирует использование прерываний на стенде

* DE2-70 Media Computer. Вначале запускается таймер, который генерирует

* прерывания каждые 33 мс. Затем разрешаются прерывания от таймера и кнопок.

* Процедура обработки прерывания таймера отображает текст на 7-сегментных

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

* кнопками. При нажатии кнопки key1 текст сдвигается вправо, при нажатии

* key2 – влево, при нажатии key3 изменяется текст, используя данные с переключателей.****************************************************************************************************************************************/

text

.global _start

_start:

movia sp, 0x03FFFFFC /* Определяем адрес вершины стека */

 

movia r16, 0x10002000

 

/* Определяем период срабатывания интервального таймера */

 

movia r12, 0x190000 /* 1/(50 MHz) x (0x190000) = 33 msec */

sthio r12, 8(r16) /*определяем младшее полуслово как стартовое значение*/

srli r12, r12, 16

sthio r12, 0xC(r16) /* старшее полуслово как стартовое значение */

 

/* Запускаем таймер и разрешаем прерывания от него */

 

movi r15, 0b0111 /* START = 1, CONT = 1, ITO = 1 */

sthio r15, 4(r16)

 

/* Разрешаем прерывания PIO, к которому подсоединены кнопки */

 

movia r15, 0x10000050 /* Адрес регистра кнопок */

movi r7, 0b01110

stwio r7, 8(r15) /* Устанавливаем 3 бита регистра маски прерывания*/

 

/* Разрешаем прерывания NIOS 2 процессора */

 

movi r7, 0b011

wrctl ienable, r7 /*Разрешаем прерывания от кнопок*/

movi r7, 1

wrctl status, r7 /*Разрешаем процессору обрабатывать прерывания */

 

IDLE:

br IDLE /* Бесконечный цикл */

data

.global PATTERN

PATTERN:

.word 0x0000000F

.global KEY_PRESSED

KEY_PRESSED:

.word KEY2

.end

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.