Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; Task1.asm
- ;
- ; Created: 21.09.2017 16:02:18
- ; Author : yudni
- ;
- ; Replace with your application code
- .org 0
- rjmp start //есть директивы прерываний....короче, просто так код начать писать нельзя
- start: //LED2 мигает
- ldi r16 Low(RAMEND) //инициализация стека - этот блок
- out SPL, r16 //stach pointer low
- ldi r16 High(RAMEND)
- out SPH, r16
- in r16, ddrd //загружаем в регистр r16 ddrd
- ori r16, (1<<4) //записываем 1
- out ddrd, r16 //r16 в ddrd записываем; нельзя просто записать в ddrd, потому что часть операций работает не на всех адресах памяти;
- loop:
- in r16, portd //portd - светодиод?
- ori r16, (1<<4)
- out portd, r16
- rcall delay
- in r16, portd //portd - светодиод?
- andi r16, (1<<4)
- out portd, r16
- rcall delay // вызов delay
- rjmp loop
- delay:
- ldi r16, 255 //ldi - загрузить константу
- ldi r17, 255
- ldi r18, 255
- cycle:
- subi r16, 1 //вычитаем, что-то про флаг переноса
- sbci r17, 0
- sbci r18, 0
- brcc cycle // если флаг переноса очищен, то переходим на cycle, иначе - ret
- ret
- rjmp start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement