Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LDI R24, 0x20
- LDI R25, 0x30
- LDI R16, 0xFF ;255 used for logic
- LDI R17, 0 ;0 used for logic
- LDI R18, 0 ;Counting Register
- LDI R19, 0x01 ;Increment number
- LDI R20, 0x10 ;Overflow Value
- OUT DDRE, R24
- OUT PORTE, R25
- OUT DDRA, R17 ;PA in input mode
- OUT PORTA, R16 ;enable pull-up for PA
- OUT DDRD, R16 ; PD in output mode
- OUT PORTD, R16 ; Turn off all LEDs
- Main:
- Call Output
- UpdateSound:
- sbis pina, 5
- ldi R22, 21
- sbis pina, 5
- ldi R23, 199
- sbis pina, 6
- ldi R22, 11
- sbis pina, 6
- ldi R23, 99
- sbis pina, 7
- ldi R22, 42
- sbis pina, 7
- ldi R23, 142
- CHECK_INCREMENT:
- SBIC PINA, 4
- RJMP CHECK_DECREMENT
- CALL Increment
- LatchI:
- CALL LDelay
- SBIC PINA, 4
- RJMP CHECK_DECREMENT
- RJMP LatchI
- CHECK_DECREMENT:
- SBIC PINA, 3
- RJMP StopWatch
- Decrement:
- cp R18,R17
- BREQ LOOP_TO_15;
- SUB R18,R19
- LatchD:
- CALL LDelay
- SBIC PINA, 3
- RJMP StopWatch
- RJMP LatchD
- StopWatch:
- SBIC PINE, 6
- RJMP Main
- Loop:
- CALL Timer
- CALL Increment
- CALL Output
- SBIC PINE, 6
- RJMP Main
- RJMP Loop
- RJMP Main
- LOOP_TO_0:
- LDI R18, 0
- Call Sound
- done:RJMP Stopwatch
- LOOP_TO_15:
- LDI R18, 15
- Call Sound
- RJMP LatchD
- Sound:
- sbi ddre, 4
- ldi r25, 80
- soundloop:
- sbi porte, 4
- call sound1
- cbi porte, 4
- call sound1
- dec r25
- brne soundloop
- rjmp done
- sound1: mov R26, R22
- mov R27, R23
- L1: dec r27
- brne L1
- dec r26
- brne L1
- ret
- Increment:
- ADD R18, R19
- cp R18,R20
- BREQ LOOP_TO_0;
- RET
- Timer:
- LDI R25,255
- L_outer1:
- LDI R26, 255
- L_middle1:
- LDI R27, 25
- L_inner1:
- DEC R27
- BRNE L_inner1
- DEC R26
- BRNE L_middle1
- DEC R25
- BRNE L_outer1
- RET
- LDelay:
- LDI R25, 25
- L_outer:
- LDI R26, 25
- L_middle:
- LDI R27, 25
- L_inner:
- DEC R27
- BRNE L_inner
- DEC R26
- BRNE L_middle
- DEC R25
- BRNE L_outer
- RET
- Output:
- LDI R21, 0
- ADD R21, R18
- LDI R30, 0
- LDI R28, 4 ;Loop 4 times
- Loop1:
- CLC
- ROR R21
- ROL R30
- DEC R28
- BRNE Loop1
- COM R30 ;Output needs to be complemented, output is active low
- OUT PORTD, R30 ;Outputs the answer to the LEDs
- RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement