komunikacja 89c2051 za pomocą uart

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
jpx
-
Posty: 2
Rejestracja: 18 lis 2006, 15:42

komunikacja 89c2051 za pomocą uart

Post autor: jpx » 18 lis 2006, 19:04

Potrzebuje połączyć szeregowo dwa mikrokontrolery 89c2051.Zależy mi na transmisji w jedną strone. Pierwszy wysyła jeden bajt np(120) do drugiego. Drugi rozpoznaje czy bajt ma wartość 120, jeżeli tak to zapala diode zieloną ,jeżeli inną to czerwoną. Kombinuje z funkcjami input inputbin i print printbin i nic. Może uratuje mnie wstawka asemblerowa, jak tak to jaka.Moje ustawienia to
$crystal = 12000000
$baud = 2400
Dzięki za podpowiedzi .

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 18 lis 2006, 20:14

Drogi kolego, bascom nie jest jedynym słusznym "językiem programowania" więc należałoby to uwzględnić w opisie. Napisz dokładniej jak "kombinujesz". Zdaje się, że w helpie jest wszystko czego potrzebujesz.

ZbeeGin

Post autor: ZbeeGin » 19 lis 2006, 6:20

Dobrze kombinujesz. PRINTBIN i INPUTBIN będą najlepsze.

Od strony nadawczej:

Kod: Zaznacz cały

$crystal = 12000000
$baud = 2400

Dim cowyslac As Byte

cowyslac = 120   'magic number
PrintBin cowyslac

Wait 1

cowyslac = 10
PrintBin cowyslac

End
A od strony odbiorczej:

Kod: Zaznacz cały

$crystal = 12000000
$baud = 2400

Dim odebrano As Byte

Do
  Set P1.0   'zielona dioda
  Set P1.1   'czerwona dioda (sterowane katodami!!)

  InputBin odebrano
  If odebrano = 120 
    Then Reset P1.0
    Else Reset P1.1
  End If
  Wait 1
Loop

End
-------------

Mógłbyś także użyć PRINT i INPUT ale wtedy należy przesyłać znaki - czyli należy zastosować konwersję.

Nadawanie:

Kod: Zaznacz cały

Print Chr (120)
^^^^^^^^^^
Odbieranie:

Kod: Zaznacz cały

Dim znak As String * 1
Dim zmienna As Byte

INPUT znak
zmienna = ASC(znak)
Przy czym w tym wypadku przesyłane będą dwa znaki: ten właściwy oraz o kodzie 13 (powrót karetki). Znak o kodzie 13 będzie informacją dla INPUT, że to już koniec i dalszych znaków nie odbieraj w tym poleceniu.

ps. Wojtek - "wywala się" w tej linii z Print jeśli pomiędzy Chr a nawiasem nie ma spacji.

jpx
-
Posty: 2
Rejestracja: 18 lis 2006, 15:42

ok i dzięki

Post autor: jpx » 20 lis 2006, 12:22

Dzięki wszystkim za zainteresowanie, a szczególnie ZbeeGin który rozwiał moje wątpliwości co do słuszności programu który napisałem. Okazało się że układy muszą mieć wspólną mase i wszystko hula jak należy .Teraz zamierzam zrobić to samo drogą radiową poprzez moduły BT27 I BR27 (STE) firmy Gamma.

ZbeeGin

Post autor: ZbeeGin » 20 lis 2006, 17:42

jpx pisze:Okazało się że układy muszą mieć wspólną mase i wszystko hula jak należy .
No cóż w pierwszej wypowiedzi o tym nie wspomniałeś. A czasami problem kabelka jest najistotniejszy. :mrgreen:

Następnym razem prosimy o dokładniejszy opis problemu.

ODPOWIEDZ