Bascom 8051 i RS-232

Komputer wraz z oprogramowaniem wspomagającym projektowanie stał się częścią życia elektronika.
Icy10
Raczkujący użytkownik 1
Raczkujący użytkownik 1
Posty: 6
Rejestracja: wt 16 gru 2003, 10:23

Bascom 8051 i RS-232

Postautor: Icy10 » czw 18 gru 2003, 22:33

Moze moj problem ktos pomoze rozwiazac .
Potrzebuje wyslac przez port Com taki ciag danych
&h00
Waitms 10
&h10
&h81
&h00
&h02
&h00
&h32
&hFF
&h3B
Wszystkie dane wysylane sa portem szeregowym (pierwszy LSB) z predkoscia
transmisji rowna 9600bps, z bitem parzystosci i dwoma bitami stopu.
Pisalem to komendami :
Open "Com3.0:9600" For Binary As #1
Put &H00
Waitms 10
'Put #1 , &h10
'Put #1 , &h81
'Put #1 , &h00
'Put #1 , &h02
'Put #1 , &h00
'Put #1 , &h32
'Put #1 , &hFF
'Put #1 , &h3B
'Close #1
Niestety to nie dziala ,urzadzenie zewnetrzne nie reaguje .
Chodzi o procesor 2051
Moze nie takich komend uzywam , juz sam nie wiem .
Happy Hunting.

Gość

Postautor: Gość » pt 26 gru 2003, 23:49

'*************************************************************
'Parametry trans. RS 9600baud,8bit.danych,bez parzystości,1bit stopu

'*************************************************************
$regfile = "89C2051.dat"
$crystal = 11059200
$baud = 9600
Dim X As Byte , Y As Byte
Printhex &H00
Waitms 10
Restore Dta
For X = 0 To 7
Read Y : Printhex Y
Next
End
Dta:
Data &H10 , &H81 , &H00 , &H02 , &H00 , &H32 , &HFF , &H3B
'*************************************************************
'w swoim programie używasz rozkazów dotyczących tzw.programowego UARTA.Skoro
'masz 2051 to nie ma takiej potrzeby bo ma on sprzętowy UART więc szkoda tracić
'czas procesora na coś co może odbyć się automatycznie.W ukladzie trzeba
'zastosować konwerter do poziomów Rs232.Powyższy programik można sprawdzić
'w symulatorze Bascom.W zależności od potrzeby można też użyć Print, Printbin
'Cześć

Icy10
Raczkujący użytkownik 1
Raczkujący użytkownik 1
Posty: 6
Rejestracja: wt 16 gru 2003, 10:23

Postautor: Icy10 » sob 27 gru 2003, 10:37

No tak robilem tez tak jak napisales , i dalej echo
mozliwe ze to przez brak tego konwertera RS-232 jak bys mugl cos wiecej na jego temat napisac , chodzi o to czemu to musi byc pszeciez on ma juz wbudowany ten konwerter zdaje sie i interesuje mnie jeszcze czemu napisales
"bez parzystosci , 1 bit stopu . " ja pisalem wyzej inaczej nie wiem czy sie pomyliles czy to celowe .
Dzieki za pomoc .
Happy Hunting.

Gość

Postautor: Gość » sob 27 gru 2003, 17:41

W procku nie ma RS232 tylko UART czyli układ transmisji szeregowej z poziomami TTL.Standard RS232 ma inne poziomy dla "zera" i
"jedynki" logicznej.Gdybyś chciał dokonać transmisji między dwoma prockami 2051 to konwersja nie byłaby potrzebna.Ty jak się domyślam
chcesz komunikować się ze swoim 2051 przy pomocy komputera PC
poprzez COM1 lub COM2 a on działa w standardzie RS232 dlatego musi być np.
MAX232 lub układ na tranzystorach.Potrzebny jest też odpowiedni kabel
(przeplot między pin2 pin3 oraz zwarte pin4-pin6 i pin7-pin8).
Najlepiej poszukaj w sieci dowolnego urządzonka z RS aby popatrzeć
jak to ma wyglądać.
Powodzenia!

Gość

Postautor: Gość » sob 27 gru 2003, 17:49

Zapomniałem jeszcze o parzystości i bicie stopu.Napisałem tak
bo to najczęściej spotykany tryb transmisji i ja takiego używam.
Odbiornik i Nadajnik muszą pracować w tym samym trybie
Cześć!

Icy10
Raczkujący użytkownik 1
Raczkujący użytkownik 1
Posty: 6
Rejestracja: wt 16 gru 2003, 10:23

Postautor: Icy10 » ndz 28 gru 2003, 14:50

