Dark-Show

PIC12F675 UART Bit-Banging

May 14th, 2014
405
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;*******************************************************
  2. ;PIC12f675 UART Bit-Banging
  3. ;Programmer: Gregory Michalik
  4. ;Email: gregory954(a)gmail.com
  5. ;*******************************************************
  6.  
  7. ;**************************
  8. ; Bit Delay Values (4mhz)
  9. ; 0x18 - 9600bps
  10. ; 0x0A - 19200bps
  11. ;**************************
  12.  
  13. #define UART        GPIO,4          ;UART Output Pin
  14.  
  15.  UDATA_SHR
  16. bit_cntr    res 1       ; UART Tx Var
  17. tx_byte     res 1       ; UART Tx Byte
  18. baud        res 1       ; UART bit delay value
  19. d1              res 1       ; Timer Var
  20.  
  21.  global baud
  22.  global UART_SendByte
  23.  global UART_Init
  24.  
  25.  code
  26.  
  27. UART_Init
  28.         bsf     UART        ; Keep UART High
  29.         return
  30.  
  31. UART_SendByte
  32.         movwf   tx_byte
  33.         movlw   h'08'       ; 8 Bits in a Byte
  34.         movwf   bit_cntr    ;
  35.         bcf UART        ; Low Signals Start of Bitstream
  36.         movf    baud,w
  37.         call    var_delay   ;
  38. XT
  39.         rrf tx_byte,1   ; MSB
  40.         btfss   STATUS,C    ; If High
  41.         bcf UART        ; Output High
  42.         btfsc   STATUS,C    ; If Low
  43.         bsf UART        ; Output Low
  44.         movf    baud,w
  45.         call    var_delay   ;
  46.         decfsz  bit_cntr,1  ; Next Bit
  47.         goto    XT          ;
  48.         bsf UART        ; End Bitstream High
  49.         movf    baud,w
  50.         call    var_delay   ;
  51.         return
  52.  
  53. var_delay
  54.         movwf   d1
  55. BD0
  56.         nop
  57.         decfsz  d1, f
  58.         goto    BD0
  59.                 return
  60. END
RAW Paste Data