Całkowicie musisz zmienić podejście do tematu.
Pominę na razie ustawienia Fusów itp.
Popatrz na twoją część odbiorczą:
Kod: Zaznacz cały
Do
A = Waitkey()
Cls
Lcd "zmienna a=" ; A
Loop
Twój program nie będzie działał poprawnie ponieważ ty z góry mu narzuciłeś kiedy ma odbierać (nasłuchiwać) dane. A przecież nie wiesz kiedy nadajnik je będzie wysyła i przez jak długo.
Musisz ustawić bufor odbioru i przenieść odbiór do przerwania.
dane przychodzące do bufora będą informacją że program ma się zając w tej chwili odbieraniem a nie np wyświetlaniem na LCD.
Więc tak musisz dodać bufor:
rozmiar na razie nie jest istotny wyjdzie w praniu
Koniecznie musisz włączyć przerwanie
I teraz główny punk programu moment decyzji czy odbierać czy nie.
Potrzebna będzie zmienna najlepiej bitowa bo będziemy tylko wystawiać chorągiewkę.
jakaś zmienna opisze ją "
Serial_flag" nazwa łatwa i mówiąca o co biega.
I nasz klucz
Ischarwaiting czyli "jeśli znak czeka"
jeśli jest znak w buforze wystawia naszą flagę.
A jeśli mamy flagę że znak już jest w buforze gotowy do odebrania musimy go teraz gdzieś przepisać żeby nie doprowadzić do przepełnienia bufora.
Najlepiej przepisać do zmiennej tablicowej czyli jeśli twoja paczka danych będzie miała 6 bytów zrobisz tablicę o rozmiarze 6 ale można więcej mniej jak kto woli.
"
Dim Serial_rx(6) As Byte " Zmienna tablicowa do odbioru danych na 6 byteów
Teraz odbieramy:
Kod: Zaznacz cały
If Serial_flag = 1 Then
Inputbin Serial_rx(1) , 6
End If
użyj
inputbin do odbioru i printbib do wysyłki.
można dodać jeszcze sygnalizację odbioru na jakiegoś leda czy "cuś" w tym wypadku portb.0
Całość mogła by wyglądać tak:
Kod: Zaznacz cały
Serial_flag = Ischarwaiting()
Portb.0 = Serial_flag
If Serial_flag = 1 Then
Inputbin Serial_rx(1) , 6
End If
Wrócę jeszcze do bufora odbioru, powiedz my że program jest w momencie wyświetlania na LCD i nie jest w stanie przejść do "
Ischarwaiting" w tedy dane trafiają do bufora o pojemności w tym przykładzie 10 transmisji.
Cześć nadawcza:
Praktycznie to samo tylko dla części nadawczej.
Zmienna z której będziemy nadawać "
Dim Serial_tx(6) As Byte "
bufor wyjściowy
przerwania
i samo wysyłanie sześciu byteów w nawiasie podajesz od którego byte-u ma zacząć wysyłać.
Proste i skuteczne
Pozdrawiam
Pikczu