Czyli tak.
Odbiornik to nie komputer tylko urzadzenie ktore nie jest sterowane sygnalami RS-232 tylko TTL (tak troche w miedzyczasie zaczerpnalem wiedzy )czyli konwerter staje sie zbedny , chodzi tylko o to ze nie bardzo wiedzialem co to ten UART jak on pracuje i jakimi sygnalami .Dzieki za pomoc , bardzo mi pomogles , a ja dalej nie moge se poradzic z problemem robilem tak jak pisales wykozystując sprzetowy i programowy UART i cisza . Moze nie za dobrze ustawilem konfiguracje COM w opcjach ,a to wazne , sygnaly wylatuja jakies tam , nie wiem jakie ale lecom bo podlaczajac piezzo , szczela se . Czesc
Happy Hunting.

Gość

Postautor: Gość » pn 29 gru 2003, 0:34

Na Twoim miejscu zrobiłbym tak:
wykonanie układu z 2051 + max232 i połączenie z terminalem BASCOM.
Korzyści będą takie:
-dzięki niemu poznasz praktycznie transmisję RS
-jeżeli uda Ci się nawiązać transmisję ograniczysz pole poszukiwań do
odbiornika(w tej chwili nie wiesz czy problem z nadawaniem czy z odbiorem).
Ważna jest odległość nadajnika od odbiornika.Przy większych stosuje się
RS232.Na jaką odległość można łączyć bez konwertera niestety nie wiem.
Powodzenia!

Gość

Postautor: Gość » czw 19 sie 2004, 15:03

Proponowałbym kupić nowy procek (i podłączać go przez konwerter), bo jak podłączyłeś go do RS'a bezpośrednio to mógł się przestrzelić (uszkodzić).
Pzr.

Tom

8051 ASM i port RS232/485

Postautor: Tom » ndz 03 kwie 2005, 21:15

Jak miło, że ktoś tu pisze w ASM bo mam problem. Otóż piszę sobie programik, który ma gadać z PC po RS. Niby nic wielkiego, literatury mnóstwo, przykładów jeszcze więcej tylko, że.... Programik (a właściwie tylko istotny fragment, który zamieszczam) działa pięknie w środowidku Keil -> pokazuje jak pięknie tyka zegarak i jak ślicznie zasuwają "iksy" do portu. Niestety po wsadzeniu go do kostki układ milczy.... HEEEEEELLLP !
*************** START *********************
org 0000h ; start wykonania -> inicjalizacja np. RS-232
ljmp init
org 0013h ; procedura obsługi przerwania zegarowego T1
ljmp zegar1
org 0023h ; procedura obsługi przerwania portu szeregowego
ljmp portRS

org 0100h
; procedura obsługi zegara T1
zegar1:
reti
; procedura obsługi portu szeregowego
portRS:
clr TI
clr RI
reti
; program główny
; procedura inicjalizacyjna urządzenia
init:
; timery
mov TCON,#00000000b
mov TMOD,#00100010b ; zegar w trybie 2, autoładowanie z TH1
mov TH1,#0FDh ; baud dla prędkości 9600
mov TL1,#0FDh
clr TF1 ; znacznik przepełnienia
; port
mov SCON,#01010000b ; tryb 1, 8 bit z zegarem T1
; przerwania
mov IE,#00010111b ; zezwalam na przerwanie zegara T1, RS i All
; priorytety przerwań
mov IP,#00000001b
; słowo sterujące układem czasowo-licznikowym
mov TCON,#00000000b ; zerowanie wstępne
xrl PCON,#10000000b ; podwojenie szybkości transmisji SMOD->1
ljmp start
start:
setb TR1 ; dołączenie sygnału zliczanego do T1
setb EA ; zezwolenie na przerwania
mov A,#'X' ; wysyłam tylko literkę 'X'
dalej:
mov R2,#0FFh
loop0:
mov R3,#0FFh ; \
loop1: ; |
mov R4,#0FFh ; |
loop2: ; > opóźnienie o FF x FF x FF razy
djnz R4,loop2 ; |
djnz R3,loop1 ; |
djnz R2,loop0 ; /
setb TI ; wysłanie znaku
mov SBUF,A ; znak w A
ljmp dalej ; rób to w kółko
end
**************** STOP *********************
Kto znajdzie błąd ?

jang

Postautor: jang » wt 05 kwie 2005, 11:03

Niezrozumiałe rzeczy piszesz w swoim programiku. Zapraszam na gg:4535579. Jang


Wróć do „Oprogramowanie wspomagające projektowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika. i 3 gości

cron