Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. ;
  2. ; Task1.asm
  3. ;
  4. ; Created: 21.09.2017 16:02:18
  5. ; Author : yudni
  6. ;
  7.  
  8.  
  9. ; Replace with your application code
  10. .org 0
  11. rjmp start //есть директивы прерываний....короче, просто так код начать писать нельзя
  12.  
  13. start: //LED2 мигает
  14. ldi r16 Low(RAMEND) //инициализация стека - этот блок
  15. out SPL, r16 //stach pointer low
  16. ldi r16 High(RAMEND)
  17. out SPH, r16
  18.  
  19. in r16, ddrd //загружаем в регистр r16 ddrd
  20. ori r16, (1<<4) //записываем 1
  21. out ddrd, r16 //r16 в ddrd записываем; нельзя просто записать в ddrd, потому что часть операций работает не на всех адресах памяти;
  22.  
  23. loop:
  24. in r16, portd //portd - светодиод?
  25. ori r16, (1<<4)
  26. out portd, r16
  27.  
  28. rcall delay
  29.  
  30. in r16, portd //portd - светодиод?
  31. andi r16, (1<<4)
  32. out portd, r16
  33.  
  34. rcall delay // вызов delay
  35. rjmp loop
  36.  
  37. delay:
  38. ldi r16, 255 //ldi - загрузить константу
  39. ldi r17, 255
  40. ldi r18, 255
  41.  
  42. cycle:
  43. subi r16, 1 //вычитаем, что-то про флаг переноса
  44. sbci r17, 0
  45. sbci r18, 0
  46. brcc cycle // если флаг переноса очищен, то переходим на cycle, иначе - ret
  47. ret
  48.  
  49. rjmp start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement