Создание задержек на ассемблере, онлайн калькулятор

Тема в разделе "AVR", создана пользователем koteika, 30 мар 2016.

  1. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    Наткнулся на хороший калькулятор для расчета задержек на ассемблере для мк авр. Проверил - работает
    :);)
    upload_2016-3-30_18-19-6.png

    Ссылка - https://adc.anteh.ru/Default.aspx

    Генерирует соответсвующий код:

    Код:
    ; == Использовать call или rcall определяем сами
            ; Задержка 1.99916666666667 мс на 1.2MHz
            ldi        r16, 227
            ldi        r17, 251
            ldi        r18, 250
            call Delay2
    ; ===================
    
    ; ===================
    ; Подпрограмма задержки. Количество вложенных циклов =2
    ; Используемые регистры:  r16, r17, r18, r19, r20
    ; Если нужно, то push pop и сохранение SREG добавляем самостоятельно
    Delay2:
            mov        r19, r16
            mov        r20, r17
      da1_2:
            inc        r18
            breq    dexit_2
            mov        r17, r20
      da2_2:
            inc        r17
            breq    da1_2
            mov        r16, r19
      da3_2:
            inc        r16
            breq    da2_2
            rjmp    da3_2
      dexit_2:        ret
    ; ================END

    Ну и пример мигания светодиодами:
    Код:
        
            sbi PORTB, 0
            sbi PORTB, 1
            ldi        r16, 56
            ldi        r17, 211
            ldi        r18, 187
            call Delay2
            cbi PORTB, 0
            cbi PORTB, 1
            ldi        r16, 56
            ldi        r17, 211
            ldi        r18, 187
            call Delay2
    Данные переменные можно записать в озу например, что бы не мешались в коде:
    Код:
       
            ldi        r16, 56
            ldi        r17, 211
            ldi        r18, 187
    nomugop нравится это.
     
    : avr, asm, ассемблер

Поделиться этой страницей