;******************************************************************************
; PUT232
; Put232 (9600 baud) -- Mike McLaren, K8LH (Jan-09)
;******************************************************************************
Put232
movlb 2
movwf txbyte ; save Tx data byte
movlw 10 ; 1 start + 8 data + 1 stop bit
movwf bit_ctr ; setup bit counter
bcf status,0 ; C = 0 (start bit)
DelayCy (104*usecs-10) ; 104 usecs minus 10 cycles(added)
goto SendBit ; send start bit
NextBit
DelayCy (104*usecs-10) ; 104 usecs minus 10 cycles
bsf status,0 ; always shift in a 'stop' bit
rrf txbyte,f ; put data bit in Carry
SendBit
movf LATD,W ; read port
iorlw 1<<1 ; set Ser_out pin bit to 1
btfss status,0 ; if data bit = 1 skip, else
xorlw 1<<1 ; set Ser_out pin bit to 0
movwf LATD ; precise update intervals
decfsz bit_ctr,f ; done? yes, skip, else
goto NextBit ; send next bit
retlw 0 ;