89C51

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
Megusman
-
Posty: 1
Rejestracja: 09 kwie 2005, 21:15
Lokalizacja: Vice City

89C51

Post autor: Megusman » 09 kwie 2005, 21:57

Witam chce napisać program do zdalnego sterowania (komunikacji między dwoma mikrokontrolerami 89C51) po przez RXD i TXD jeden ma wysyłać a drugi odbierac bajty planuje to zrobić narazie na podczerwień ale niewiem jak napisac ten program programuje od niedawna ale niebawiłem się jeszcze z przerwaniami.Mój problem polega na tym że nieiewiem jak uaktywnić przerwanie TXD i RXD mało tego nieiwiem jak to wszystko zapisać pisze w Asemblerze potrzebuje jakiś prosty programik do odbierania przez jeden mikrokontorler przez RXD i nadawania przez drugi mikrokontroler przez TXD proszeo krótki programik do tego np: wciskam przycisk na mikrokontrolerze nadawczym a w odbiorczym pojawiają mi się te same piny przypominam że pisze w asemblerze więc jeśli ktos napisze to w np bascomie niebnde w stanie tego przetłumaczyć z góry dzięki

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 09 kwie 2005, 22:49

Przede wszystkim należy zainicjować odpowiednie rejestry sterujące:
MOV SCON , # 01010000B ; [SCON] := 01010000B ;
MOV TMOD , # 00100001B ; [TMOD] := 00100001B ;
MOV TCON , # 01010000B ; [TCON] := 01010000B ;
MOV TH1 , # 0FDH ; 9600 bps
Podzielnik 0FDH jest dla kwarca 11.0592MHz.
Oczywiście należy zezwolić na przyjmowanie przerwań (jako takich):
MOV IE , # 10010010B ;

Napisz do mnie, wyślę ci przykład, prezentujący zagadnienie.
Mój e-mail an177@poczta.fm

Awatar użytkownika
Zenon/Dial
-
Posty: 18
Rejestracja: 09 sie 2005, 20:33
Kontakt:

Post autor: Zenon/Dial » 09 sie 2005, 20:55

Wiem jak to zrobić, by dwa procesory 89C2051 dogadały się ze soba. Nie musi to być na przerwaniach, chyba że koniecznie chcesz. Dla prób wystarczy w sposób standardowy napisać program w assemblerze. Można to zrobić na kartce bo jest na tyle krótki. Skontaktuj się ze mną: zenon.dial@op.pl

Wojtek
Moderator
Posty: 2604
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Post autor: Wojtek » 10 sie 2005, 4:12

:arrow: Zenon/Dial coś Ty taki tajemniczy, napisz tu , po to jest to forum żeby służyło wszystkim :)

Awatar użytkownika
Ertew
Użytkownik
Posty: 1418
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 10 sie 2005, 10:04

Wojtek pisze: Zenon/Dial coś Ty taki tajemniczy, napisz tu , po to jest to forum żeby służyło wszystkim
Właśnie Zenon/Dial pisz na forum chyba że nie lubisz fppedw to powiedz coś można poradzić bo mi mnie podoba się np. download w ppedw - stare ftp w edw było lepsze :| .

Awatar użytkownika
Zenon/Dial
-
Posty: 18
Rejestracja: 09 sie 2005, 20:33
Kontakt:

Post autor: Zenon/Dial » 10 sie 2005, 20:17

No, ktoś się odezwał.
To mój pierwszy kontakt i nie będę na daremno strzępił języka jeżeli nikogo to nie interesuje. Więc zamieszczony został tylko tekst sygnalizujący to co mam w głowie.
Krótko o sobie. Nadal na pełnej mocy używam komputerka ATARI Yah,,,,
Niezawodny, Robi co chcę. Odsyłam do stronki o magazynie SERIOUS grupy DIAL.
Tak więc moja Atarynka współpracuje z procesorami 89Cx51 o jakże.
Programuje je, wymienia informacje poprzez łącze RS-232 i robi wiele wiele innych rzeczy o których inni śnią.
Dogadanie się dwóch procesorów 89Cx51 to nic trudnego.
Nawet nie potrzeba interfejsu realizującego standard RSa. Wystarczą trzy przewody i transmisja idzie. Na małe odległości, mam tu na myśli około 2metry to aż za dobre.
Szybkość nawet ponad 57000 bodów.
Jak sięto robi. Jeden i drugi procesor MUSI być zaprogramowany, a więc w nim MUSI być program. Dodatkowo należy wyprowadzić dwa przyciski bo należy jakoś powiadomić procesor czy ma nadawać czy odbierać, to oczywiste.
Trzy przewody to: GND czyli masa. Łączy sie ze sobą przewody minusowe.
Tx jednego procesora łączy się z Rx drugiego i na przemian.
Sygnały wyjściowe i wejściowe będą na poziomie TTL ale to nic. Jak powiedziałem na małe odległości aż za dobre.
A sam program, no cóż, całkiem malusieńki z tym że rozumiem program główny MUSI być rozbudowany bo po odebraniu danych trzba by jakosik podpatrzeć czy to się wykonało. A najlepiej zrobić to dołączają diodę LED. Jeden procesor bada drugiemu program by po jego uruchomieniu migała ta dioda. Proste?
To tyle wstępu. Jak widać lubię pisać i wyczerpująco omówić temat. Dziś mam mało czasu bo jestem po 13godzinach pracy i tak dla relaksu zobaczyłem co słychać na forum. Do tematu powrócę i opiszę dokładnie co i jak + programy w assemblerze.
Ludzie! Czy macie programator do zaprogramowania 89Cx51? Tak?! To O.K. a jak nie to poecam mojej roboty, tyle że współpracuje z ATARI. Czy wiecie co to jest ATARI?
Łałłłłłl...... Kto by nie wiedział

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 10 sie 2005, 21:38

Zenon/Dial pisze:Czy wiecie co to jest ATARI?
Ach, Atari... mój pierwszy komputer... 800XL z "turboładowaniem" kaset :cry: aż się łza w oku kręci... a te dźwięki... PC to bezduszne pudła... :wink:

Awatar użytkownika
Zenon/Dial
-
Posty: 18
Rejestracja: 09 sie 2005, 20:33
Kontakt:

Post autor: Zenon/Dial » 10 sie 2005, 22:16

Ale tempo.....
Odpowiedż w mig....
Temat wiodący to.... dogadanie się dwóch 89Cx51 :)
Zerknąłem na wskazane stronki, fikuśne, ale nie mam czasu by wszystko analizować :(

Awatar użytkownika
jejek
-
Posty: 63
Rejestracja: 12 lip 2005, 8:16
Lokalizacja: Będzin
Kontakt:

Post autor: jejek » 11 sie 2005, 8:00

Ja też pamiętam Atari, to były takie badziewne komputerki które do pięt nie dorastały ZX Spectrum :mrgreen: :mrgreen: :mrgreen: Ale i tak go w końcu wymieniłem na rozszerzenie pamięci do Amigi :D

Piszesz o tej stronce, może wrzuć jej linka, Jejek

Dodane:
W przerwie na samobiczowanie za sprowadzanie na złą drogę link . Projekty są w poszczególnych magazynach.
Ostatnio zmieniony 11 sie 2005, 11:13 przez jejek, łącznie zmieniany 1 raz.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1418
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 11 sie 2005, 9:35

Ja tam wolę
[glow=white][shadow=yellow]C64[/shadow][/glow]


Panowie, zaczynacie odbiegać od tematu.
gaweł (moderator)

Awatar użytkownika
Zenon/Dial
-
Posty: 18
Rejestracja: 09 sie 2005, 20:33
Kontakt:

Post autor: Zenon/Dial » 11 sie 2005, 19:58

E....e...
Temat trzymamy. Warto od czasu do czasu podrapać się w uchu jako przerywnik? Co?

Więc tak, programik już mam ściągnięty z mojego 89Cx51. Jest to sama procedura nadawania . Wywoływana jest z programu głównego i "siedzi" w pamięci jako podprogram.
Jedno ale.... Procedura współpracuje z komputerkiem edukacynym 8050 który zrobiłem w/g schematu zamieszczonego w EDW.
Tak więc niektóre rozkazy nie pasują do "gołego" procesorka. Są oznaczone **
Nic to nie zmienia, bo w zależności od potrzeb można to zmienić.
Podaję kody HEX + zwięzły opis co jest co

Wsakżnik DPTR należy ustawić, by wskazywał adres pierwszego bajtu do wysłania

MOV DPTR,#nn **
90 xx xx xx xx = adres pierwszego bajtu do wysłania

Ustaw RS-232 do nadawania Transmisja 1200 bodów Bit parzystości tu nieistotny

75 98 52 MOV SCON,#n RS-232 ustawiony
75 8B D0 MOV TL1,#n 1200 bodów
75 8D D0 MOV TH1,#n
D2 8E SETB TR1 uruchom taktowanie

SKOK ; SKOK to etykieta :)
30 99 FD JNB TI,SKOK bit=0; tak? to czekaj, trwa nadawanie : tu nastąpi skok z końca procedury

