-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCarLock.asm
274 lines (268 loc) · 5.97 KB
/
CarLock.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
_lock:
;CarLock.c,26 :: void lock()
;CarLock.c,28 :: x = 0;
CLRF CarLock_x+0
CLRF CarLock_x+1
;CarLock.c,29 :: PORTB.B5 = 1;
BSF PORTB+0, 5
;CarLock.c,30 :: locked = 1;
MOVLW 1
MOVWF CarLock_locked+0
MOVLW 0
MOVWF CarLock_locked+1
;CarLock.c,32 :: PORTB.B6 = 0;
BCF PORTB+0, 6
;CarLock.c,33 :: unlocked = 0;
CLRF CarLock_unlocked+0
CLRF CarLock_unlocked+1
;CarLock.c,35 :: enabled = 0;
CLRF _enabled+0
CLRF _enabled+1
;CarLock.c,36 :: current = 1;
MOVLW 1
MOVWF _current+0
MOVLW 0
MOVWF _current+1
;CarLock.c,38 :: }
L_end_lock:
RETURN
; end of _lock
_unlock:
;CarLock.c,40 :: void unlock()
;CarLock.c,42 :: x = 0;
CLRF CarLock_x+0
CLRF CarLock_x+1
;CarLock.c,43 :: PORTB.B6 = 1;
BSF PORTB+0, 6
;CarLock.c,44 :: unlocked = 1;
MOVLW 1
MOVWF CarLock_unlocked+0
MOVLW 0
MOVWF CarLock_unlocked+1
;CarLock.c,46 :: PORTB.B5 = 0;
BCF PORTB+0, 5
;CarLock.c,47 :: locked = 0;
CLRF CarLock_locked+0
CLRF CarLock_locked+1
;CarLock.c,49 :: enabled = 0;
CLRF _enabled+0
CLRF _enabled+1
;CarLock.c,50 :: current = 2;
MOVLW 2
MOVWF _current+0
MOVLW 0
MOVWF _current+1
;CarLock.c,52 :: }
L_end_unlock:
RETURN
; end of _unlock
_main:
;CarLock.c,54 :: void main()
;CarLock.c,56 :: TRISB = 0b00000110;
MOVLW 6
MOVWF TRISB+0
;CarLock.c,58 :: do
L_main0:
;CarLock.c,60 :: if (PORTB.B1 == 1 && PORTB.B2 == 1 && enabled == 1 && current != 1) // Check Lock
BTFSS PORTB+0, 1
GOTO L_main5
BTFSS PORTB+0, 2
GOTO L_main5
MOVLW 0
XORWF _enabled+1, 0
BTFSS STATUS+0, 2
GOTO L__main29
MOVLW 1
XORWF _enabled+0, 0
L__main29:
BTFSS STATUS+0, 2
GOTO L_main5
MOVLW 0
XORWF _current+1, 0
BTFSS STATUS+0, 2
GOTO L__main30
MOVLW 1
XORWF _current+0, 0
L__main30:
BTFSC STATUS+0, 2
GOTO L_main5
L__main25:
;CarLock.c,62 :: time++;
INCF CarLock_time+0, 1
BTFSC STATUS+0, 2
INCF CarLock_time+1, 1
;CarLock.c,64 :: if (time >= inTimeCheck)
MOVLW 128
XORWF CarLock_time+1, 0
MOVWF R0+0
MOVLW 128
XORLW 0
SUBWF R0+0, 0
BTFSS STATUS+0, 2
GOTO L__main31
MOVLW 32
SUBWF CarLock_time+0, 0
L__main31:
BTFSS STATUS+0, 0
GOTO L_main6
;CarLock.c,66 :: time = 0;
CLRF CarLock_time+0
CLRF CarLock_time+1
;CarLock.c,67 :: lock();
CALL _lock+0
;CarLock.c,68 :: }
L_main6:
;CarLock.c,69 :: }
GOTO L_main7
L_main5:
;CarLock.c,70 :: else if (PORTB.B1 == 0 && PORTB.B2 == 0 && enabled == 1 && current != 2) // Check Unlock
BTFSC PORTB+0, 1
GOTO L_main10
BTFSC PORTB+0, 2
GOTO L_main10
MOVLW 0
XORWF _enabled+1, 0
BTFSS STATUS+0, 2
GOTO L__main32
MOVLW 1
XORWF _enabled+0, 0
L__main32:
BTFSS STATUS+0, 2
GOTO L_main10
MOVLW 0
XORWF _current+1, 0
BTFSS STATUS+0, 2
GOTO L__main33
MOVLW 2
XORWF _current+0, 0
L__main33:
BTFSC STATUS+0, 2
GOTO L_main10
L__main24:
;CarLock.c,72 :: time++;
INCF CarLock_time+0, 1
BTFSC STATUS+0, 2
INCF CarLock_time+1, 1
;CarLock.c,74 :: if (time >= inTimeCheck)
MOVLW 128
XORWF CarLock_time+1, 0
MOVWF R0+0
MOVLW 128
XORLW 0
SUBWF R0+0, 0
BTFSS STATUS+0, 2
GOTO L__main34
MOVLW 32
SUBWF CarLock_time+0, 0
L__main34:
BTFSS STATUS+0, 0
GOTO L_main11
;CarLock.c,76 :: time = 0;
CLRF CarLock_time+0
CLRF CarLock_time+1
;CarLock.c,77 :: unlock();
CALL _unlock+0
;CarLock.c,78 :: }
L_main11:
;CarLock.c,79 :: }
GOTO L_main12
L_main10:
;CarLock.c,80 :: else if (locked == 1 || unlocked == 1)
MOVLW 0
XORWF CarLock_locked+1, 0
BTFSS STATUS+0, 2
GOTO L__main35
MOVLW 1
XORWF CarLock_locked+0, 0
L__main35:
BTFSC STATUS+0, 2
GOTO L__main23
MOVLW 0
XORWF CarLock_unlocked+1, 0
BTFSS STATUS+0, 2
GOTO L__main36
MOVLW 1
XORWF CarLock_unlocked+0, 0
L__main36:
BTFSC STATUS+0, 2
GOTO L__main23
GOTO L_main15
L__main23:
;CarLock.c,82 :: x++;
INCF CarLock_x+0, 1
BTFSC STATUS+0, 2
INCF CarLock_x+1, 1
;CarLock.c,84 :: if (x >= outTimeCheck)
MOVLW 128
XORWF CarLock_x+1, 0
MOVWF R0+0
MOVLW 128
XORLW 0
SUBWF R0+0, 0
BTFSS STATUS+0, 2
GOTO L__main37
MOVLW 185
SUBWF CarLock_x+0, 0
L__main37:
BTFSS STATUS+0, 0
GOTO L_main16
;CarLock.c,86 :: locked = 0;
CLRF CarLock_locked+0
CLRF CarLock_locked+1
;CarLock.c,87 :: unlocked = 0;
CLRF CarLock_unlocked+0
CLRF CarLock_unlocked+1
;CarLock.c,88 :: PORTB = 0x00;
CLRF PORTB+0
;CarLock.c,89 :: x = 0;
CLRF CarLock_x+0
CLRF CarLock_x+1
;CarLock.c,90 :: }
L_main16:
;CarLock.c,91 :: }
GOTO L_main17
L_main15:
;CarLock.c,92 :: else if (PORTB.B1 == 0 && PORTB.B2 == 1)
BTFSC PORTB+0, 1
GOTO L_main20
BTFSS PORTB+0, 2
GOTO L_main20
L__main22:
;CarLock.c,94 :: pressed = 0;
CLRF _pressed+0
CLRF _pressed+1
;CarLock.c,95 :: current = 0;
CLRF _current+0
CLRF _current+1
;CarLock.c,96 :: time = 0;
CLRF CarLock_time+0
CLRF CarLock_time+1
;CarLock.c,97 :: PORTB = 0x00;
CLRF PORTB+0
;CarLock.c,98 :: }
L_main20:
L_main17:
L_main12:
L_main7:
;CarLock.c,105 :: Delay_ms(interval);
MOVLW 26
MOVWF R12+0
MOVLW 248
MOVWF R13+0
L_main21:
DECFSZ R13+0, 1
GOTO L_main21
DECFSZ R12+0, 1
GOTO L_main21
NOP
;CarLock.c,106 :: enabled = 1;
MOVLW 1
MOVWF _enabled+0
MOVLW 0
MOVWF _enabled+1
;CarLock.c,107 :: } while (1);
GOTO L_main0
;CarLock.c,108 :: }
L_end_main:
GOTO $+0
; end of _main