Advertisement
Guest User

Untitled

a guest
Dec 7th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define __SFR_OFFSET 0
  2. #include "avr/io.h"
  3. #include <avr/portpins.h>
  4. #include <avr/interrupt.h>
  5.  
  6. .text
  7. .global setup
  8. .global loop
  9. .global INT0_vect
  10. setup:
  11.   ldi r16, hi8(RAMEND)        
  12.   sts SPH, r16        
  13.   ldi r16, lo8(RAMEND)        
  14.   sts SPL, r16  
  15.   clr r16
  16.   out DDRD, r16
  17.   ser r16
  18.   out DDRB, r16
  19.   ldi r16, 0b00000001
  20.   out EIMSK, r16  // set interrupt mask as INT0
  21.   ldi r16, 0b00000011
  22.   sts EICRA, r16
  23.   ldi r16, 0b00000000
  24.   out PORTB, r16
  25.   sei  
  26.   ldi r21, 0
  27.   jmp loop
  28. loop:
  29.   jmp main
  30. main:
  31.   sei
  32.   ldi r17, 0
  33.   ldi r18, 0
  34.   cpi r21, 0
  35.   breq main
  36.   jmp p1choose  
  37. p1choose:
  38.   ldi r16, 0b00000000
  39.   out PORTB, r16
  40. //  dec r21    
  41.   sbis PIND,5      
  42.   ldi r17, 1
  43.   sbis PIND, 6
  44.   ldi r17, 3
  45.   sbis PIND, 7
  46.   ldi r17, 7
  47.   cpi r17, 0
  48.   brne del      
  49.   jmp p1choose
  50. p2choose:  
  51.   sbis PIND,5      
  52.   ldi r18, 1
  53.   sbis PIND, 6
  54.   ldi r18, 3
  55.   sbis PIND, 7
  56.   ldi r18, 7
  57.   cpi r18, 0
  58.   brne decision
  59.   jmp p2choose
  60. decision:
  61.   mov r19, r18
  62.   add r19, r17
  63.   cpi r19, 2
  64.   breq tietrans
  65.   cpi r19, 6
  66.   breq tietrans
  67.   cpi r19, 14
  68.   breq tietrans
  69.   cpi r19, 4
  70.   breq rp
  71.   cpi r19, 8
  72.   breq rs
  73.   cpi r19, 10
  74.   breq ps
  75. tie:
  76.   ldi r16, 0b00000010
  77.   out PORTB, r16
  78.   cpi r21, 0
  79.   breq tie
  80.   jmp trans
  81. rp:
  82.   cpi r17, 1
  83.   breq p2trans
  84.   jmp p1trans
  85. rs:
  86.   cpi r17, 1
  87.   breq p1trans
  88.   jmp p2trans
  89. ps:
  90.   cpi r17, 3
  91.   breq p2trans
  92.   jmp p1trans
  93. p1wins:
  94.   ldi r16, 0b00000001
  95.   out PORTB, r16
  96.   cpi r21, 0
  97.   breq p1wins
  98.   jmp trans
  99. p2wins:
  100.   ldi r16, 0b00000100
  101.   out PORTB, r16
  102.   cpi r21, 0
  103.   breq p2wins
  104.   jmp trans
  105. del:
  106.   ldi  r18, 31
  107.   ldi  r19, 113
  108.   ldi  r20, 31
  109.   rjmp looptrans
  110. looptrans:
  111.   dec r20
  112.   brne looptrans
  113.   dec r19
  114.   brne looptrans
  115.   dec r18
  116.   brne looptrans
  117.   rjmp p2choose
  118. INT0_vect:
  119.   ldi r21, 1
  120.   reti
  121. trans:
  122.   ldi r21, 0
  123.   jmp main
  124. p1trans:
  125.   push 1
  126.   jmp p1wins
  127. p2trans:
  128.   push 2
  129.   jmp p2wins
  130. tietrans:
  131.   push 0
  132.   jmp tie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement