Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define __SFR_OFFSET 0
- #include "avr/io.h"
- #include <avr/portpins.h>
- #include <avr/interrupt.h>
- .text
- .global setup
- .global loop
- .global INT0_vect
- setup:
- ldi r16, hi8(RAMEND)
- sts SPH, r16
- ldi r16, lo8(RAMEND)
- sts SPL, r16
- clr r16
- out DDRD, r16
- ser r16
- out DDRB, r16
- ldi r16, 0b00000001
- out EIMSK, r16 // set interrupt mask as INT0
- ldi r16, 0b00000011
- sts EICRA, r16
- ldi r16, 0b00000000
- out PORTB, r16
- sei
- ldi r21, 0
- jmp loop
- loop:
- jmp main
- main:
- sei
- ldi r17, 0
- ldi r18, 0
- cpi r21, 0
- breq main
- jmp p1choose
- p1choose:
- ldi r16, 0b00000000
- out PORTB, r16
- // dec r21
- sbis PIND,5
- ldi r17, 1
- sbis PIND, 6
- ldi r17, 3
- sbis PIND, 7
- ldi r17, 7
- cpi r17, 0
- brne del
- jmp p1choose
- p2choose:
- sbis PIND,5
- ldi r18, 1
- sbis PIND, 6
- ldi r18, 3
- sbis PIND, 7
- ldi r18, 7
- cpi r18, 0
- brne decision
- jmp p2choose
- decision:
- mov r19, r18
- add r19, r17
- cpi r19, 2
- breq tietrans
- cpi r19, 6
- breq tietrans
- cpi r19, 14
- breq tietrans
- cpi r19, 4
- breq rp
- cpi r19, 8
- breq rs
- cpi r19, 10
- breq ps
- tie:
- ldi r16, 0b00000010
- out PORTB, r16
- cpi r21, 0
- breq tie
- jmp trans
- rp:
- cpi r17, 1
- breq p2trans
- jmp p1trans
- rs:
- cpi r17, 1
- breq p1trans
- jmp p2trans
- ps:
- cpi r17, 3
- breq p2trans
- jmp p1trans
- p1wins:
- ldi r16, 0b00000001
- out PORTB, r16
- cpi r21, 0
- breq p1wins
- jmp trans
- p2wins:
- ldi r16, 0b00000100
- out PORTB, r16
- cpi r21, 0
- breq p2wins
- jmp trans
- del:
- ldi r18, 31
- ldi r19, 113
- ldi r20, 31
- rjmp looptrans
- looptrans:
- dec r20
- brne looptrans
- dec r19
- brne looptrans
- dec r18
- brne looptrans
- rjmp p2choose
- INT0_vect:
- ldi r21, 1
- reti
- trans:
- ldi r21, 0
- jmp main
- p1trans:
- push 1
- jmp p1wins
- p2trans:
- push 2
- jmp p2wins
- tietrans:
- push 0
- jmp tie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement