chiark / gitweb /
undo broken deletion
[trains.git] / cebpic / led-flash.asm
1 ; pin 21 (per-pic-led, RD2/PSP2/C1IN) states: high H = green, low L = red, float Z = black
2
3         include         /usr/share/gputils/header/p18f458.inc
4         radix           dec
5
6 clock equ mclock
7         include         ../iwjpictest/clockvaries.inc
8
9         code
10 start
11 ; pin initial config
12         bcf     TRISE,4,0       ; turn off PSPMODE (Data Sheet p100/101)
13 ; timer initial config
14         morse_t0setup mclock, (1<<TMR0ON), -1, -1
15 ; actually do stuff
16         call    green
17         call    waiting
18         call    black
19         call    waiting
20         call    red
21         call    waiting
22         call    black
23         call    waiting
24         goto    start
25
26
27 green
28         bcf     TRISD,2,0       ; make pin RD2 an output (DS100)
29         bsf     LATD,2,0        ; set pin RD2 H (green)
30         return
31
32 black
33         bsf     TRISD,2,0       ; make pin RD2 an input (i.e. set Z, black) (DS100)
34         return
35
36 red
37         bcf     TRISD,2,0       ; make pin RD2 an output (DS100)
38         bcf     LATD,2,0        ; set pin RD2 L (red)
39         return
40
41 waiting
42         bcf     INTCON,2,0      ; clear timer0 interrupt bit (p109)
43         clrf    TMR0H,0         ; p107 set high bit of timer0 to 0 (buffered, 
44                                 ; so only actually set when write to tmr0l occurs)
45         clrf    TMR0L,0         ; set low bit o timer0 - timer now set to 0000h
46 loop
47         btfss   INTCON,2,0      ; check whethr tiomer0 interrupt has been set -
48                                 ; skip next instruction if so
49         bra     loop
50         return
51
52         end