Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 gru 2025, o 19:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 23 paź 2015, o 20:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 kwi 2015
Posty: 60
Lokalizacja: Bieruń Nowy
Pomógł: 0

Witam!
Jestem początkującym i mam takie pytanie:
Jaki stan (0 lub 1) jest domyślny w rejestrze PINA (na przykład), jeśli ustawię (a w zasadzie nie muszę) cały port A jako wejścia. W nocie aplikacyjnej pisze "N/A" to chyba oznacza, że nieokreślony?
Pytam się o to, ponieważ podczas używania obsługi klawisz występuje wyrażenie: !(PINA & 1<<PA0). Chciałem sobie te operacje rozpisać. No i tu nie wiem jak rozpisać PINA, bo nie wiem jaki tam panuje stan logiczny.

PS.: Wiem, że negacja bitowa "~" zamienia na przeciwne znaki (0 na 1 i odwrotnie). Ale czy negacja logiczna "!" zamienia prawdę na fałsz i odwrotnie? Wiem dobrze, że opisał to Pan Mirek w BB, który posiadam i przeczytałem, ale mało tam tego jest. Bo skoro tak, to jak w tym wyrażeniu wyjdzie np. 45 dziesiętne to negacja zmieni go w 0.


Proszę o pomocną odpowiedź. ;-)

_________________
Pomagać i prosić o pomoc ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2015, o 21:26 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

Gimbul napisał(a):
W nocie aplikacyjnej pisze "N/A" to chyba oznacza, że nieokreślony?

Pewnie że nieokreślony, gdy nie ma podciągnięcia linii do VCC albo do GND

Gimbul napisał(a):
Chciałem sobie te operacje rozpisać. No i tu nie wiem jak rozpisać PINA, bo nie wiem jaki tam panuje stan logiczny.

to zależy od ciebie panie .... jeśli podciągniesz wejścia do VCC to chyba normalne, że przy NIE WCIŚNIĘTYM przycisku będziesz miał 1 a przy wciśniętym będziesz miał 0

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2015, o 09:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 kwi 2015
Posty: 60
Lokalizacja: Bieruń Nowy
Pomógł: 0

Ale jak podciągam do VCC (np. pin PD3) to wpisuję jedynkę do rejestru PORTD, a nie do PIND. Więc jak to jest?
I pozostaje jeszcze moje drugie pytanie. ;-)

_________________
Pomagać i prosić o pomoc ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2015, o 11:19 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

Gimbul napisał(a):
Więc jak to jest?

Panie no masz Bluebooka, masz też to:
http://mirekk36.blogspot.com/2012/01/av ... stawy.html

a ty z uporem godnym podziwu będziesz wciąż pisał że jak podciągasz linię do VCC to widzisz to w PORTD ??? zastanów się dobrze i jeszcze raz przeczytaj chociażby ten link DOKŁADNIE

zwróć uwagę co jest rejestrem (uważaj!) WEjściowym a co wyjściowym

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2015, o 12:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 kwi 2015
Posty: 60
Lokalizacja: Bieruń Nowy
Pomógł: 0

Ale ja wiem, że PORTx to rejestr WYjściwoy, PINx - WEjściowy, a DDRx to rejestr kierunku.
Z tego co pan pisze to wynika, że jak ustawię (a właściwie nie muszę) pin na wejście to jak wpiszę do rejestru WYjściowego 1 to w rejestrze WEjściowym też on będzie widniała.
Ale dalej nie uzyskałemodpowiedzi na moje drugie pytanie. Wiem, że opisane jest w BB, ale jakoś nie jestem przekonany o jej działaniu.

_________________
Pomagać i prosić o pomoc ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2015, o 13:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

Gimbul napisał(a):
Bo skoro tak, to jak w tym wyrażeniu wyjdzie np. 45 dziesiętne to negacja zmieni go w 0.

Ciekawe jak ? ;) jak negacja logiczna zmieni 45 w False czyli w zero ;) ? wyjaśnij mi na podstawie czego dochodzisz do takich wniosków ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2015, o 14:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Myślę, że trochę mylisz "~" z "!". To dwa różne operatory i tak:
"~" to bitowa negacja
45 dziesiętnie to 00101101 binarnie
Jęsli więc a=00101101
to ~a = 11010010 lub 210 dziesiętnie
To rozumiesz.

"!" to operator negacji, który w połączeniu z argumentem tworzy wyrażenie, które jest prawdą lub fałszem!!!
Zatem !a jest równoważne z zapiszem (a==0), wyrażenie to będzie prawdą tylko i wyłącznie wtedy gdy a=0 i adekwatnie fałszem gdy a jest różne od 0.
W takim razie jeśli a=45 i zapiszesz if(!a) to wartość tego wyrażenia będzie fałszem, prawda?
Jeśli zapiszesz if(a) to wartość tego wyrażenia będzie prawdą.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czyli za pomocą if(!a) co jest równoznaczne z if(a==0) sprawdzamy czy argument jest równy 0
za pomocą if(a) co jest równoznaczne z if(a!=0) sprawdzamy czy argument jest różny od 0

Jaśniej? ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2015, o 21:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

mirekk36 napisał(a):
... wyjaśnij mi na podstawie czego dochodzisz do takich wniosków ?

Bazując na niejednej stronie dotyczącej programowania (niekoniecznie w C) śmiem twierdzić, że doszedłbym do takich samych błędnych wniosków. Ale dobrze, że pytasz. Jak pisał kolega wyżej. Mylisz operator negacji bitowej (~) z tym, o którym piszesz. Jeden zwraca zanegowaną binarnie liczbe (czyli najprościej mówiąc zamienia zera na jedynki, a jedynki na zera). Oczywiście liczba zer na początku negowanej liczby zależy od typu (8bit, 16bit etc). Natomiast ten drugi operator (!) zwraca informacje typu PRAWDA/FAŁSZ. Czyli niezero lub zero

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 paź 2015, o 10:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 kwi 2015
Posty: 60
Lokalizacja: Bieruń Nowy
Pomógł: 0

Dziękuję koledze anshar i koledze WoodPaker. Jaśniej się nie da.
Czyli zapis "!a" można zinterpretować tak: "czy 'a' to fałsz (czyli zero)?"
A zapis "a", bądź "a!=0" - "czy 'a' to prawda (czyli niezero ;-)).
Jeżeli tak, to zrozumiałem wreszcie tą negację.
Muszę przyznać, że bitowa jest o wiele prostsza i zrozumiałem od razu jak czytałem BB.
Jeszcze raz dziękuję.

_________________
Pomagać i prosić o pomoc ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO