[8051] transmisja synchroniczna

Feb 03, 2007 3 Replies

Powitanko,



MOV SCON,#&H0 MOV SBUF,#&H41 !bb: JNB TI,bb'



Powinno wyslac synchronicznie 41 w hexie. Ale procek milczy jak zaklety:-( Zastawione pulapki wskazuja jakby nie wystawial flagi Ti. Cos robie nie tak? Kompilator to Bascom (moze tu jest problem?).



Pozdroofka, Pawel Chorzempa


Powinno. W każdym razie mi się tak swojego czasu udawało. Tylko ja do tego miałem jeszcze obsługę przerwań.

Milczy, czyli stale "1" czy stale "0"?

Czy wpisane uprzednio 1 do portów TxD, RxD?

Czy może otoczenie procka wymusza stabilny stan linii portu szeregowego?

Jeśli jest aktywne przerwanie od portu szeregowego, to po ustawieniu TI następuje wywołanie przerwania. Jak w obsłudze przerwania nie wyzerujesz TI, to po wyjściu z przerwania program od razu wskoczy do niego z powrotem! Tak więc program nie wisi w pętli programu głównego, tylko w nieustannym wywoływaniu przerwania.

Jak zaczynałem zabawy z portem szeregowym w '51, to pchałem w port na okrągło jakąś stałą, a wynik obserwowałem na oscyloskopie. Procek był niczym nieobciążony. Działało.

Pozdrowienia, MKi

Powitanko,

Nie ma przerwan, na wszelki wypadek wylaczylem wpisujac 00 do IE (ale i tak po resecie defaultowo sa wylaczone). Caly port 3 tez jest na "1". Doszedlem do tego, ze wysylyny jest 1 bajt i procek zamiera na petli sprawdzaajcej stan Ti (program sklada sie z kilku wyslan roznych bajtow i to wszystko).

Pozdroofka, Pawel Chorzempa

Ja bym mimo wszystko włączył w ten test przerwania. Więcej można się dowiedzieć (choćby sam fakt wywołania przerwania). Ja przynajmniej zawsze, z założenia, używam przerwań przy współpracy z czymkolwiek zewnętrznym (Tak mnie nauczyli, urządzenia zewnętrzne zawsze z przerwaniami. Ale to było 20 parę lat temu i dotyczyło egzotycznej raczej dziś maszyny MERA 300.)

Pozdrowienia, MKi

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required