Port szeregowy w mikrokontrolerze 80C552

Witam!

Pisze sprawozdanie laborki :) z takiego tematu jak w tytule. I mam problem z taka prosta rzecza jak kontrola parzystosci. Od czytania dokumentacji i rozmowy z prowadzacym mam juz straszny metlik. Glownie od rozmowy z prowadzacym.

Tytulowy mikrokontroler jest ustawiony na tryb 3 pracy poprzez odpowiednie wpisy w SCON. Tryb 3 czyli transmisja asynchroniczna i ramka zlozona z: bit_startu | 8 bitow danych | 9 bit ustawiany | bit stopu.

9 bit ustawiany przez bit TB8 z rejestru SCON. I teraz wysylamy do akumulatora wartosc ASCII jakiegos znaku np "G". Raz ustawiam w TB8 1 a raz 0 i na oscyloskopie ogladam sobie przebieg na linii TxD.

Powyzszy akapit realizuje taka petla:

DO0: clr TB8 (lub setb TB8) mov G, #'G' lcall TB sjmp DO0

I nie potrafie wytlumaczyc jak dziala ta kontrola parzystosci. Bit TB8 ustawiam zanim transmituje dane do akumulatora. Dla litery G ktorej kod ASCII dwojkowo ma cztery 1. Bit startu to 0. Bit stopu to 1. Wiec w zaleznosci od TB8 liczba jedynek bedzie rozna: parzysta lub nieparzysta.

Tak wiec czy o to chodzi ze przed wyslaniem kazdej danej programista ma wiedziec ile jedynek bedzie w ramce i odpowiednio dla kazdej danej ustawiac bit TB8 (troche chyba bez sensu dla wiekszej ilosci danych)? Czy jest glebsze zagadnienie (tak podejrzewam)?

Prosze o jakies sugestie.

pozdrawiam

Reply to
kap3lush
Loading thread data ...

Mon, 3 Jan 2005 12:49:39 +0000 (UTC) jednostka biologiczna o nazwie kap3lush snipped-for-privacy@no.spam.terror.org.pl> wyslala do portu 119 jednego z serwerow news nastepujace dane:

Dlaczego ? Ustawiasz dla kazdego bajtu.

Juz mam. Dlaczego bit parzystosci ustawiasz przed wpisaniem danej do akumulatora ? Przeciez jednostka ALU w 51 ma sprawdzanie parzystosci. Wrzucasz do akumulotora i odpowiedni bit w PSW mowi Ci czy jest parzystosc czy nie. Wystarczy go przekopiowac do TB8 i nadajesz. Ma to za zadanie prosta kontrole poprawnosci przesylanych danych. Odbierajacy mikrokontroler sprawdza parzystosc otrzymanego bajtu i jezeli sie ona zgadza z bitem parzystosci to uznaje ze bajt odebral poprawnie. oczywiscie metoda ta jest nieodporna na przeklamanie parzystej liczby bitow, na przeklamanie bitu parzystosci itp. Zwieksza to jednak nieznacznie pewnosc przesylania. Obecnie kontrola tak jest prawie nie uzywana.

Reply to
BLE_Maciek

BLE_Maciek zeznal:

Bo stosuje program zawarty w instrukcji do cwiczenia :)

Poza ustawieniem np predkosci transmisji program wyglada tak jak napisalem. To ma zwiazek zdaje sie z rejestrem SBUF. Zanim cokolwiek w nim wyladuje musi byc ustawiony bit TB8. No nic. Studiuje dalej :)

pozdrawiam

Reply to
kap3lush

Mon, 3 Jan 2005 17:31:53 +0000 (UTC) jednostka biologiczna o nazwie kap3lush snipped-for-privacy@no.spam.terror.org.pl> wyslala do portu 119 jednego z serwerow news nastepujace dane:

No to przeciez nie ma sensu zliczac jedynek programowo skoro odpowiedni mechanizm sprzetowy jest juz w procesorze. Wrzucasz do akumulatora. Kopiujesz parzystosc... No dobra. Nawet rusze du...za czesc ciala z fotela i zobacze w ksiazce jak to on sie w 51 nazywa ..... nazywa sie P (jak Parzystosc :-) ) i jest to bit PSW.0. Kopiujesz go do TB8 (bezposednio jednak sie nie da w tej cholernej

51-ce), trzeba tak:

mov C,P mov TB8,C

A nastepnie wrzucasz dana do SBUF, kasujesz TI i jazda :-)

Reply to
BLE_Maciek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.