aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/words/spirw.asm
blob: bd6616aba7827cb9463771a5954979ef5597897a (plain)
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
; ( txbyte -- rxbyte) 
; MCU
; SPI exchange of 1 byte
VE_SPIRW:
    .dw $ff06
    .db "c!@spi"
    .dw VE_HEAD
    .set VE_HEAD  = VE_SPIRW
XT_SPIRW:
    .dw PFA_SPIRW
PFA_SPIRW:
    rcall do_spirw
    clr tosh
    jmp_ DO_NEXT

do_spirw:
    out_ SPDR, tosl
do_spirw1:
    in_ temp0, SPSR
    cbr temp0,7
    out_ SPSR, temp0
    in_ temp0, SPSR
    sbrs temp0, 7
    rjmp do_spirw1   ; wait until complete
    in_ tosl, SPDR
    ret