21-09-2012, 08:00 AM
(Seda postitust muudeti viimati: 01-10-2012, 08:53 AM ja muutjaks oli felch.)
Ülilihtsat võimalust kas ei ole või siis ei tule kuidagi meelde. Tegin pikemalt, asmis muidugi
Kood:
movwf sendtemp ; seivi saadetav
movwf countH
btfsc MySerial,.7 ; bit7 paarsus. 0=E,1=N
goto snd_exit
; kalkuleeri paarsuse bitt
movlw .8
movwf countL
clrf adrtemp ; 1-tede loendi
bcf CARRY
parity: rrf countH,F
btfsc CARRY
incf adrtemp,F
decfsz countL
goto parity
bcf CARRY
btfsc adrtemp,.0
bsf CARRY
banksel TXSTA ; paarsuse bitt on nüüd TXSTA,TX9D-s
bcf TXSTA,TX9D
btfsc CARRY
bsf TXSTA,TX9D
banksel .0
snd_exit: btfss PIR1,TXIF ; saatja valmis ?
goto snd_exit
movf sendtemp,W ; saadetav bait meelde tuletada
banksel TXREG
movwf TXREG ; saada!
banksel TXSTA
snd_exit1: btfss TXSTA,TRMT ; kas saatja nihkeregister tühi (bait prosest väljas)?
goto snd_exit1
banksel .0
movf sendtemp,W ; taasta saadetav
return