Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Assembler program for Mega32 (Atmel), play music with 8 switchs(btn) "Happy birthday" song
- ;*********** INITIALIZING**********
- ; The frequency is 3.6864 MHz.
- .include "M32DEF.INC"
- LDI R16,HIGH(RAMEND) ;Initialize Stack Pointer
- OUT SPH,R16
- LDI R16,LOW(RAMEND)
- OUT SPL,R16
- SER R16
- OUT DDRB,R16 ;The PB pins are outputs
- LDI R16,0x00
- OUT DDRA,R16 ;The PA pins are inputs
- NOP ; Synchronyzer delay
- ;********** PROGRAM LOOP **********
- HERE:
- SBIS PINA,0
- LDI R18,239
- SBIS PINA,1
- LDI R18,213
- SBIS PINA,2
- LDI R18,190
- SBIS PINA,3
- LDI R18,179
- SBIS PINA,4
- LDI R18,160
- SBIS PINA,5
- LDI R18,142
- SBIS PINA,6
- LDI R18,135
- SBIS PINA,7
- LDI R18,120
- // Read whole PINA
- IN R20, PINA
- // If PINA == 255 then jump.
- CPI R20, 0xFF
- BREQ HERE
- // Play the sound on PORTB.
- COM R16
- OUT PORTB, R16
- CALL DELAY
- RJMP HERE
- ;********* DELAY (R18*4us) ********
- DELAY:
- LDI R17,4
- AGAIN:
- DEC R17
- BRNE AGAIN
- DEC R18
- BRNE DELAY
- RET
- ;**********************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement