-
Data: 2017-02-24 12:06:51
Temat: Re: Programowanie AT89Cxx51
Od: "J.F." <j...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Użytkownik "Piotr Gałka" napisał w wiadomości grup
dyskusyjnych:o8p09b$l8c$...@n...chmurka.net...
W dniu 2017-02-23 o 21:07, Zbych pisze:
>>> Wydaje mi się, że skoro P0_7 jest już samo w sobie adresem pinu
>>> (czyli
>>> wskaźnikiem na pin) to może uda Ci się obejść bez wskaźników na
>>> ten
>>> wskaźnik.
>>> Warunkiem jest żeby C potrafiło korzystać z rozkazów assemblera z
>>> adresowaniem bitowym.
>> Adresowanie bitowe w '51 wymaga podania numeru bitu od razu w
>> rozkazie,
>> nie ma trybu adresowania pośredniego przez rejestr.
>
>Całkiem być może, że nie ogarnąłem sedna zagadnienia.
>Rozumiałem, że:
>Atlantis chce przechowywać wskaźniki na piny. A ponieważ we
>wcześniejszych jego pracach (z innymi procesorami) wymagało to użycia
>jakichś wskaźników w C to teraz też myśli jak zrobić sobie wskaźniki
>na te numerki określające bitowe adresy pinów.
>Z jego wypowiedzi rozumiałem, że dotychczas przechowywał wskaźniki na
>piny, a nie wskaźniki na wskaźniki na piny.
>---- koniec opisu jak ja to rozumiałem ----
>Chciałem jedynie zwrócić uwagę, że _być_może_ szuka czegoś co ma
>gotowe, że _być_może_ wystarczy posłużyć się (i przechowywać) te
>bitowe adresy pinów.
Ale wlasnie nie mozesz.
Mozesz napisac w C np
P0_7 = 1
i miec nadzieje, ze kompilator skompiluje z uzyciem wlasciwych
rozkazow.
Ale nie mozesz napisac
wskaznik = P0_7 ;
....
*wskaznik = 1 ;
bo ... nie ma takiego rozkazu, ktory moglby kompilator uzyc, aby
potrafil zaadresowac bit o numerze w jakims rejestrze podanym.
wiec nie da sie np zrobic funkcji ktora poczeka na nacisniecie
klawisza,
cos w rodzaju
void function wait_for_key(int keynr)
{
....
}
(zadziala jako macro)
Nie da sie tez zrobic petli sprawdzi bity po kolei itp ...
>Nigdy nie używałem C dla żadnego mikrokontrolera. Wyobrażałem sobie,
>że C musi być trochę rozszerzane pod dany procesor.
>Czyli zakładałem, że w C dla 51-ki powinna być jakaś funkcja
>biblioteczna typu setbit() przyjumująca jako parametr jego adres i
>potrafiąca przetłumaczyć to na assembler nawet jak nie ma adresowania
>przez rejestr.
No i zakladam, ze C jest rozszerzone (w odpowiednio ambitnym
kompilatorze), i kompilator potrafi to skompilowac ... o ile adres
jest znany w czasie kompilacji.
Inaczej, to pozostaja dwie mozliwosci:
1) przygotowujemy sobie odpowiedni rozkaz w pamieci i wykonujemy go.
cos typu
setbit: ; A zawiera nr bitu
mov setbitr+1, A
setbitr: setb 0
ret
ha, ha - zycze powodzenia na 8051, z jej rozdzielonymi pamieciami
:-)
ale jesli system zawiera dodatkowy RAM, ktory bedzie widoczny jako
pamiec zewnetrzna i programu jednoczesnie, to moze by sie nawet udalo
(np na tym DScostam z bateryjka).
2) przygotowujemy sobie siec rozkazow:
setb 0
ret
setb 1
ret
setb 2
ret
....
i wyliczamy sobie to ktorego adresu skoczyc ... imo - niemal
niedopuszczalne, ale jak trzeba, to trzeba :-)
J.
Następne wpisy z tego wątku
- 24.02.17 21:00 AlexY
- 26.02.17 11:32 Atlantis
- 26.02.17 13:47 AlexY
- 26.02.17 15:48 Dariusz Dorochowicz
- 26.02.17 16:26 AlexY
- 26.02.17 17:17 Dariusz Dorochowicz
- 26.02.17 20:21 Atlantis
- 26.02.17 20:43 AlexY
- 26.02.17 20:50 Dariusz Dorochowicz
- 26.02.17 21:02 Atlantis
- 26.02.17 21:43 Zbych
- 26.02.17 23:21 Dariusz Dorochowicz
- 27.02.17 06:42 Atlantis
- 27.02.17 09:49 J.F.
- 27.02.17 09:59 J.F.
Najnowsze wątki z tej grupy
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
Najnowsze wątki
- 2025-02-01 Śmierć mózgu a narządy do pobrania
- 2025-01-31 A niektórym to naprawdę zależy na ekologi w miastach LPG POWRACA ;-)
- 2025-01-31 Lublin => Programista Delphi <=
- 2025-01-31 Łódź => Programista NodeJS <=
- 2025-01-31 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-01-31 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-31 Gdańsk => iOS Developer (Swift experience) <=
- 2025-01-31 Kraków => UX Designer <=
- 2025-01-31 Warszawa => Data Engineer (Tech Leader) <=
- 2025-01-31 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-31 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-31 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-31 Warszawa => Full Stack .Net Engineer <=
- 2025-01-31 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-31 Gdańsk => Programista Full Stack .Net <=