Code: Select all
dim txt as char
main:
txt = "H"
Soft_Uart_Init(PORTE, 0,1,2400,1)
Soft_Uart_Write(txt[0])
end.
$0030 $ _soft_uart_write:
'******** Apply Invert Mask to DATA; mask created by compiler ********
'******** InvertMask = 255 in This Example; So Data Is Inverted ********
'************************************************************************
$0030 $5015 MOVF soft_uart_invertmaskrd, 0, 0
$0032 $1A1D XORWF FARG_Soft_Uart_Write, 1, 0
'******** Load Address of TX Port Into FSR0 ********
'************************************************************************
$0034 $0EFF MOVLW 255
$0036 $1416 ANDWF soft_uart_port_address, 0, 0
$0038 $6EE9 MOVWF FSR0L, 0
$003A $C017 F000 MOVFF soft_uart_port_address+1, STACK_0
$003E $C000 FFEA MOVFF STACK_0, FSR0H
'******** Test Invert Mask & DO START BIT (Hi or Lo) ********
'******** START BIT Forced to High in this Example ********
'************************************************************************
$0042 $5015 MOVF soft_uart_invertmaskrd, 0, 0
$0044 $0A00 XORLW 0
$0046 $E103 BNZ Soft_uart_L_6
$0048 $92EF BCF INDF0, ___SOFT_UART_TX, 0
$004A $EF28 F000 GOTO Soft_uart_L_7
$004E $ Soft_uart_L_6:
$004E $82EF BSF INDF0, ___SOFT_UART_TX, 0
'******** Call FullBit Delay After START BIT ********
'************************************************************************
$0050 $ Soft_uart_L_7:
$0050 $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$0054 $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit0 Then FullBit Delay ********
'************************************************************************
$0058 $92EF BCF INDF0, ___SOFT_UART_TX, 0
$005A $B01D BTFSC FARG_SOFT_UART_WRITE, 0, 0
$005C $82EF BSF INDF0, ___SOFT_UART_TX, 0
$005E $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$0062 $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit1 Then FullBit Delay ********
'************************************************************************
$0066 $92EF BCF INDF0, ___SOFT_UART_TX, 0
$0068 $B21D BTFSC FARG_SOFT_UART_WRITE, 1, 0
$006A $82EF BSF INDF0, ___SOFT_UART_TX, 0
$006C $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$0070 $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit2 Then FullBit Delay ********
'************************************************************************
$0074 $92EF BCF INDF0, ___SOFT_UART_TX, 0
$0076 $B41D BTFSC FARG_SOFT_UART_WRITE, 2, 0
$0078 $82EF BSF INDF0, ___SOFT_UART_TX, 0
$007A $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$007E $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit3 Then FullBit Delay ********
'************************************************************************
$0082 $92EF BCF INDF0, ___SOFT_UART_TX, 0
;Soft_uart.ppas,184 ::
$0084 $B61D BTFSC FARG_SOFT_UART_WRITE, 3, 0
;Soft_uart.ppas,185 ::
$0086 $82EF BSF INDF0, ___SOFT_UART_TX, 0
;Soft_uart.ppas,187 ::
$0088 $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$008C $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit4 Then FullBit Delay ********
'************************************************************************
$0090 $92EF BCF INDF0, ___SOFT_UART_TX, 0
$0092 $B81D BTFSC FARG_SOFT_UART_WRITE, 4, 0
$0094 $82EF BSF INDF0, ___SOFT_UART_TX, 0
$0096 $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$009A $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit5 Then FullBit Delay ********
'************************************************************************
$009E $92EF BCF INDF0, ___SOFT_UART_TX, 0
$00A0 $BA1D BTFSC FARG_SOFT_UART_WRITE, 5, 0
$00A2 $82EF BSF INDF0, ___SOFT_UART_TX, 0
$00A4 $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$00A8 $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit6 Then FullBit Delay ********
'************************************************************************
BCF INDF0, ___SOFT_UART_TX, 0
$00AE $BC1D BTFSC FARG_SOFT_UART_WRITE, 6, 0
$00B0 $82EF BSF INDF0, ___SOFT_UART_TX, 0
$00B2 $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$00B6 $EC04 F000 CALL _delay_cyc
'******** Make TX pin = Data Bit7 Then FullBit Delay ********
'************************************************************************
$00BA $92EF BCF INDF0, ___SOFT_UART_TX, 0
$00BC $BE1D BTFSC FARG_SOFT_UART_WRITE, 7, 0
$00BE $82EF BSF INDF0, ___SOFT_UART_TX, 0
$00C0 $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$00C4 $EC04 F000 CALL _delay_cyc
'******** Make TX pin = STOPBIT Then FullBit Delay ********
'******** STOPBIT = STARTBIT- Not Good !! ********
'************************************************************************
$00C8 $82EF BSF INDF0, ___SOFT_UART_TX, 0
$00CA $C018 F01E MOVFF soft_uart_fullbit, FARG_Delay_Cyc
$00CE $EC04 F000 CALL _delay_cyc
'******** STOPBIT value on TX Pin Inverted - Not Good !! ********
'******** since invertmaskwr = TX pin value ********
'*****************************************************************************
$00D2 $5019 MOVF soft_uart_invertmaskwr, 0, 0
$00D4 $1AEF XORWF INDF0, 1, 0
$00D6 $0012 RETURN