бы будет понятно, о чём речь
/* * AsmFile2.asm * * Created: 28.12.2020 14:30:13 * Author: dima */ .include "m324Pdef.inc" ; Replace with your application code ; FLASH =================================================== ;Инициализация стэка .CSEG ; Кодовый сегмент RJMP Reset RETI ;2 (INT0) External Interrupt Request 0 RETI ;4 (INT1) External Interrupt Request 1 RETI ;6 PCINT0 прерывание 0 по изменению состояния выводов RETI ;8(PCINT1) прерывание 1 по изменению состояния выводов RETI ;0А(PCINT2)прерывание 2 по изменению состояния выводов RETI ;0С(WDT)Таймаут сторожевого таймера RETI ;0Е(TIMER2 COMPA) Совпадение А таймера счетчика Т2 RETI ;10(TIMER2 COMPB) Совпадение B таймера счетчика Т2 RETI ;12(TIMER2 OVF) Timer/Counter0 Overflow RETI ;14(Timer1 CAPT)Захват таймера счетчика T1 RETI ;16(Timer1 COMPA) RETI ;18Timer1 COMPB) RETI ;1A(TIMER1 OVF) RETI ;1C(TIMER0 COMPA) RETI ;1E(TIMER0 COMPB) RETI ;20(TIMER0 OVF) RETI ;22(SPI,STC)Передача по SPI завершена RETI ;24(USART RXC)USART прием завершен RETI ;26(USART UDRE)регистр данных USART пуст RETI ;28(USART,TXC) USART передача завершена RETI ;2А(ADC) преобразование АЦП завершено RETI ;2C(EE_RDY)EEPROM готово RETI ;2E(ANA_COMP)Аналоговый компаратор RETI ;30(TWI)Прерывание от модуля TWI RETI ;32(SPM_RDY)Готовость SPM .ORG INT_VECTORS_SIZE ; Конец таблицы прерывани Reset: LDI R16,Low(RAMEND) ; Инициализация стека OUT SPL,R16 ; Обязательно!!! LDI R16,High(RAMEND) OUT SPH,R16 ;=============================================================================================== RCALL Conf_Time start: RCALL delay2 ;вызов подпрограммы ожидания nop nop nop nop nop nop nop nop nop nop RJMP start ;зацикливаю программа ;Напишу элементарную процедуры задержки. ;================================================================================================ delay2: ldi r19,60 ;устанавливаем максимальное число delay: dec r19 ;R19-- крутим цикл пока бит Z регистра SREG =1 nop brne delay ;переход если z=1 длится 63.5 мкС это не дела надо таймер ret ;инструкция возврата из подпрограммы ;=============================================================================================== ;Процедура конфигурации таймера на прерывания по переполнения счетчика таймера ;Внимание при использовании этой процедуры старые настройки обнуляются, необходимо переписывать ;под свою задачу Conf_Time: ;BSET SREG,7 ;установка флага I SREG(глобальное разрешение прерываний) sei ;тоже самое ldi r18,1 sts TIMSK0,r18 ;sts не out т.к. Memory Mapped ; TOIE0=1 разрешение прерываний по переполнению счетчика ;sbi TIMSK0,TOIE0 ; нельзя использовать регистр memory mapped? ldi r18,1;(1<<CS00) ; режим работы без делителя out TCCR0B,r18 ;sbi TCCR0B,0 неработает ret
Будь другом, такой длинный код в следующий раз на pastebin или хотя бы в тегах ` (но лучше в пастбин или т.п.).
Зачем столько RETI? Они же всё равно не юзаются. На их месте лучше полезный код разместить.
CTRL + A SHIFT+M
так не переходит даже на RETI
Обсуждают сегодня