Часть 17: Ассемблерные макросы — пишем код быстрее

Макросы в ассемблере позволяют создавать свои инструкции, которые раскрываются в несколько команд. Это ускоряет написание кода и улучшает читаемость.

Макрос для установки нескольких пинов за один такт:

.macro SET_PINS port, mask
    SBI \port, \mask
.endm

.macro CLEAR_PINS port, mask
    CBI \port, \mask
.endm

.macro TOGGLE_PIN port, mask
    SBIC \port, \mask
    RJMP toggle_high\@
    SBI \port, \mask
    RJMP toggle_end\@
toggle_high\@:
    CBI \port, \mask
toggle_end\@:
.endm

; Использование:
SET_PINS DDRB, 5     ; Настраиваем пин 13 как выход
SET_PINS PORTB, 5    ; Включаем LED
DELAY_MS 100         ; Ждем 100 мс
CLEAR_PINS PORTB, 5  ; Выключаем LED

Макрос для задержки в микросекундах:

.macro DELAY_US value
    LDI R18, \value
    DEC R18
    BRNE .-2
.endm

; Использование:
DELAY_US 10          ; Задержка ~10 мкс при 16 МГц

Вам также может понравиться

About the Author: ардуинчиков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *