![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 7 Текст программы pushbutton_ISR.s
![]() .include " key_codes.s" .extern KEY_PRESSED .extern PATTERN
/******************* Обработчик прерываний от кнопок************************/
.global PUSHBUTTON_ISR PUSHBUTTON_ISR: subi sp, sp, 20 /* Сохраняем регистры в стеке*/ stw ra, 0(sp) stw r10, 4(sp) stw r11, 8(sp) stw r12, 12(sp) stw r13, 16(sp)
movia r10, 0x10000050 ldwio r11, 0xC(r10) /* Считываем значение из edge-capture регистра*/ stwio r0, 0xC(r10) /* Сбрасываем прерывание */
movia r10, KEY_PRESSED CHECK_KEY1: andi r13, r11, 0b0010 /* Если была нажата кнопка key1 */ beq r13, zero, CHECK_KEY2 movi r12, KEY1 stw r12, 0(r10) br END_PUSHBUTTON_ISR
CHECK_KEY2: andi r13, r11, 0b0100 /* Если была нажата кнопка key2*/ beq r13, zero, DO_KEY3 movi r12, KEY2 stw r12, 0(r10) br END_PUSHBUTTON_ISR
DO_KEY3: movia r13, 0x10000040 ldwio r11, 0(r13) /* Считываем значение с переключателей */ movia r13, PATTERN stw r11, 0(r13) /* Сохраняем измененный текст */
END_PUSHBUTTON_ISR: ldw ra, 0(sp) /* Восстанавливаем регистры из стека */ ldw r10, 4(sp) ldw r11, 8(sp) ldw r12, 12(sp) ldw r13, 16(sp) addi sp, sp, 20
ret .end ![]() Лабораторная работа №4 Исследование работы интервального таймера и применение его в приложениях пользователя Цель работы: изучение работы интервального таймера и применение его в приложениях пользователя.
|