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



Teraz jest 11 lut 2025, o 11:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 11 lis 2014, o 17:11 
Offline
Nowy

Dołączył(a): 06 lis 2014
Posty: 2
Pomógł: 0

Witam

Po obejrzeniu kilku poradników Pana Mirka i wcześniejszej chęci nauki programowania AVR w C zdecydowałem się na zakup blue booka na którego z niecierpliowścią czekam. W tym czasie zaczołęm przeglądać internet i analizować programy dostępne w internecie i tu do was pytanie drodzy użytkownicy:

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



Jak powinienem rozumieć PORTD & 0x80 (zamiast tego można zapisaać:PORTD == 0xff) oraz !PORTD (zamiast tego można zapisać: PORTD == 0x00). Chodzi tu o odczytanie czy na porcie są stany wysokie czy niskie, to wiem. Ale jak te wyrażenia działają bo nie za bardzo rozumię?



Ostatnio edytowano 11 lis 2014, o 17:31 przez Lobuz, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 17:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Popraw posta i wstaw kod w znacznikach syntax a nie w code topic7402.html

A co do twoich pytań to powinieneś poczytać o maskowaniu bitów. Albo obejrzeć Mirka poradniki, w których to porusza temat maskowania bitów
http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html
http://mirekk36.blogspot.com/2014/05/if ... -o-co.html

------------------------ [ Dodano po: 10 minutach ]

A tak w skrócie ten zapis PORTD & 0x80 to jest wyrażenie (jak wszystko w C). Wyrażenia w C mogą być prawdziwe (true) lub fałszywe (false). To wyrażenie można zapisać tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dzięki temu ładnie widać kiedy ono będzie prawdziwe. Wartość 0x80 lub 0b10000000 w tym wyrażeniu to tzw. maska bitowa, która ma ustawiony najstarszy bit. I teraz to wyrażenie będzie prawdziwe tylko wtedy kiedy w PORTD najstarszy bit równierz będzie miał wartość 1.

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

będzie spełniony jeśli najstarszy bit PORTD (bit nr 7 bo bity liczymy od zera) będzie miał wartość 1.

Natomiast to wyrażenie !PORTD będzie prawdziwe jeśli wszystkie bity tego portu, rejestru lub zmiennej będą miały wartość 0. Wykrzyknik w tym wyrażeniu to tzw. negacja logiczna. W przyszłości nie myl tego z negacją bitową, którą oznacza się znakiem tyldy ~.

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

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



Ostatnio edytowano 11 lis 2014, o 17:36 przez jacekk232, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 17:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Gdzie tam do maskowania bitów...

Koledze to na początek jak wyżej już napisano, radzę się zapoznać z zasadami forum, tudzież wstawianie kodu w odpowiednie znaczniki syntax.

Co to tematu to:
1. Niech kolega poczyta o operacjach logicznych
Operacje logiczne
Blog Pana Mirka - operacje bitowe i logiczne

2. Zapozna się z liczbami binarnymi i hexadecymalnymi:
Blog Pana Mirka - Liczby binarne podstawy
Blog Pana Mirka - Liczby heksadecymalne

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 17:42 
Offline
Nowy

Dołączył(a): 06 lis 2014
Posty: 2
Pomógł: 0

A co z wyrażeniem !PORTD? Jak powinienem to interpretować. Wyrażenie będzie "true" kiedy !PORTD ? Ale jak wygląda PORTD przed zanegowaniem ? Nie rozumiem tylko właśnie skąd sie bierze PORTD do "porównania" z !PORTD. Trochę chyba zagmatwanei pisze :P


Operacje logiczne typu OR, NOT, AND, XOR, NOR itd znam jeszcze ze szkoły to samo z HEX, DEC, BIN...

tu chodzi cyba raczej o specyfike "C"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 17:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Nie piszę tego złośliwie ale wydaje mi się, że zamiast teraz pytać o każdy szczegół najlepiej będzie jak poczekasz na Bluebooka. I jeśli po przeczytaniu go jeden raz czegoś nie zrozumiesz to wtedy ewentualnie dopytasz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 21:05 
Offline
Moderator
Avatar użytkownika

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

Lobuz napisał(a):
A co z wyrażeniem !PORTD? Jak powinienem to interpretować. Wyrażenie będzie "true" kiedy !PORTD ? Ale jak wygląda PORTD przed zanegowaniem ? Nie rozumiem tylko właśnie skąd sie bierze PORTD do "porównania" z !PORTD. Trochę chyba zagmatwanei pisze

Nie piszesz zagmatwanie - piszesz tak że widać że jeszcze kompletnie nie znasz podstaw - więc trudno ci na razie cokolwiek zrozumieć. Dlatego na pewno warto zacząć od Bluebooka i zapoznać się z OPERACJAMI BITOWYMI bo to dla ciebie słowo KLUCZ w tym przypadku. Także inne podstawy. Bez tego jak widzisz ciężko nawet na podstawie poradników wideo coś do końca zrozumieć. Ale to normalne bo poradniki to tylko uzupełnienie do książek.

Nie mniej jednak rzuć sobie okiem w czasie czekania na książkę na ten poradnik ok?
http://mirekk36.blogspot.com/2014/05/if ... -o-co.html

powinien też rzucić ci sporo światła

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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