Advertisement
Guest User

Untitled

a guest
Sep 13th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 0.86 KB | None | 0 0
  1. #define     SDO     PORTA,0     ;RA0 is Serial Data Out
  2. #define     SCK     PORTA,1     ;RA1 is Serial Clock
  3.  
  4. SEND        EQU     0x20        ;GP RAM 0x20 is serial send buffer
  5.  
  6.         movfw       RCREG       ;move received data byte into SPI send register
  7.         movwf       SEND
  8.         call        DATA_OUT    ;send data on SPI buss
  9.  
  10. DATA_OUT    movlw       0x08        ;initialize bit counter
  11.         movwf       BITCOUNT
  12.  
  13. SEND_BIT    btfss       SEND,7      ;is MSB of send register high or low?
  14.         goto        SEND_LO     ;low, send 0
  15.         goto        SEND_HI     ;high, send 1
  16.  
  17. SEND_LO     bcf     SDO     ;send 0
  18.         goto        SHIFT
  19.  
  20. SEND_HI     bsf     SDO     ;send 1
  21.         goto        SHIFT
  22.  
  23. SHIFT       bsf     SCK     ;clock hi
  24.         call        ClkDelay    ;wait
  25.         bcf     SCK     ;clock lo
  26.         rlf     SEND,F      ;shift bits in send register
  27.         decfsz      BITCOUNT,F  ;decriment bit counter
  28.         goto        SEND_BIT    ;bit counter > 0, send next bit
  29.         return              ;bit counter = 0, return
  30.  
  31. ClkDelay    nop
  32.         nop
  33.         nop
  34.         nop
  35.         nop
  36.         nop
  37.         nop
  38.         return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement