Skocz do zawartości

[asm] at89s52 "reprezentacja" dużych liczb.


tangofox

Pomocna odpowiedź

Witam.

; Na wstępie dodam że nie do końca potrafie wyjaśnić o co mi chodzi ale mam gotową koncepcje jak ma to działać i brak pomysłu na wykonanie.

No to o co mi chodzi:

Czy można "spreparować" dodatkowy 32 bitowy rejestr (np. z DPTR oraz R2 i R3) w którym pojedyńczy bit reprezentowałby jedną linie wybranego portu tak aby po wpisaniu dowolnej 4 bajtowej liczby do tego rejestru odpowiednie linie portów przybrały odpowiednie stany?

Troche to dziwne i sam myślałem jak możnaby coś takiego zrealizować nie tracąc dużo miejsca w pamięci programu , ale na nic nie wpadłem.

Prosze o pomoc.

Link do komentarza
Share on other sites

No chyba zle to wytlumaczylem....

chodzi mi o "stworzenie" czili niejako przypisanie zakresu adresów dla nowo zdefinowanego rejestru np. R32 tak aby : najmłodsze 8 bitów tego rejestru/obszaru pamięci odpowiadało P0.0 - P0.7 , kolejne 8 bitów P1.0 - P1.7 , następne 8 bitów P2.0 - P2.7 , a ostatnie P3.0 - P3.7. A więc używając następującej składni wszystkie linie wszystkich portów przyjełyby stany wysokie. No to cos takiego jest możliwe czy niezabardzo?

 mov R32,#FFFFFFFF;

Chciałem zrealizować to za pomocą DPTR oraz 2 rejestrów ogólnego przeznaczenia , jednak nie potrafie tego zrealizować. Jeżeli ktoś spotkał się z czymś podobnym lub zna inną metode (jakieś wymyślne dzielenie liczby przez podprogram ?) to bardzo prosze o pomoc.

Link do komentarza
Share on other sites

Nie jestem pewien, ale to co chcesz zrobić powinno się dać uzyskać za pomocą DMA, ale oczywiście wykorzystywany przez ciebie mikrokontroler nie posiada DMA. Pozostaje ci więc po prostu przepisywanie tego ręcznie. Napisz sobie podprogram który będzie przepisywał zawartość czterech rejestrów na porty. Wtedy za pomocą jednej instrukcji call będziesz miał przepisaną liczbę 32 bitową na cztery porty.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

mov R32,#FFFFFFFF;

Ja nie jestem pewien czy na poziomie kompilacji nie wyrzuci błędu z powodu za długiego słowa. Jeżeli nie to da się to łatwo zrobić w prostej funkcji. Każdy stan portów jest zapisywany w komórce pamięci. Bardzo możliwe że możesz to sprawdzić w dokumentacji. Pewnie nie będą koło siebie tylko będą rozdzielone kilkoma słowami pamięci również odpowiadającymi jakiejś konfiguracji portu. Za pomocą wskaźników będziesz mógł jedym movxem rozesłać wszystkie polecenia do odpowiednich portów. tak dla rozjaśnienia. Wpisujesz do komórki pamięci NIE twoje 0FFFFFFFFH(ta komórka pamięci nie może być używana przez program ani stos) a zamiast tego w tej komórce po kolei znajdują się wskaźniki do portów od 0 do 3. Chcesz zmienić konfigurację to wysyłasz jakąś wartość na adresy poddane w komórkach. Jak podasz początkowy adres to on automatycznie pobierze kolejne 3 dla kolejnych portów

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.