Advertisement
Guest User

Untitled

a guest
Sep 16th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 0.77 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.  
  5. SEND        EQU     0x20        ;GP RAM 0x20 is serial send buffer
  6.  
  7.         movfw       RCREG       ;move received data byte into SPI send register
  8.         movwf       SEND
  9.         call        DATA_OUT    ;send data on SPI buss
  10.  
  11. DATA_OUT    movlw       0x08        ;initialize bit counter
  12.         movwf       BITCOUNT
  13.  
  14. SEND_BIT    btfss       SEND,7      ;is MSB of send register high or low?
  15.         goto        SEND_LO     ;low, send 0
  16.         goto        SEND_HI     ;high, send 1
  17.  
  18. SEND_LO     bcf     SDO     ;send 0
  19.         goto        SHIFT
  20.  
  21. SEND_HI     bsf     SDO     ;send 1
  22.         goto        SHIFT
  23.  
  24. SHIFT       bsf     SCK     ;clock hi
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement