-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!go
blin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrad
a.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: "J.F." <j...@p...onet.pl>
Newsgroups: pl.misc.elektronika
References: <oa9bgq$7fd$1@news.icm.edu.pl>
In-Reply-To: <oa9bgq$7fd$1@news.icm.edu.pl>
Subject: Re: sdcc i at89c51 - dostęp do pinu "na około"
Date: Tue, 14 Mar 2017 19:48:57 +0100
MIME-Version: 1.0
Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=original
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Newsreader: Microsoft Windows Live Mail 16.4.3528.331
X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
Lines: 87
Message-ID: <58c83b1c$0$5163$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.27.166.155
X-Trace: 1489517340 unt-rea-a-01.news.neostrada.pl 5163 83.27.166.155:61446
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.misc.elektronika:714730
[ ukryj nagłówki ]Użytkownik "Atlantis" napisał w wiadomości grup
dyskusyjnych:oa9bgq$7fd$...@n...icm.edu.pl...
>Natknąłem się jednak na pewne problemy... Próbuję przeportować pewną
>bibliotekę do obsługi przycisków (debouncing + wykrywanie długiego
>wciśnięcia). Kod podpatrzony w jednej z książek pana Kardasia, z
>paroma
>moimi modyfikacjami.
Atlantisie - na moj gust, jak bedziesz takie ambitne struktury robil
... to ci pamieci zabraknie :-)
Duza ta klawiatura ? Regularnie zrobiona ?
Moze regularne metody lepsze.
>Generalnie sprowadza się do tego, że mam strukturę opisującą
>przycisk:
typedef struct key {
unsigned char *port;
unsigned char pin:3;
unsigned char state:4;
* ciekawe czy ten kompilator sobie radzi z tym :3.
Skoro deklaracje przyjmuje, to niby powinien.
unsigned int timer;
void (*push_proc)(void);
void (*long_proc)(void);
} key_t;
>Struktura jest inicjowana za pomocą funkcji key_init(), która
>przypisuje
>argumenty do struktury przekazanej przez wskaźnik, czyli wygląda to w
>ten sposób:
>key_init(&button2, &P0, 0, funkcja, funkcja);
>Kolejne argumenty oznaczają: adres struktury, adres portu, numer pinu
>w
>porcie, wskaźnik na funkcję wykonywaną po krótkim wciśnięciu
>przycisku i
>wskaźnik na funkcję wykonywaną po przytrzymaniu przycisku.
>Potem stan przycisku jest cały czas sprawdzany wewnątrz funkcji
>key_update(), która przyjmuje za argument adres struktury.
Ciekawe, na ile to optymalne. Przy kilku przyciskach ... moze ..
>NIE DZIAŁA natomiast następująca konstrukcja:
>key_press = !(*(key->port) & (1<<(key->pin)));
Zlikwiduj testowo te :3, :4. Albo sobie wydrukuj ... albo wrzuc jak
kompilator to na assembler zamienil.
>Strukturę inicjuję podając dane właściwego portu i pinu, a pomimo
>tego
>wciskanie przycisku nie jest widoczne.
>I teraz pytanie: co jest nie tak. Czyżbym w sdcc i/lub at89c51 nie
>mógł
>przesyłać w ten sposób informacji o porcie?
89c51 czy 89c52 ?
Bo tu chyba jest pies pogrzebany
http://www.8052.com/tutaddr.phtml
Indirect addressing always refers to Internal RAM; it never refers to
an SFR.
MOV R0,#99h ;Load the address of the serial port
MOV @R0,#01h ;Send 01 to the serial port -- WRONG!!
This is not valid. Since indirect addressing always refers to Internal
RAM these two instructions would write the value 01h to Internal RAM
address 99h on an 8052. On an 8051 these two instructions would
produce an undefined result since the 8051 only has 128 bytes of
Internal RAM.
A aby zaadresowac taka nieokreslona komorke pamieci, kompilator musi
skorzystac z adresowania posredniego.
Swoja droga on tak to napisal, jakby pod 8051 bylo tak samo ... prawde
mowiac nie pamietam, wydaje mi sie, ze mozna bylo adresowac porty @Rn.
>2) Działa także konstrukcja key_press = !(P0 & (1<<NUMER_PINU))
a ta kompilator moze skompilowac wstawiajac adres na stale.
J.
Następne wpisy z tego wątku
- 14.03.17 19:54 Janusz
- 14.03.17 21:03 Atlantis
- 14.03.17 21:09 Zbych
- 14.03.17 21:21 a...@m...uni.wroc.pl
- 14.03.17 21:34 Atlantis
- 14.03.17 22:02 Atlantis
- 14.03.17 22:29 Atlantis
- 15.03.17 01:42 J.F.
- 15.03.17 01:46 J.F.
- 15.03.17 07:51 Atlantis
- 15.03.17 08:57 Atlantis
- 15.03.17 09:57 Piotr Gałka
- 15.03.17 10:21 J.F.
- 15.03.17 10:27 J.F.
- 15.03.17 10:50 Piotr Gałka
Najnowsze wątki z tej grupy
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
- Wentylator zabija zasilacze LEDek?
- Re: Kompensacja mocy biernej przy 230VAC
- Totaliztyczny obowiązek naprawy maszyn i urządzeń
- Niby uziom ale nie
- Położyłem dwa telefony obok siebie
- Przekaźnik na szynę DIN (?)
- Taśma LED
- Jak odróżnić myjki wibrujące od ultradźwiękowych.
- Ledy na wyłączniku czasowym błyskają
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
Najnowsze wątki
- 2025-04-17 Wszedł absurdalny zakaz fotografowania w Polsce - nowe prawo ogranicza wolność obywateli
- 2025-04-18 Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- 2025-04-18 Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- 2025-04-17 Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- 2025-04-17 Wszedł absurdalny zakaz fotografowania w Polsce - nowe prawo ogranicza wolność obywateli
- 2025-04-17 Izraelskie więzienia: Tortury, gwałty, brutalność wobec Palestyńczyków, w tym dzieci
- 2025-04-17 Co miesiąc 1800 złotych dla policjanta na spłatę kredytu.
- 2025-04-17 Warszawa => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-04-17 Cła Trumpa już w sądzie federalnym USA
- 2025-04-16 Jaki trojfazowy licznik tuya lub podobny?
- 2025-04-16 co ile czasu rysa?
- 2025-04-16 co ile czasu rysa?
- 2025-04-16 cytat: "Za prezydentury Władimira Putina co najmniej 37 dziennikarzy zostało zamordowanych z powodu swojej pracy."
- 2025-04-16 Przyczyny
- 2025-04-16 Re: "Wazelina": Donald Tusk trzęsie giełdą jak mały Donald Trump [do -9%]