; tu ewentualnie należy wstawić rozkazy reagujące na naciśnięcie klawisza by przerwać nadawanie. Gdy się to stanie, ulec zmianie musi końcowe F5, bo skok względny będzie dalej w tył

E0 MOVX A,@DPTR ** do A pobierz kolejny bajt w/g adresu w DPTR
A3 INC DPTR ** DPTR=DPTR+1 zwiększ wskażnik danych by pobrać kolejny bajt
F5 99 MOV SBUF,A wyślij pobrany bajt RS-em
C2 99 CLR TI wyzeruj bit, sygnalizujący trwanie nadawania
80 F5 SJMP SKOK skocz w tył i czekaj na zakończenie nadawania bajtu

Jak widać procedura nie ma końca. To tylko szkielet ale działający.
I to byłoby na tyle.
W początkowym pytaniu było, jak to przesłać podczerwienią. Dodatkowa elektronika potrzebna. Sam procesor nie wystarcza. Zakupić należy diodę nadawczą na podczerwień, dobudować stopień mocy by ostro świeciła i to tyle.
Pytania?
Odpowiem.

[ Dodano: 11-08-2005, 21:04 ]
Hm...
W notatniku napisane było dobrze, chodzi o spacje.
Po wysłaniu zlepiło się to i jest mniej czytelne. :(
Sorki..... moja wina. Nie mam wprawy w obsłudze PC. Chyba mi sie dostanie :)
Na Atarci czegoś takiego nie ma :)


_______________________________
w przypadku załączania kodu źródłowego proszę używać tagów [ code],
one w poprawny sposób formatują tekst na ekranie, dziękuje, tasza

Awatar użytkownika
Ertew
Użytkownik
Posty: 1418
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 12 sie 2005, 11:38

Bardzo przepraszam :oops: myślałem, że będzie to, choć trochę śmieszne :roll: .

sq6rr
-
Posty: 8
Rejestracja: 20 paź 2005, 11:47

Post autor: sq6rr » 02 lis 2005, 7:47

Witam..... nie przechwalając się też miałem (i mam) ATARI 65XE, ale magnet mi padł i zmarniałem na PC-cie :(
najłatwiej Twój temat załatwić na Bascomie........ print zmienna i już nadane....... zobacz helpa do Bascom

Ja zamieściłem temat komunikacji po RS-485 więcej niż 2 proców każdy MASTER-SLAVE. Zapraszam do tworzenia protokołu dla 2051

ODPOWIEDZ