Спойлер
.include "tn13Adef.inc".def Temp =R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.cseg
ldi Temp,RamEnd ;инициализация стека
out SPL,Temp
ldi Temp,0b111 ;светодиоды подключены на первых 3 портах, поэтому по минимуму лишних букв
out DDRB,Temp
Begin: ldi Temp,0b001
rcall Delay
ldi Temp,0b011
rcall Delay1
ldi Temp,0b100
rcall Delay
ldi Temp,0b000
rcall Delay2
ldi Temp,0b100
rcall Delay2
ldi Temp,0b000
rcall Delay2
ldi Temp,0b100
rcall Delay2
ldi Temp,0b000
rcall Delay2
ldi Temp,0b100
rcall Delay2
ldi Temp,0b010
rcall Delay1
rjmp Begin ;поехали по новой!
;****************************************************
;Задержки (Delay - между Красным и Красным с Желтым, Delay1 - между Красный+Желтый и Зеленым, а также Желтым и Красным, Delay2 - при мигании зеленого)
Delay: out PortB,Temp
ldi Temp1,0
ldi Temp2,0
ldi Temp3,20
Loop: dec Temp1
brne Loop
dec Temp2
brne Loop
dec Temp3
brne Loop
ret
Delay1: out PortB,Temp
ldi Temp1,0
ldi Temp2,0
ldi Temp3,6
Loop1: dec Temp1
brne Loop1
dec Temp2
brne Loop1
dec Temp3
brne Loop1
ret
Delay2: out PortB,Temp
ldi Temp1,0
ldi Temp2,0
ldi Temp3,2
Loop2: dec Temp1
brne Loop2
dec Temp2
brne Loop2
dec Temp3
brne Loop2
ret
Переходить сразу на прерывания, матрицы, произвольно задаваемые массивы как в учебке, просьба не предлагать, я сперва из этого метода хочу все соки выжать.


