SHOW:
|
|
- or go back to the newest paste.
1 | ; | |
2 | ; book scanner za kiber pipu 15.11.12. | |
3 | ; | |
4 | ; ____ ____ | |
5 | ; MCLR | \__/ | B7 PGD | |
6 | ; LM in A0 | | B6 PGC | |
7 | ; tranz out A1 | | B5 out cw/ccw | |
8 | ; out A2 | | B4 out -Full Power | |
9 | ; test key in A3 | | B3 out EXP0 | |
10 | ; in A4 | | B2 in KEY | |
11 | ; mot clk out A5 | 2525 | B1 in HALL | |
12 | ; Vss | | B0 LM in | |
13 | ; 16 MHz Osc | | Vdd | |
14 | ; 16 MHz Osc | | Vss | |
15 | ; LED out C0 | | C7 RXD | |
16 | ; EXP2 out C1 | | C6 TXD | |
17 | ; in C2 | | C5 out EXP1 | |
18 | ; in C3 |____________| C4 out | |
19 | ; | |
20 | ||
21 | LIST P=18F2525 | |
22 | #include <P18F2525.INC> | |
23 | ||
24 | #define motclock lata,5 | |
25 | #define cwccw latb,5 | |
26 | #define motpower latb,4 | |
27 | #define led lata,2 | |
28 | #define click0 latc,5 ; (uostravanje) | |
29 | #define click1 latc,5 ; (camera 1) | |
30 | #define click2 latc,1 ; (camera 2) | |
31 | #define hilite2 latc,0 | |
32 | #define key porta,3 | |
33 | #define extkey portb,2 | |
34 | #define hall portb,1 | |
35 | ||
36 | config osc = HS | |
37 | config fcmen = off | |
38 | config ieso = off | |
39 | config pwrt = on | |
40 | config borv = 1 | |
41 | config wdt = off | |
42 | config mclre = on | |
43 | config lpt1osc = off | |
44 | config pbaden = off | |
45 | config stvren = on | |
46 | config lvp = off | |
47 | config xinst = off | |
48 | config debug = off | |
49 | config cp0 = off | |
50 | config cp1 = off | |
51 | config cp2 = off | |
52 | config cpb = off | |
53 | config cpd = off | |
54 | config wrt0 = on | |
55 | config wrt1 = on | |
56 | config wrt2 = on | |
57 | config wrtb = on | |
58 | config wrtc = on | |
59 | config wrtd = off | |
60 | config ebtr0 = off | |
61 | config ebtr1 = off | |
62 | config ebtr2 = off | |
63 | config ebtrb = off | |
64 | ||
65 | CBLOCK 0 | |
66 | inner | |
67 | outer | |
68 | keyrotor | |
69 | stepcount | |
70 | liftcount | |
71 | speedbyte | |
72 | ||
73 | ENDC | |
74 | ||
75 | ;____________________________________________________MACROS | |
76 | ||
77 | gore macro | |
78 | bcf cwccw | |
79 | endm | |
80 | ||
81 | dole macro | |
82 | bsf cwccw | |
83 | endm | |
84 | ||
85 | weak macro | |
86 | bsf motpower ; low power | |
87 | endm | |
88 | ||
89 | strong macro | |
90 | bcf motpower ; high power | |
91 | endm | |
92 | ||
93 | ifhallon macro | |
94 | btfss hall | |
95 | endm | |
96 | ||
97 | ifhalloff macro | |
98 | btfsc hall | |
99 | endm | |
100 | ||
101 | defspeed macro | |
102 | movlw .56 | |
103 | movwf speedbyte | |
104 | endm | |
105 | ||
106 | speed macro speedvalue | |
107 | movlw speedvalue | |
108 | movwf speedbyte | |
109 | endm | |
110 | ||
111 | ifz macro | |
112 | btfsc status,z | |
113 | endm | |
114 | ||
115 | ifnz macro | |
116 | btfss status,z | |
117 | endm | |
118 | ||
119 | ifc macro | |
120 | btfsc status,c | |
121 | endm | |
122 | ||
123 | ifnc macro | |
124 | btfss status,c | |
125 | endm | |
126 | ||
127 | ;********************************************************************************* | |
128 | ;********************************************************************************* | |
129 | ;**************** ***************** | |
130 | ;**************** M A I N ***************** | |
131 | ;**************** ***************** | |
132 | ;********************************************************************************* | |
133 | ;********************************************************************************* | |
134 | ||
135 | ||
136 | org 0 | |
137 | ||
138 | movlw 0fh | |
139 | movwf adcon1 | |
140 | movlw 7 | |
141 | movwf cmcon | |
142 | ||
143 | movlw b'00000000' | |
144 | movwf porta | |
145 | movlw b'00000000' | |
146 | movwf portb | |
147 | movlw b'00000000' | |
148 | movwf portc | |
149 | movlw B'011001' | |
150 | movwf trisa | |
151 | movlw B'00000111' | |
152 | movwf trisb | |
153 | movlw B'10001100' | |
154 | movwf trisc | |
155 | ; ___ clear ram bank 0-3 | |
156 | lfsr fsr0,0 | |
157 | goclr1k | |
158 | clrf postinc0 | |
159 | btfss fsr0h,2 | |
160 | goto goclr1k | |
161 | ||
162 | ;****************************************************************************** | |
163 | ;****************************************************************************** | |
164 | ;** ** | |
165 | ;** F A R M ** | |
166 | ;** ** | |
167 | ;****************************************************************************** | |
168 | ;****************************************************************************** | |
169 | ||
170 | ; jedan step motora je 0,153 mm | |
171 | bcf led | |
172 | call home | |
173 | ifc | |
174 | goto goerror | |
175 | farm | |
176 | defspeed | |
177 | bcf led | |
178 | weak | |
179 | dole | |
180 | call waitkey | |
181 | ||
182 | strong | |
183 | call slowstart | |
184 | movlw .123 | |
185 | movwf liftcount | |
186 | move_down ; \ u ovoj petlji ide nadole | |
187 | call mm2 | |
188 | decfsz liftcount,f | |
189 | bra move_down ; / u ovoj petlji ide nadole | |
190 | ||
191 | btfsc extkey | |
192 | bra otp1 | |
193 | ; still down mode | |
194 | waitjust | |
195 | call timing0 | |
196 | weak | |
197 | gore | |
198 | bsf hilite2 | |
199 | bcf status,c | |
200 | btfsc extkey | |
201 | bsf status,c | |
202 | rlcf keyrotor | |
203 | movf keyrotor,w | |
204 | xorlw b'11111110' | |
205 | bnz waitjust | |
206 | bra goup | |
207 | otp1 | |
208 | call timing2 | |
209 | weak | |
210 | gore | |
211 | bsf hilite2 | |
212 | movlw 0 | |
213 | call timing3 | |
214 | ||
215 | bsf click0 | |
216 | bsf click1 | |
217 | call timing3 | |
218 | bsf click2 | |
219 | call timing3 | |
220 | call timing3 | |
221 | call timing3 | |
222 | call timing3 | |
223 | call timing3 | |
224 | call timing3 | |
225 | call timing3 | |
226 | call timing3 | |
227 | bcf click0 | |
228 | bcf click1 | |
229 | call timing3 | |
230 | bcf click2 | |
231 | call timing3 | |
232 | call timing3 | |
233 | call timing3 | |
234 | call timing3 | |
235 | call timing3 | |
236 | call timing3 | |
237 | call timing3 | |
238 | goup | |
239 | bcf hilite2 | |
240 | call home ; ide nagore | |
241 | ifc | |
242 | goto goerror | |
243 | call timing2 | |
244 | bra farm | |
245 | ;------------------------------- | |
246 | ||
247 | showhall | |
248 | ifhallon | |
249 | bsf led | |
250 | ifhalloff | |
251 | bcf led | |
252 | return | |
253 | ||
254 | ;------- | |
255 | mm2 ; napravi 13 koraka (2 mm) | |
256 | movlw .13 ; za 2 mm | |
257 | movwf stepcount | |
258 | gost20 | |
259 | btg motclock | |
260 | call timing | |
261 | btg motclock | |
262 | call timing | |
263 | decfsz stepcount,f | |
264 | bra gost20 | |
265 | return | |
266 | ;------- | |
267 | timing0 | |
268 | movlw .5 | |
269 | movwf outer | |
270 | bra gostep | |
271 | timing2 | |
272 | movlw .200 | |
273 | movwf outer | |
274 | bra gostep | |
275 | timing | |
276 | movf speedbyte,w | |
277 | movwf outer | |
278 | gostep2 | |
279 | movlw .6 | |
280 | movwf inner | |
281 | gostep | |
282 | decfsz inner,f | |
283 | bra gostep | |
284 | decfsz outer,f | |
285 | bra gostep2 | |
286 | return | |
287 | ;------- | |
288 | timing3 ; dugi tajming, period w | |
289 | movwf outer | |
290 | gostep3 | |
291 | nop | |
292 | nop | |
293 | nop | |
294 | nop | |
295 | nop | |
296 | decfsz inner,f | |
297 | bra gostep3 | |
298 | decfsz outer,f | |
299 | bra gostep3 | |
300 | return | |
301 | ||
302 | ;------- | |
303 | waitkey | |
304 | btfss extkey | |
305 | return | |
306 | btfss key | |
307 | return | |
308 | bra waitkey | |
309 | ;------------------------------- | |
310 | ||
311 | home | |
312 | strong | |
313 | defspeed | |
314 | ifhalloff | |
315 | bra samogore | |
316 | ; prvo ide dole da se otkaci od halla | |
317 | dole | |
318 | call slowstart | |
319 | movlw .3 ; za 20 mm | |
320 | call gosteps2 | |
321 | call slowstop | |
322 | ifhallon | |
323 | goto errhome | |
324 | movlw .200 | |
325 | call timing3 | |
326 | samogore ; ide gore do halla, error ako ga nije nasao | |
327 | gore | |
328 | call slowstart_long | |
329 | defspeed | |
330 | movlw .150 ; za 300 mm max posle kojih prijavljuje gresku | |
331 | call gosteps | |
332 | bc errhome | |
333 | slowstop ; sad ide jos usporeno | |
334 | speed 90 | |
335 | movlw 1 ; jos 2 mm | |
336 | call gosteps2 | |
337 | speed 160 | |
338 | movlw 1 ; jos 2 mm | |
339 | call gosteps2 | |
340 | speed 200 | |
341 | movlw 1 ; jos 2 mm | |
342 | call gosteps2 | |
343 | bcf status,c ; NC = no error | |
344 | return | |
345 | errhome | |
346 | bsf status,c ; C = error | |
347 | return | |
348 | ;------- | |
349 | ||
350 | slowstart | |
351 | speed 200 | |
352 | movlw 1 ; jos 2 mm | |
353 | call gosteps2 | |
354 | speed 160 | |
355 | movlw 2 ; jos 2 mm | |
356 | call gosteps2 | |
357 | speed 90 | |
358 | movlw 3 ; jos 2 mm | |
359 | call gosteps2 | |
360 | defspeed | |
361 | return | |
362 | ||
363 | slowstart_long | |
364 | speed 160 | |
365 | movlw 8 ; x 2 mm | |
366 | call gosteps2 | |
367 | speed 120 | |
368 | movlw 1 ; x 2 mm | |
369 | call gosteps2 | |
370 | speed 90 | |
371 | movlw 1 ; x 2 mm | |
372 | call gosteps2 | |
373 | defspeed | |
374 | return | |
375 | ||
376 | ||
377 | ;------- | |
378 | ||
379 | gosteps ; napravi w*2mm, stop and clr C if hall low | |
380 | strong | |
381 | movwf liftcount | |
382 | godns | |
383 | call mm2 | |
384 | ifhallon | |
385 | bra foundhall | |
386 | decfsz liftcount,f | |
387 | bra godns | |
388 | bsf status,c ; set C, error (nije nasao hall) | |
389 | return | |
390 | foundhall | |
391 | bcf status,c ; clr C, nasao hall | |
392 | return | |
393 | ;------- | |
394 | ||
395 | gosteps2 ; samo napravi w*2mm bezuslovno | |
396 | strong | |
397 | movwf liftcount | |
398 | godns2 | |
399 | call mm2 | |
400 | decfsz liftcount,f | |
401 | bra godns2 | |
402 | return | |
403 | ||
404 | ;------------------------------ | |
405 | ||
406 | goerror ; samo blinka led do beskraja | |
407 | weak | |
408 | btg led | |
409 | clrf wreg | |
410 | call timing3 | |
411 | bra goerror | |
412 | ||
413 | ;------------------------------ | |
414 | END |