Tablica LUT jest prostą tablicą przekształcającą wszystkie wartości wejściowe na odpowiednie wartości wyjściowe. Jednak ową operację "zalewania w prawo" można zrealizować chociaż by przez przesunięcia w prawo i alternatywę: v |= (v >> 1); v |= (v >> 2); v |= (v >> 4);
Przesunięcia bitowe będą najszybsze.
Nie potrzeba masy operacji :D piszesz W C NIE W BASCOMIE :) Twoja funkcja pot2 powinna wygladac tak: unsigned char pot2(unsigned char potega) { return(1<<potęga); } I po co tu for(); ? unsigned char getb(unsigned char liczba,usnigned char bit) { if (liczba&(1<<bit)... return(1);...
1. Jak klucz będzie zawsze taki sam jak dana wejściowa, to wystarczy na wyjście dekodera wyprowadzić klucz, ale chyba nie o to chodziło. 2. Aby odtwarzać wartości danej wejściowej na wyjściu, musisz zagwarantować, że każdej wartości wejściowej kodera odpowiada inny kod na wyjściu. Dla przykładu bit podlegający operacji AND, jeżeli w kluczu będzie 0,...
No oczywiście, ze jest proste: Zmienna.7 - dostęp do bitu 7 w zmiennej set Zmienna.5 - ustawienie jedynki na 5 bicie zmiennej. Jeśli odwrócisz logikę zapalania diod, to mogą Ci się przydać SHIFT i ROTATE
Ale jest EOR, który robi za XOR ;)
Wybór rodziny zależy od zadania: 1. C51 (8-bitów) pozwala bezpośrednio wykonywać operacje na pojedynczych bitach, ale tych bitów jest niewiele (RAM i peryferia). Stale są w produkcji różne uC z rodziny C51, które mają indywidualnie adresowane bity - obszar RAM od 0x20 do 0x2F i każdy SFR z adresem 0bxxxxx000 (np. ACC, B, IPx), czyli nie spełnia warunku...
Witam Nie wiem czy dobrze zrozumiałem, ale chyba oto Ci chodzi.
ja w sprawie wyświetlacza. led tez sie łatwo robi, trzeba tylko zrobić konwerter z bcd na 7-segment. i jest poza tym taniej, ale lcd ładniej wygłada
Witam W terminologi plc słowo ( word ) to po prostu zakres danych dokładnie 16 bitów czy 2 bajty. Operacje na bitach , bajtach czy wordach ( słowach ) są podstawą budowania programów na sterowniki . Przy zadeklarowaniu worda jako np integer staje się on liczbą całkowitą do np ustawienia czasu timera. Proponuję Koledze przyjrzeć się na początku ogólnie...
Witam mam pewien problem muszę przygotować do szkoły temat operacji na bitach do Asmeblera szukałem dużo w necie niestety ciężko cokolwiek tam znalesc udało mi sie znalesc takie rozkazy szukam osoby która wytłumaczy mi znaczenie tych rozkazów z góry dzięki :) http://img144.imageshack.us/img144/4285/... Post był raportowany, przeniosłem z...
Aby zmienić jakiś bit w zmiennej np bleble na przeciwny trzeba go potraktować XORem w taki sposób: char bleble; bleble=bleble^0b00000010; ^ - operator XOR
Według mnie zapis P1OUT = 0x12 ustawi bity 1 i 4 #define BIT0 (0x0001) zgodnie z definicja kilka linijek nizej gdzie bit0=1
Tak, ma. Proponowałem Ci we wcześniejszym poście przeczytanie strony AvrSide. Gdybyś mnie posłuchał to wszystkiego byś się dowiedział. Jest tam taki fragmencik: Avr-gcc nie posiada składni bezpośredniego dostępu do bitów zmienna.numer_bitu. Operacje na bitach wykonujemy używając iloczynu i sumy bitowej, np. dla bajtu: zmienna |= _BV(numer_bitu); //...
Witam, Piszę program w asemblerze na architekturę MIPS, który ma tworzyć kwadrat a w nim okrąg o średnicy długości boku kwadratu używając algorytmu Bresenham'a i zapisać w pliku bmp. Prawie skończyłem, ale w żadne sposób nie wiem jak zrobić symetrię 8-io bitowego bajtu względem osi pionowej między 4 i 5 bitem (przy numeracji od 1) używając prostych...
Diody świecą w określony sposób. Chcesz działać na 5 diodzie (liczymy od zera - 4 bit, sygnał D4, wartość 16). Zapalenie 5 diody: b:=portreadb(LPTdata); {odczyt portu} b:=b or 16; {operacja logiczna na bitach - ustawienie 1 na 4 bicie} portwriteb(LPTdata,b); {zapis wartości do portu} - 4 bit został...
(...) i tam jest napisane że ta wersja jest najlepsza więc z niej korzystam. Wiesz. Na płocie pisało d...a i facet do teraz drzazgi z f...a wyciąga. A co zrobisz z błędami, które generuje ta wersja? Co z nowszymi procesorami które przez te cztery lata się pojawiły? W czym problem zdefiniować sobie potrzebne makra albo nauczyć się "poprawniejszych politycznie"...
No ale operacji na bitach nie obchodzi to jaki masz znak. Generalnie operacji na bitach w ogóle typ nie obchodzi. 4\/3!!
ja się tam nie znam ... ale nikt nie odpowiada więc wtrącę moje dwa grosze.... stosując operator<<(rezystor) kompilator spodziewa się, ze będzie to wykorzystywane do operacji na bitach. Ty natomiast używasz to do wrzucenia wyniku w strumień. musisz przeciążyć operator strumienia a nie przesunięcia bitowego: (...) friend ostream & operator<<...
Założyłeś nowy temat, chociaż zagadnienie nadal dotyczy poprzedniego. [syntax=C] uint8_t tab[8] = {rejestr1.bit0, rejestr1.bit1, rejestr1.bit2,rejestr1.bit3, rejestr1.bit4,rejestr1.bit5,rejestr1.bit... [/syntax] Takie rozwiązanie nigdy nie zadziała, ponieważ tworzysz tablicę 8 bajtów, do każdego z nich przypisujesz jeden bit ze struktury...
spróbowałem "usprawnić" link kolego roksa dotyczącego wykrywania zbocza ze strony www.plcs.net.pl no i chyba teraz działa: [url=http://www.plcs.net.pl/index.php/Ku... NA BITACH - WYKRYWANIE ZBOCZA
Dla zapisu całego słowa do portu (w 16bitowych uK - 16bitów) nie ma znaczenia czy użyjesz LATx czy PORTx, ale wykonując operacje na bitach (pinach) portu lub nawet na całym porcie, typu: przesuwanie bitowe, dodawanie itp. to wykonywane jest to w sposób taki: odczyt-zmiana-zapis. Np. wykonując bezpośrednio po sobie rozkazy: bclr PORTB,1 bclr PORTB,2...
Nie znam akurat tego języka programowania ale mogę się wypowiedzieć jeśli dasz większy (o większej wartości) kwarc to pogram będzie szybciej działał może się nawet tak zdarzyć że program będzie ok i będzie działał ale nie zauważysz mrugania diody bo tak szybko będzie migała że zobaczysz tylko że ciągle świecenie radziłbym dać mniejszy niż większy kwarc....
Od bajtu CB zaczynają się wszystkie rozkazy Z-80 dotyczące operacji na bitach: ustawianie (SET), zerowanie (RES), testowanie (BIT) oraz przesywanie bitów (RR,RL,SR,SL i pochodne). Bajt DD dotyczy operacji na rejestrach IX, a FD na rejestrach IY. Stąd operacje na bitach rejestrów IX rozpoczynają się od DD CB, a na bitach rejestrów IY rozpoczynają się...
Takie operacje na bitach w strukturach nazywane są polami bitowymi. Jeżeli chcesz gdzieś zmieścić wartość 10 bitową, to przecież możesz przechowywać tę wartość w zmiennej o wielkości 16 bitów. Co do używania struktur z polami bitowymi i rzutowania na nie innych wartości, to zwróć uwagę, że są to elementy wrażliwe na kolejność przechowywania bajtów w...
Proponuję zapomnieć o sbi i cbi . To jest dobre w assemblerze ale w C można się na tym przejechać (w zależności od wersji kompilatora). Na stronie # Avr-gcc nie posiada składni bezpośredniego dostępu do bitów zmienna.numer_bitu. Operacje na bitach wykonujemy używając iloczynu i sumy bitowej, np. dla bajtu: zmienna |= _BV(numer_bitu); // ustawienie bitu...
Może np. tak :?: int x; char y; x=(x<<1)|(x>>15); //dla ROR zamień miejscami "sierżantów" ;) y=(y<<1)|(y>>7); Niestety bez "Carry" Piotr
W WinAVR możesz też robić operacje logiczne na bitach. ;) Jeśli chcesz ustawić bit, to musisz do niego dodać 1. Jeśli chcesz bit wyzerować, to musisz go pomnożyć przez 0, czyli np. PORTD |= (1<<2) // pin 2 w stanie wysokim PORTD &=~(1<<3) // pin 3 w stanie niskim Jak czegoś nie rozumiesz to pytaj. ;) Edit: Nie zauważyłem,...
Dziekuję bardzo za odpowiedzi ;) teraz czuje się o wiele lepiej w operacjach na bitach w C. Wszystko działa jako powinno. Zamykam temat.
Nie podałeś ja są przechowywane te dowolne liczby (chyba myślałeś o zmiennych). Dla jednobajtowych (8-bit) użyteczny jest skutek uboczny rozkazu "movf x,x" w postaci ustawienia bitu Z w rejestrze stausowym jezeli ruszony rejestr ma wszystkie bity równe 0. Jeżeli zmienna jest wielobajtowa to wystarczy wykonać "or" na wszystkich jej bajtach i jeżeli w...
Tak naprawdę tylko zmiana bitu z 1 na 0 jest objęta limitem, czyli zatkanie komórki. Zmiana z 0 na 1 nie obniża żywotności. W szczególnych przypadkach danych następujące kolejne 8 operacji ustawienia 1 na różnych bitach nie ma wpływu na żywotność EEPROM'a jeżeli się je oczywiście mądrze zrobi.
[syntax=c]ADCSRA = (1<<ADEN) //włącz ADC |(1<<ADPS0) //ustaw preskaler na 8 |(1<<ADPS1);[/syntax] W tej linijce "zamazujesz" wcześniejsze ustawienia ADCSRA [syntax=c]ADCSRA = (1<<ADFR); //wykonaj pomiar nieskończoną ilość razy[/syntax] Gdy chcesz ustawić tylko bit ADFR, bez zmiany pozostałych bitów stosuj taki zapis [syntax=c]ADCSRA...
Sprawdź sobie operacje na bitach, funkcje, struktury. Odpalasz pdf'a z notą i reszta wyjdzie w praniu ;)
od. 2 Rozumem że wybór tego procesora to kwestia prostego programatora (cena standardowego 89c51 x3 mnisza). Główną zaletą 89c51(89s8252) jest duża ilość literatury a sam procesor ma bardzo przydatne operacje na bitach które w innych procesorach rzadko występują. 0d 3. Rozumie że chodzi o wentylator z pctowy na prąd stały jeśli tak to za bardzo niema...
W C domyślnie operacje i literały są traktowane tak jakby były typu int. Stąd też wynik operacji pm*25*57 jest obliczany na 16-bitach, domyślasz się więc, że liczby 503025 nie da się tak zapisać. Promocja do uint32_t następuje dopiero tuż przed operacją przypisania do zmiennej wynik, kiedy obliczona wartość już jest obcięta. Dodaj do jednego z literałów...
Hej, Mozesz to zrobić np. tak #define SETBIT(x,y) (x |=(y)) // definicje operacji na bitach #define CLEARBIT(x,y) (x &= (~y)) #define CHECKBIT(x,y) (x & (y)) #define flaga_1 0x01 // definiujemy bity bajtu "flagi" #define flaga_2 0x02 #define flaga_3 0x04 #define flaga_4...
Dodam jeszcze jedną cegiełkę: AVRy mają specjalne rozkazy do atomowych operacji na bitach rejestrów układów peryferyjnych. Umożliwiają one ustawienie i skasowanie pojedynczego bitu: - sbi - set bit - cbi - clear bit Jeśli więc kompilator jest na tyle zdolny, że potrafi z nich korzystać to operacje ustawiające (lub kasujące) pojedyncze bity rejestrów...
Witam. Operatory logiczne są stosowane przy operacjach na bajtach, bitach, zmiennych liczbowych. Nie na operacjach zmiennych tekstowych. Poczytaj w help.
Zaczynam swoją przygodę z mikrokontrolerami Lepiej powiedz czy potrafisz bez zaglądania do internetu powiedzieć co robi ta funkcja: int foo(uint32_t x) { const uint16_t plt = 0b0110100010101100; x ^= x >> 16; x ^= x >> 8; x ^= x >> 4; return (plt >> (x & 0xF)) & 1; /* lub inna wersja */ int bar(uint32_t...
Nadal przeglądam dokumentację i nigdzie nie widzę informacji o zerowaniu bitu startu przed oczekiwaniem. I dlaczego należy operować całym bajtem, a niezalecane są operacje na bitach?
Możliwe, że tak, ale na razie nie bardzo rozumiem ten zapis. Znalazłem, że są to jakieś operacje na bitach ale jeszcze nie wiem jak to zinterpretować i użyć w projekcie. Czy mógłbyć jakoś rozwinąć, albo chcociaż podać czego szukać w języku Arduino?
Zdarza mi się pomylić instrukcje na zmianę bitu z instrukcją na wyzerowanie bitu(a dokładniej jakaś kombinacja tego). Bez opanowania operacji na bitach to ciężko raczej programować.
Przeczytaj ten artykuł [url=http://mikrokontrolery.blogspot.com... i zerowanie bitów, powinien pomóc w zrozumieniu operacji na bitach.
Witam Przymierzam się do zrobienia projektu na temat porównania sterownika VIPA 314ST z siemens 312C. Patrząc na ich parametry VIPA speed7: CENA: 4000zł -> 4 counters (100Khz) -> operacje na bitach 0.3-0.6 us -> operacje na słowach 1us -> timer/counter 12us -> 512kByte memory, expandable up to 2MByte memory, (50% program + 50% data) Semens 312c cena...
Czyli tak if(x>=10 & x<100)lcd.print... ? Jedno & czy dwa &&? A czy google ma awarię jakąś ? ;) AND ( czyli moje ORAZ ) to && . OR ( czyli LUB ) to || Pojedyncze & służy do operacji na bitach.
czy jednen bądź drugi warunek jest prawdą no właśnie, a tu zastosowałeś pojedynczy znak |, który stosuje się do operacji na bitach, do zastosowania OR w warunku służą dwa znaki |, jeśli Ci działa to ok, choć nie wiem dlaczego ;o
Jak już ci wcześniej napisałem, rozbijaj bajty na bity. Operacje bitowe działają na bitach. Operacja & (AND) - powoduje, że żeby odpowiedni bit wyniku był równy 1 oba bity operandów muszą mieć 1. Jeśli którykolwiek z operandów na danej pozycji ma 0 to w wyniku na tej pozycji też musi być 0. Np.: 0b0011 & 0b1101 = 0b0001 Operacja | (OR) sumuje bity,...
Wyłącz optymalizację kodu i wtedy pogadamy :) Jeśli pętla się nie wykonuje tylko program przechodzi za nią widać warunek jej wykoniania nie jest spełniony i trzeba go rozbic na kawałki aby sprawdzić co jest tego powodem a nie składać operacji na bitach i operacji logiocznych w całoś. Może byc że zapomniałeś o klamrach bo tego nie wiemy. A może kompilator...
Fajny programik, dzięki, sam algorytm zamiany z U2 znam, ale nie wiem jakich komend użyć do operacji na bitach tj. złanczanie bajtów, przesów bitów, czy dodanie bajtów ?
W najnowszym winavar /02.2005/ brak jest funkcji operacji na bitach sbi i cbi . Mozesz zrobic to tak: PORTB|=_BV(4) // bit ustawiony (1) PORTB&=~_BV(4) // bit wyzerowany pozdr.
nic to nie dało. sprawdzałem czy operacje na bitach nie są w jakiś sposób blokowane i oczywiście nie są (przynajmniej w Dev-C++). Nie wiem co może być przyczyną. Dlaczego ten sam kod wykonuje się inaczej na innych urządzeniach?
NdYAG zrobiłem tak jak napisałeś tylko że sam wcześniej na to wpadłem, i się udało, ale to była droga przez mękę. 50 bloczków do operacjach na bitach i liczbach musiałem wstawić żeby otrzymać cechę , mantysę i znak oraz złożyć z tego liczbe.
heh :) sorry!:) Tu nie ma co "sorry" , tylko trzeba sie wziąć do roboty. Programowania w C , to chyba sie dopiero zaczynasz uczyć , bo zamiast operacji logicznycz na poszczególnych bitach rejestru , ty uznajesz wyłącznie przypisywanie wartości do całego rejestru - makabra :| Ano , popatrz na to: I2C_start() { P2DIR =~ 3; //SDA=SCL=1 P2OUT...
mhy :D analizuję jeszcze operacje na bitach i w niektórych występuje np. PORTB jeżeli jest on zdefiniowany w ten sposób #define PORTB_SFR_IO8(0x18) to wynika z tego też, że ma on wartość 0x18 czyli przy przesunięciach bitowych mam używać takiego ciągu 00011000?
Witam, nie jest to możliwe. Poza tym, taka funkcjonalność nie jest ci bezwględnie potrzebna. Możesz sobie napisać funkcję która będzie to robiła, jako argument przyjmuje 0b11110000, rozbija je operacjami na bitach na 0b1111 i 0b0000 i ustawia na poszczególnych portach. Pozdrawiam, GSM
Niestety ale jest to bardziej skomplikowane niż proste operacje na bitach. Efekt echa wymaga opóźnienia sygnału (czyli przechowania próbek w pamięci na pewien czas) a następnie zmniejszenia amplitudy i dodania do bieżącego sygnału (operacje arytmetyczne) Każdy efekt można opisać wzorami matematycznymi i odpowiednie przekształcenia musi realizować mikroprocesor...
Mój sterownik na Atmega8 obsługuje 3 kanały PWM i i 3 ośmiobitowe rejestry '374 bazując jedynie na pętlach w których wykonują się operacje na bitach ze zmianą szybkości efektów i całość zajmuje niecałe 2kB pamięci. Odpowiedź jak inaczej już padła kilkakrotnie - użyj pętli.
Czy sekcje atomowe w ogóle są tu potrzebne. PortB jest w zakresie niskich adresów I/O więc operacje na pojedynczych bitach powinny zostać zoptymalizowane do SBI/CBI. Jak się zachowuje układ gdy wyłączysz te sekcje (czyli przestaniasz na chwilę blokować przerwania)?
Generalnie jest to coś w stylu wyświetlacza dot-matrix posiadającego kilka poziomów. Oczywiście głównym zagadnieniem jakie powinieneś zgłębić i wcześniej przećwiczyć na np: wyświetlaczach 7-segmentowych to multipleksowanie . Ponadto przydadzą Ci się operacje na bitach rejestrów poszczególnych portów mikrokontrolera.
Mam jeszcze pytanie dotyczace wysylania control i dds_word. Skoro control ma statyczne bity to jak wyslac tylko dds_word LSB lub MSB. Domyślam się, że to pytanie dotyczy bardziej operacjach na bitach niz konkretnie DDS'a ale nie mogę tego nigdzie doczytać. Uparłem się strasznie żeby to zrobić pomimo złozoności- jak na moją wiedzę.
Głównie chodzi o to że w nowych wersjach przestały obowiązywać makra cbi, sbi, inp, outp - mozna to obejsc albo przez ich własne zdeklarowanie albo załączenie biblioteki która jest w pakiecie. Dokładnie to mi chodziło w poprzedniej wypowiedzi. Co do kompilatora to głownie tutaj chodzi o operacje na bitach...
Ok, zgadza się, pomyliłem położenie bitu SC... Fajnie że działa, zostanie dla potomnych. Ale moim zdaniem należy usystematyzować zapis, chociażby w void init_ADS1100(void) bo inicjowanie ADS różnymi wartościami PGA, trybu pracy... ja bym to uściślił i trzymał się jednego w całym programie lub wykonywał operacje na bitach, nie będzie wtedy pomyłki.
Postanowiłem jednak pozostać przy standardowym pliku startup.s ;). Znalazłem w Keilu przyjemny edytorek i nie muszę grzebać w kodzie ASM. Z Operacjami na bitach daje sobie radę, także dziękuje ;). Co do tej klauzuli __arm, to nie działa bez różnicy czy dam to w deklaracji czy w definicji. W projekcie opcja 'ARM/Thumb interworking' jest zaznaczona.
UL to jawne zdefiniowanie stałej jako należącej do typu unsigned long (kiedy kompilator nie jest w stanie tego domniemać z wartości, jak w tym przypadku). Podobnie L to typ long a LL to typ long long (rozszerzenie gcc). Ewentualne wyjaśnienie szczegółów: W AVR gcc typ int ma 16 bitów. I taki jest domyślny typ stałej 1. Jeżeli kompilator nie promował...
No nie jestem biegly w assemblerze, ale z tego co widze, sa tam odpowiednie operacje na bitach (moze moja wersja kompilatora tego nie obsluguje, sprawdze). Mam w takim razie jeszcze tylko jedno pytanie: czy przy deklaracji zmiennej typu pole bitowe jest niezbedne slowo struct? (jak u Ciebie struct biciki pole) czy wystarczy deklaracja biciki pole? Dzieki...
Bitwait S1, set Przepisz proszę na CC++. Zakładam, że przez "Bitwait S1, set" masz na myśli instrukcję, która czeka na ustawienie (set) konkretnej wartości bitu, np. oczekiwanie na to, aż przycisk (oznaczony jako S1) zostanie naciśnięty. W językach niskiego poziomu, takich jak assembler, operacje na bitach są bardzo często wykorzystywane...
Mam pewną zagwozdkę: Jak kompilator potraktuje tę linię?: [syntax=c] if ((godzina1 == 2) & (godzina2 == 4)) [/syntax] Chodzi mi o to, że nie do końca jestem pewien ile ampersandów mam wpisać. Jeśli kompilator traktuje to jako operację na bitach - wystarczy jeden ampersand, a jeśli na wyrażeniach - muszą być dwa. Program kompiluje się bez błędu zarówno...
Przecież nie musisz korzystać z bit-bandu, Prawda jest jednak taka, że bit-banding przyspiesza i ułatwia operacje na poszczególnych bitach. Działanie jest czysto sprzętowe - jest to dodatkowa funkcja kontrolera pamięci w rdzeniu która po prostu mapuje konkretne bity pod konkretne adresy. 4\/3!!
O ile mi wiadomo, to zgodnie ze standardem ANSI C na temat umiejscowienia pól bitowych w strukturze nie można niczego zakładać. Jeśli więc potrzebujesz ścisłej zależności między numerem pola bitowego a odpowiadającą mu wartością bajtu/inta, to musisz zrezygnować z używania wbudowanych w C pól bitowych i stosować odpowiednie operacje na bitach, traktując...
Ale rozkaz AND operuje w assemblerze na całych rejestrach a ja muszę wykonać tą operacje na 2 sąsiednich bitach. Myślałem, żeby skorzystać z rozkazu SBRC tzn, jeżeli jakiś bit jest zerem to skaczemy do podprogramu który wpisuje zera na odpowiednie miejsca, i powtarzam to 4 razy. Jest może jakiś prostszy sposób?
Wspomniane "pomnóż logicznie przez 0xF" znaczy tyle co "wykonaj operację bitowego AND z 0xF". Wartość 0xF to ustawione cztery najmłodsze bity, jej efektem będzie to, że na tych bitach z odczytanej wartości nic się nie zmieni, a pozostałe zawsze będą zerami.
Czy w ATmega8 da się wykonywać operacje na pojednczych bitach w rejestrach i/o, np TWCR? Polecenie SBI TWCR, 6 skutkuje błędem error: Operand 1 out of range: 0x36, a SBR TWCR, 6 error: Invalid register.
Czy adresy przypisywane do modułów mają coś wspólnego z fizyczną kolejnością przyłączenia ich do sterownika? Tak, chociaż kolejność można zmienić w konfiguracji programu. Dokładna lokacje bloków można chyba sprawdzić gdzieś w "Parameter->PLC parameter (któraś zakładka) O ile przy zgrywaniu programu zaznaczona była opcja zgrania parametrów. Skąd wiesz,...
http://obrazki.elektroda.net/44_12451933... witam Kiedys kiedy kolejny raz szukalem pol godziny prostego bledu wynikajacego z niewlasciwej operacji na bitach postanowilem napisac sobie kalkulator binarny ktory niniejszym szanownemu gronu udostępniam. Mam nadzieje ze się przyda ;-) Link do pliku http://neuron.com.pl/pliki/binary_calc.z... w...
Mirekk36, Twój program już na pierwszy rzut oka bedzie działał, bo pobierasz dane z tablicy. Chciałem na początek poćwiczyć z tymi przesunięciami bitowymi... Tehaceole, strasznie to zagmatwane, ale wierzę, że działa :D Na razie jestem na tzw. oślej łączce, więc skupiam się na podstawach, proste operacje na bitach, konfiguracja portów itp. Widziałem...
a możesz napisać o co Ci chodzi?? Piszesz o jakimś języku maszynowym, ja nie widzę tu nic z języka maszynowego. Potem coś o Bascomie że Ci nie działa, ale przecież chcesz uczysz się maszynowego. Polecenia odnoszą sie do asemblera i prawdopodobnie o to Ci chodziło mov P1,#07h mov P1,#7 mov P1,#00000111b są równoważne jeśli chodzi o zatrzymanie licznika...
Ja nie chcę zmieniać szybkości transmisji, tylko odpowiednio opóźnić włącznie sygnału SCK względem danych. Matryca ma 8*8 diod led. Zasilanie wierszy jest włączane bezpośrednio z mikrokontrolera przez tranzystory. Kolumnami steruje rejestr przesuwający. Moim pomysłem było wysyłanie całego tekstu (dłuższego niż matryca) i włączanie/wyłączanie w odpowiednim...
No cóż muszę przyznać, że masz sporo racji... Jako jedyny przedstawiłeś rozwiązanie na forum... zgadzam się, że potrzeba na to trochę czasu... Nie mam sterownika S7-300, a mój Step7 jest bez symulatora i na razie trudno mi przyjrzeć się temu co napisałeś. No cóż sarkazm to sprawa wieku, niestety w tym okresie jest trudniej robić operacje na bitach itp......
Wszstko dlatego, iż zmienne typu Single są nieco odmiennie zapamiętywane w pamięci i mają wyjątki (np. NaN, QNaN, SNaN) które nie są liczbami, i każda operacja arytmetyczna z nimi powinna wywołać błąd operacji i jego zgłoszenie - a tego Bascom niestety nie obsługuje (jak i spora ilość innych kompilatorów). Operacja z jawną zamianą znaku jest bezpieczniejsza...
-jeden procesor 1 mips i wykonuje wszystkie zadania w jednej operacji Zadania takie jak dodawanie, mnożenie, operacje logiczne na bitach, skoki warunkowe, czyli wykonywanie określonego programu, a nie przełaczanie jakiegoś pinu! Wracając do Core i7 - wiesz w takim razie jak szybko taki Core i7 przełącza pin???
Jak byś chciał tylko PB0 ustawić jako wejście to trzeba tak a właśnie że nie. Co prawda nie robi tego jak to myśli autor ale cały port jest wejścia i jest ok A właśnie, że tak. Autor nie rozumie jak działają operacje na bitach w C i podałem pierwszą linijkę gdzie jest to widoczne. Dlatego zdanie rozpocząłem od "m.in." WSZYSTKIE problemy w tym kodzie...
Sterownik GE Fanuc Versamax micro. Środowisko programistyczne Proficy machine edition Hmm nie widzę problemu żeby przypisać do jednego wejścia kilku wyjść i w ten sposób wysterować żądane segmenty wyświetlacza. Tyle że jest to robota na piechotę a ja chciałbym zrobić w sposób bardziej profesjonalny używając jakiejś funkcji operacji na bitach lub napisać...
SBIC sprawdza, czy wybrany bit wskazanego rejestru IO jest skasowany i jeśli tak to pomijane jest wykonanie kolejnej instrukcji. Stąd też musisz do dowolnego rejestru MCU wczytać zawartość danego rejestru IO, wykonać operację testowania bitu i warunkowy skok.
Zgadzam się z kol. (at)BlueDraco . Zastosowanie bitbandingu do GPIO jest bezsensowne szczególnie że masz odpowiednie rejestry do takich operacji. Czyli widać tutaj, że najpierw jest odczytywana wartość rejestru ODR, wykonywana jest operacja or, To nie jest OR co już Ci pisałem. Jest ot XOR - zupełnie inna operacja. Bez wzgledu jak ją bedziesz chciał...
Ach te tendencyjne dyskusje... Pierwsza ATXMEGA która spełnia Twoje kryteria (128kB flasha) i to tylko częściowo (bo nie ma 2x8 wejść ADC, tylko w sumie 12, nie chce mi się szukać czy są dwa przetworniki czy jeden, do tego jeszcze pewnie część z tych 7 SPI jest współdzielonych z UARTami, więc wcale nie będzie 4 + 4) kosztuje w seguro 16zł, więc czemu...
GPIOA->CLR = 0x44444411; Jest bardzo czytelne, bo dokładnie wiesz, co po takiej instrukcji masz w rejestrze. Jeszcze bardziej czytełnie byłoby, gdybyś zamiast wartości liczbowej w instrukcji podstawienia użył stałych symbolicznych. Użycie operacji logicznych na rejestrach ma tę wadę, że czytając jedną instrukcję nie wiesz, co jest na pozostałych bitach...
Zgadza się. Rozkazy, które tylko odczytują wartość z portu odczyrują ją bezpośrednio z lini portu (np MOV A,P2 JB P1.1,etykieta) , natomiast rozkazy które powodują odczytanie, ewentualna modyfikację i zapisanie danych spowrotem do portu pobierają informację z buforowego rejestru wyjściowego portu (ANL P2,#22h, INC P2, CPL P2.4) Nie ma znaczenia czy...
Witam. Dzięki Łuk_F, takiej właśnie podpowiedzi potrzebowałem. Teraz widać czarno na białym, który bit i jak mi się zmieni na 1 i na 0. Wielkie dzięki. A jeszcze jedno naiwne pytanko jak zrobić w C/C++ kawałek który podsunie mi pomocniczą zmienna z np 1 na n-tej (zadanej) pozycji aby poddać to operacji OR?? Piszę,że w C/C++ ( żeby Tdv się już nie denerwował...
Bo w bascomie na bitach nie ma operacji "przypisz =". Są tylko komendy Setb i resetb... Nie wiem o którym Bascomie piszesz , ale np. w wersji 1.11.8.7 operacja przypisania działa. Piotrek
Sugeruję zapoznać się z instrukcją "SHIFT zmienna, kierunek, ile bitów przesunąć"... 8-) Wystarczy zapoznanie się z podstawową instrukcją "IF ... End If", SHIFT zostawiłbym na późniejsze udoskonalanie programu, jak autor tematu opanuje podstawowe instrukcje bascoma. Jednak nie zgadzam się z takim stwierdzeniem. SHIFT jest instrukcją jak każda inna...
Zrobiłem ten program zupełnie od nowa, hmm nie mam pomysłu i działam na "czuja" w oparciu o zbliżone programy. Poniżej wrzucam kod programu, który... nie działa, ale myślę,że jestem blisko i muszę doczytać na temat MUX-ów , ktoś ma jakieś pomysły jak rozgryźć te MUX-y dla 6- ciu wejść (PC0 do PC5) ? Jesteś uparty i niczego się nie uczysz, gdyż nie...
O bit-bandingu szukaj w dokumentacji ARMa. Chodzi o to, że w pewnym obszarze SRAM lub IO są bity, które w innym obszarze mają własne adresy 32bitowe Cortex™-M3 Technical Reference Manual http://obrazki.elektroda.pl/6277145000_1... Normalnie w ARM operacje na poszczególnych bitach w komórkach pamięci lub w rejestrach peryferiów odbywają...
Czy musze od razu budować system plików aby to odczytać. Nie można dostać się do tego tak "po bitach" :) System plików tylko z nazwy jest taki straszny :D W rzeczywistości to tylko kilka prostych operacji, które pomogą zlokalizować plik na karcie pamięci. Bo tak trzeba wiedzieć gdzie ten plik się znajduje. :)
kiedy z Zera logicznego 0 przechodzi do 1 funkcja wykrywania zbocza wystawia 1 przez jeden cykl zegarowy to samo jest gdy z 1 przechodzi do 0 wtedy też wystawia 1 przez jeden cykl i dalej jest zero. to jest proste. jeden impuls wystarczy do zapalania seta lub do jego resetu funkcja najczęściej wygląda jak -(P)- z 0 do 1 lub -( strzałka w górę) - z 1...
hmmm, no powiem szczerze, że na początku chciałem obejść się bez bibliotek tak jak to robilem przy AVR operacje na pojedyńczych bitach, ale szukająć czegokolwiek w internecie wydawało mi się, że wszędzie użyta jest powyższa biblioteka, jak również w książce Paprockiego, zdaje się, że autor posługuje się jedynie gotowymi funkcjami. Rozumiem w takim razie,...
Na pewno na pierwszym miejscu jest zestaw instrukcji. Na przykład możliwość łatwego adresowania tablic obiektów o rozmiarze większym niż 1 bajt powiedzmy w ARM, czy w MC68020 i wyższych, lub na przykład wykonywanie operacji na 16 i więcej bitach za pomocą instrukcji operujących na danych ośmiobitowych (dodawanie, odejmowanie, porównanie itd. z propagacją...
Tak, tylko dobrze by było przed takim nawet ćwiczeniem dokładnie poczytać w książce właśnie, po pierwsze o samych operatorach w języku C w tym o podwójnych operatorach. Ale także o operacjach logicznych na bitach no i o przesunięciach bitowych << >> . Po przeczytaniu tego i zrozumieniu - te zapisy powyżej przestaną być tajemnicze i nie będzie...
nie chcialbym byc zle zrozumiany: nie napisalem przeciez ze czyms sie ten jezyk rozni jak tylko uzyciem, no bo nie zgodzisz sie ze mna ze programowanie PC rozni sie od prograowania uP? i dodam jeszcze ze nie spotkalem sie w programowaniu Pc operacji logicznych na bitach, tylko na typie int, co w C jest wielkim ulatwieniem nie ma o co sie czepiac o pierdoly
A może by tak jakiegoś ARMa 7 z USB 2.0? Przeważnie mają obsługę DMA więc da się wykorzystać zalety szybszego transferu. ST ma najnowszę układy z rdzeniem Cortex M3 - cały kod może siedzieć we Flashu bo szybciej działa niż w innych ARMach flashowych, operacje na pojedynczych bitach itp. Poza tym są tanie, chyba tańsze od ATmega128. Może to będzie rozwiązanie...
InterlockedCompareExchange to podstawowa operacja udostępniana przez (każdy) procesor. Na 32 bitach działa zawsze, na 64 bitach zazwyczaj. Przy okazji dba o spójność cache, wstawia memorybarrier. Z tego buduje się bardziej złożone mechanizmy synchronizacji. Uważaj z takimi wnioskami "na przerwaniu wystarczy...". Współbieżność jest trudna. Efekty obecności...
operacje matematyczne operacje logiczne operacje obrazie
regulacja obrót szlifierka elektrozaczep brzeczy ademco express
Laser w nagrywarce LG RH277H: szczegóły techniczne Miernik Duwi DT321b - brak zakresu 10A?