* src/pic16/device.c (Pics16[]): added devices 18F2550, 18F4331,
[fw/sdcc] / device / lib / pic16 / libc / delay / delay1mtcy.S
1
2         include <p18fxxx.inc>
3
4         extern  _delay10tcy
5         extern  _delay100tcy
6         extern  _delay10ktcy
7
8         global  _delay1mtcy
9     
10         code
11
12 _delay1mtcy:
13         ; polynomial for 1mtcy delay is f(x) = 100000 * (x-1) + 100000
14         decf    WREG, f
15     
16         movwf   POSTDEC1
17         movlw   99
18         call    _delay10ktcy
19
20         movlw   99
21         call    _delay100tcy
22         
23         movlw   9
24         call    _delay10tcy
25
26         movf    PREINC1, w
27  
28         bz      @delay1m_end
29         bra     $+2
30     
31 @delay1m_loop:
32         movwf    POSTDEC1
33
34         movlw   99
35         call    _delay10ktcy
36         
37         movlw   99
38         call    _delay100tcy
39         
40         movlw   9
41         call    _delay10tcy
42
43         bra     $+2
44         bra     $+2
45         nop                         
46         movf    PREINC1, w
47         decfsz  WREG, f
48         bra     @delay1m_loop
49
50 @delay1m_end:
51         return
52
53         end