international: OHS_SSCI_STICK.asm

File OHS_SSCI_STICK.asm, 3.3 KB (added by Shinichi Ohki, 12 years ago)
Line 
1.org 0x0000
2 rjmp RESET
3 reti ; INT0_ISR
4 reti ; PCINT0_ISR
5 reti ; TIM1_COMPA_ISR
6 reti ; TIM1_OVF_ISR
7 reti ; TIM0_OVF_ISR
8 reti ; EE_RDY_ISR
9 reti ; ANA_COMP_ISR
10 reti ; ADC_ISR
11 reti ; TIM1_COMPB_ISR
12 reti ; TIM0_COMPA_ISR
13 reti ; TIM0_COMPB_ISR
14 reti ; WDT_ISR
15 reti ; USI_START_ISR
16 reti ; USI_OVF_ISR
17
18RESET:
19 ldi R16,0x00 ; R16(LED_MODE) = 0
20 ldi R17,0x00 ; R17(LED_COUNTER) = 0
21 ldi R18,0x00 ; R18(MODE_TIMER) = 0
22 ; LED_INIT
23 ldi R20,0x19 ; R20 <- **011001B
24 out 0x17,R20 ; DDRB <- R20
25 MAIN_LOOP:
26 inc R17
27 inc R18 ; R18(MODE_TIMER)++
28 cpi R18,0x50 ; TimeLimitChekc
29 brne LED_CONTROL
30 ldi R18,0x00 ; R18(MODE_TIMER) CLEAR
31 inc R16 ; R16(LED_MODE)++
32 andi R16,0x03
33 ldi R17,0x00
34 LED_CONTROL:
35 cpi R16,0x01
36 brcs LED_MODE0
37 breq LED_MODE1
38 cpi R16,0x03
39 brne LED_MODE2
40 rjmp LED_MODE3
41; -------------------------
42LED_MODE0:
43 andi R17,0x03
44 breq LED_MODE0L
45 cpi R17,0x02
46 breq LED_MODE0R
47 LED_MODE0C:
48 ldi R20,0xf7 ; R20 <- 11110111B
49 out 0x18,R20 ; PORTB <- R20
50 rjmp LED_MODE0_WAIT
51 LED_MODE0L:
52 ldi R20,0xfe ; R20 <- 11111110B
53 out 0x18,R20 ; PORTB <- R20
54 rjmp LED_MODE0_WAIT
55 LED_MODE0R:
56 ldi R20,0xef ; R20 <- 11101111B
57 out 0x18,R20 ; PORTB <- R20
58 LED_MODE0_WAIT:
59 rjmp LED_WAIT
60; -------------------------
61LED_MODE1:
62 mov R20,R17
63 andi R20,0x04
64 breq LED_MODE1LR
65 LED_MODE1C:
66 ldi R20,0xf7 ; R20 <- 11110111B
67 out 0x18,R20 ; PORTB <- R20
68 rjmp LED_MODE1_WAIT
69 LED_MODE1LR:
70 ldi R20,0xee ; R20 <- 11101110B
71 out 0x18,R20 ; PORTB <- R20
72 LED_MODE1_WAIT:
73 rjmp LED_WAIT
74; -------------------------
75LED_MODE2:
76 cpi R17,0x01
77 breq LED_MODE2_ON
78 cpi R17,0x03
79 breq LED_MODE2_ON
80 andi R17,0x07
81 LED_MODE2_OFF:
82 ldi R20,0xff ; R20 <- 11111111B
83 out 0x18,R20 ; PORTB <- R20
84 rjmp LED_MODE2_WAIT
85 LED_MODE2_ON:
86 ldi R20,0xe6 ; R20 <- 11100110B
87 out 0x18,R20 ; PORTB <- R20
88 LED_MODE2_WAIT:
89 rjmp LED_WAIT
90; -------------------------
91LED_MODE3:
92 cpi R17,0x0e
93 brne LED_MODE3_MAIN
94 ldi R17,0x00
95 LED_MODE3_MAIN:
96 cpi R17,0x01
97 brcs LED_MODE30
98 breq LED_MODE31
99 cpi R17,0x03
100 brcs LED_MODE32
101 breq LED_MODE33
102 cpi R17,0x05
103 brcs LED_MODE34
104 breq LED_MODE35
105 cpi R17,0x07
106 brcs LED_MODE35
107 breq LED_MODE34
108 cpi R17,0x09
109 brcs LED_MODE33
110 breq LED_MODE32
111 cpi R17,0x0b
112 brcs LED_MODE31
113 breq LED_MODE30
114 rjmp LED_MODE35
115 LED_MODE30:
116 ldi R20,0xfe ; R20 <- 11111110B
117 out 0x18,R20 ; PORTB <- R20
118 rjmp LED_MODE3_WAIT
119 LED_MODE31:
120 ldi R20,0xf6 ; R20 <- 11110110B
121 out 0x18,R20 ; PORTB <- R20
122 rjmp LED_MODE3_WAIT
123 LED_MODE32:
124 ldi R20,0xe6 ; R20 <- 11100110B
125 out 0x18,R20 ; PORTB <- R20
126 rjmp LED_MODE3_WAIT
127 LED_MODE33:
128 ldi R20,0xe7 ; R20 <- 11100111B
129 out 0x18,R20 ; PORTB <- R20
130 rjmp LED_MODE3_WAIT
131 LED_MODE34:
132 ldi R20,0xef ; R20 <- 11101111B
133 out 0x18,R20 ; PORTB <- R20
134 rjmp LED_MODE3_WAIT
135 LED_MODE35:
136 ldi R20,0xff ; R20 <- 11111111B
137 out 0x18,R20 ; PORTB <- R20
138 LED_MODE3_WAIT:
139 ldi R20,0x04 ; WAIT_TIME
140 rjmp LED_WAIT
141; -------------------------
142LED_WAIT:
143 ldi R20,0x01 ; WAIT_TIME
144 LED_WAIT0:
145 ldi R21,0x7f ; R21,0xff
146 LED_WAIT1:
147 ldi R22,0xff ; R22,0xff
148 LED_WAIT2:
149 nop
150 dec R22 ; R22--
151 brne LED_WAIT2 ; R22 != 0 LED_WAIT3
152 dec R21 ; R21--
153 brne LED_WAIT1 ; R21 != 0 LED_WAIT2
154 dec R20 ; R20--
155 brne LED_WAIT0 ; R20 != 0 LED_WAIT1
156 rjmp MAIN_LOOP