arkadaşlar selam
16f628 ile yaptığım seri ilet,şm uygulamasında şöyle bir sorun yaşıyorum yardımcı olursanız sevinirim
başla:
SerIn DATAIN ,813, 1000, TimeoutError, [Wait("ECE"),RAKAM]
if rakam = 10 then
porta.1=1
else
porta.1=0
endif
if rakam = 20 then
porta.2=1
else
porta.2=0
endif
TimeoutError:
Toggle LED
DelayMS 500
goto başla
end
şeklinde sadeleştirdim
sorun 1 saniye data gelmezse TimeoutError a gitmesi gerekirken
SerIn DATAIN ,813, [Wait("ECE"),RAKAM] bu şrkilde yazılmış gibi
sürekli Serin komutunda bekliyor ECE datası gelince devam ediyor.....
TimeoutError a neden gitmez tşk....
Bu eski bir problem, problemi düzeltmediler ise
öncelikle illa ki "ECE" yi bekler, timeout çalışmaz.
şöyle bir mantık ile kurtulabilirsin,
basla:
SerIn DATAIN ,813, 1000, TimeoutError, [RAKAM]
if RAKAM <> "E" then basla
SerIn DATAIN ,813, 1000, TimeoutError, [RAKAM]
if RAKAM <> "C" then basla
SerIn DATAIN ,813, 1000, TimeoutError, [RAKAM]
if RAKAM <> "E" then basla
'' "ECE" geldi, sonrası normal akış
Ayrıca,
SerIn komutu çok kod üretir
SerIn tekrarlanan yerleri alttaki mantık ile yapabilirsin
- - -
Dim hata as bit
Dim bekle_sure as word
bakalim_ne_var:
bekle_sure = 1000 'kendinize uygun süre ms olarak
gosub data_al
if hata = 1 then bakalim_ne_var 'süre içinde gelmemiş, ne yapacak ise onu yap
'' şimdi data geldi
if RAKAM <> "E" then falan_filan '' "E" gelmediyse ...
'' "E" geldi
bekle_sure = 5 'kendinize uygun süre ms olarak
gosub data_al
if hata = 1 then bakalim_ne_var 'süre içinde gelmemiş, ne yapacak ise onu yap
'' şimdi data geldi
if RAKAM <> "C" then fisman_falan '' "C" gelmediyse ...
gibi
END
'''''''''
data_al:
hata = 0
if bekle_sure = 0 then bekle_sure = 1
SerIn DATAIN ,813, bekle_sure, gelmedi, [RAKAM]
return
gelmedi:
hata = 1
return
yardımlarınız için teşekkürler
çalıştırdım....