Advertisement
Vadorequest

Happy birthday - Assembler mega32

Nov 11th, 2013
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. ;Assembler program for Mega32 (Atmel), play music with 8 switchs(btn) "Happy birthday" song
  2. ;*********** INITIALIZING**********
  3. ; The frequency is 3.6864 MHz.
  4. .include "M32DEF.INC"
  5. LDI R16,HIGH(RAMEND) ;Initialize Stack Pointer
  6. OUT SPH,R16
  7. LDI R16,LOW(RAMEND)
  8. OUT SPL,R16
  9.  
  10. SER R16
  11. OUT DDRB,R16 ;The PB pins are outputs
  12.  
  13. LDI R16,0x00
  14. OUT DDRA,R16 ;The PA pins are inputs
  15.  
  16. NOP ; Synchronyzer delay
  17.  
  18. ;********** PROGRAM LOOP **********
  19. HERE:
  20.  
  21. SBIS PINA,0
  22. LDI R18,239
  23.  
  24. SBIS PINA,1
  25. LDI R18,213
  26.  
  27. SBIS PINA,2
  28. LDI R18,190
  29.  
  30. SBIS PINA,3
  31. LDI R18,179
  32.  
  33. SBIS PINA,4
  34. LDI R18,160
  35.  
  36. SBIS PINA,5
  37. LDI R18,142
  38.  
  39. SBIS PINA,6
  40. LDI R18,135
  41.  
  42. SBIS PINA,7
  43. LDI R18,120
  44.  
  45. // Read whole PINA
  46. IN R20, PINA
  47. // If PINA == 255 then jump.
  48. CPI R20, 0xFF
  49. BREQ HERE
  50.  
  51. // Play the sound on PORTB.
  52. COM R16
  53. OUT PORTB, R16
  54.  
  55. CALL DELAY
  56.  
  57.  
  58. RJMP HERE
  59.  
  60. ;********* DELAY (R18*4us) ********
  61. DELAY:
  62. LDI R17,4
  63. AGAIN:
  64. DEC R17
  65. BRNE AGAIN
  66. DEC R18
  67. BRNE DELAY
  68. RET
  69. ;**********************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement