Цитата(M@@}{ @ Jan 9 2009, 15:02)

Сейчас проверил с NOKIA 6230i там нет последнего символа 01
ну ёлы палы... читать не умеем
написаноже ...
41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёмабайта
а ПП .. это под программа.. если ктото не знает.
типа сделано так... если на пике -
если таймаут то RETLW 0X01
есле на авр то типа..
LDI R16,0X01
RET
------------------------
тоесть если байт у нас НЕ принят то выходим из ПП с заведомо извесным результатом по которуму и узнаём что это конец приёма!!!!!!
--------------------------------------------------------
ну это для очень умных
--------------------------------------------------------
;----------------------------
RX_232_B:
ldi Temp,0xFE ;
out TCNT1H,Temp ; грузим содержимое в регистр таймер-счетчика TMR1
ldi Temp,0x00
out TCNT1L,Temp ; грузим содержимое в регистр таймер-счетчика TMR1
ldi temp,(1<<TOV1)
out TIFR,Temp ; стираем Флаг прерывания TOV1 по переполнению TMR1
RX_232_STB:
sbis PIND,2 ; ловим перепад с 1 в 0....
rjmp RXB_232 ; если дождлись старт бита то идём читаь байт
in Temp,TIFR
sbrs Temp,TOV1 ; по TOV1 проверяем небыло ли переполнения TMR1
rjmp RX_232_STB ; если его небыло ждём старт бит дальше
ldi BUF,0x01 ; если не дождались старт бита то выходим с результатом 0хХХ
ret
;----------------------------
RX_232_C:
;---------------------------------------------------
sbic PIND,2 ; ловим перепад с 1 в 0
rjmp RX_232_B ;
sbic PIND,2 ; ловим перепад с 1 в 0
rjmp RX_232_B ;
sbic PIND,2 ; ловим перепад с 1 в 0
rjmp RX_232_B ; три раза типа защита от дребезга!!!
nop
;---------------------------------------------------
RXB_232:
clr BUF
и тут сам приём байта....
-----------------
я надеюсьпо тексту доглдались что ВХОДОВ в ПП у меня три RX_232_А: RX_232_B: и RX_232_С:
первые одинаковые разница тока в загрузке таймера...
а третий... будет ждать до посинения... пока не придёт перепад с 1 в 0
Сообщение отредактировал KGB - Jan 9 2009, 14:25