.nolist
.include "tn2313def.inc"
.list

.def Temp1 = r16
.def Temp2 = r17
.def Temp3 = r18

.equ LedPortOut = PORTB
.equ LedPortDdr = DDRB
.equ LedPortBit = 0


.cseg
  .org 0

Reset:
    ; инициализируем указатель стека
    ldi Temp1, low(RAMEND)
    out SPL, Temp1

    ; настраиваем watchdog таймер (таймаут 1 сек.)
    ldi Temp1,(1<<WDCE)|(1<<WDE)
    out WDTCSR,Temp1
    ldi Temp1,(1<<WDE)|(1<<WDP2)|(1<<WDP1)
    out WDTCSR,Temp1

    ; настраиваем нужный пин на выход
    sbi LedPortDdr, LedPortBit

LedLoop:
    sbi LedPortOut, LedPortBit  ; Включаем сид 1
    rcall Delay                 ; вызываем подпрограмму задержки
    cbi LedPortOut, LedPortBit  ; Выключаем сид 1
    rcall Delay                 ; вызываем подпрограмму задержки
    rjmp LedLoop                ; Возврат к метке LedLoop


; подпрограмма задержки (примерно 0,5 сек. при 4MHz)
Delay:
    ldi Temp1, 0
    ldi Temp2, 0
    ldi Temp3, 8
  d1:
    wdr ; сброс watchdog таймера
    dec Temp1
    brne d1
    dec Temp2
    brne d1
    dec Temp3
    brne d1
    ret

