pomoc s odosielanim dat do telefonu
Napsal: 29 kvě 2007, 16:42
Mam jeden mensi problem. Odosielam data (cislo 0910012345) do telefonu . normalne sa tam cislice vypisuju jak maju byt lenze niekedy (skoro vzdy) par prvych cislic vynecha. niekedy jednu dve, ale niekedy aj sest prvych chyba. neviete cim to moze byt?
Len sa ucim programovat tak ma prosim hned neukamenujte.
Zdrojovy kod mojho programu:
Len sa ucim programovat tak ma prosim hned neukamenujte.
Zdrojovy kod mojho programu:
Kód: Vybrat vše
INCLUDE "P16F84A.INC"
LIST P=16F84A,R=DEC
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
txdat equ h'20'
rxdat equ h'26'
pocbit equ h'21'
citac equ h'22'
C1 equ h'23'
C2 equ h'24'
C3 equ h'25'
C4 equ h'27'
#define c 3,0 ;CARRY bit v SWR
#define tx PORTB,0 ;TxD na uP
#define rx PORTB,1 ;RxD na uP
#define v1 PORTB,3 ;vstup 1
#define led PORTB,2 ;LED svieti ked OK
BSF STATUS,RP0
MOVLW b'00000010' ;NA uP JE 0=TxD 1=RxD
MOVWF TRISB
BCF STATUS,RP0
clrf PORTB
BCF STATUS,C
call CAKAJ
call JEDEN
movlw h'30'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'39'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'31'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'30'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'30'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'31'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'32'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'33'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'34'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'35'
movwf txdat
call scitx
call DVA
call CAKAJ
call JEDEN
movlw h'73'
movwf txdat
call scitx
call DVA
call CAKAJ
KONIEC nop
goto KONIEC
JEDEN movlw h'41' ;A
movwf txdat
call scitx
movlw h'54' ;T
movwf txdat
call scitx
movlw h'2B' ;+
movwf txdat
call scitx
movlw h'43' ;C
movwf txdat
call scitx
movlw h'4B' ;K
movwf txdat
call scitx
movlw h'50' ;P
movwf txdat
call scitx
movlw h'44' ;D
movwf txdat
call scitx
movlw h'3D' ;=
movwf txdat
call scitx
movlw h'22' ;"
movwf txdat
call scitx
RETURN
DVA movlw h'22' ;"
movwf txdat
call scitx
movlw h'0D' ;<CR>
movwf txdat
call scitx
RETURN
scitx bsf tx ;v TXDAT musí být data pro vysílání
movlw 9 ;do POCBITu 9
movwf pocbit
bcf tx ;start bit
st31 movlw 12 ;casovani 52us (Tbit)
movwf citac ;pozad.cas (us)-12IC/3IC
st31a decfsz citac,f
goto st31a
decfsz pocbit,f;test na konec odvys. bytu
goto s51
bsf tx ;stop bit
movlw 12 ;casovani 52us (Tbit)=délka stop bitu
movwf citac ;pozad.cas (us)-2IC/3IC
st32 decfsz citac,f
goto st32
return
s51 rrf txdat,f
btfsc c ;test na stav aktuálního bitu
goto s4h
bcf tx
goto s41
s4h bsf tx
s41 goto st31
scirx bsf c
clrf rxdat
rrf rxdat,f
s1 btfsc rx ;test na start bit
goto s1
movlw 6 ;casování 26us (Tbit/2)
movwf citac ;požad.eas (us)-4IC/3IC
st05 decfsz citac,f
goto st05
st1 movlw 13 ;casovani 52us (Tbit)
movwf citac ;pozad.cas (us)-12IC/3IC
st1a decfsz citac,f
goto st1a
btfsc rx ;vzorkovani RX
goto sch
bcf c
goto s2
sch bsf c
s2 rrf rxdat,f
btfss c ;test na konec byte
goto st1
movlw 7 ;casovani 52us (Tbit)-cas pro dobihnutí byte
movwf citac ;požad.eas (us)-12IC/3IC
st1b decfsz citac,f
goto st1b
return ;poijatá data jsou uložena v RXDAT
CAKAJ MOVLW 5
MOVWF C1
CAKAJ3 MOVLW 255
MOVWF C2
CAKAJ2 MOVLW 255
MOVWF C3
CAKAJ1 DECFSZ C3,1
GOTO CAKAJ1
DECFSZ C2,1
GOTO CAKAJ2
DECFSZ C1,1
GOTO CAKAJ3
RETURN
end