Viskas nusiskaito 1 baitu, t.y. 8 kojos is karto. Jei reikia pakeisti asmeniskai, tenka nuskaityti bukle, matematiskai pakeisti ir vel grazinti visa baita atgal. Po viena koja nesikeicia nors ta paprasciausiai padaro visokie makrosai. DDR = kryptis, 1- tai isejimas, 0 -iejimas. irasyti PORT = reiksme at koju. Jei uzprogramuotas isejimas, tai gaunasi normalus 0 ar 1, jei uzprogramuotas iejimas, pajungiamas pull-up arba rodos nieko. nuskaityti PORT reiksme, tai gauti paprasciasia kas uzprogramuota ant to porto, bet ne jo fizine reiksme. PIN -nuskaityti kas FIZISKAI yra ant porto. << tai paslinkimas bitu per tiek vietu kiek parasyta. Yra makrosas _BV(n) kuris atitinka (1<<n). Makrosai PB1 ar PB4 tai siaip nesamone. Kad paprasti useriai nesipainiotu. Jei ivaldei matematika, galima rasyti tiesiogiai reiksmes. Jei i porta reikia irasyti 1 ir 4 bita,tai uztenka irasyti 2^1+2^4 arba pasinaudoti makrosais. Visa sita pornografija supaprastina preprocesoriaus ir neitakojo programos ilgiui ir jos veikimo greiciui. Vienisiems bitams rekomenduoju pasidaryti makrosus: #define bit_togle PORTC ^= _BV(5) #define bit_high PORTC|= _BV(5) #define bit_lo PORTC &= ~_BV(5) Sie makrosai pasirupina kitu bitu bukle. On 2014.09.18 22:31, Shadowed wrote: > Vienu zodziu skaitau datascheeta ir neaisku man toks dalykas: > > The following code example shows how to set port B pins 0 and 1 high, 2 > and 3 low, and define the port pins from > 4 to 5 as input with a pull-up assigned to port pin 4. The resulting pin > values are read back again, but as previously > discussed, a nop instruction is included to be able to read back the > value recently assigned to some of the pins. > > unsigned char i; > ... > /* Define pull-ups and set outputs high */ > /* Define directions for port pins */ > PORTB = (1<<PB4)|(1<<PB1)|(1<<PB0); > DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); > /* Insert nop for synchronization*/ > _NOP(); > /* Read port pins */ > i = PINB; > ... > > Ok, tai PORTB nustato zema arba auksta lygi atitinkamose kojose, bet > kodel cia raso kad PB0 ir PB1 aukstam, o PB2 ir PB3 zemam lygiuose ? Ar > neturetu buti portai PB0, PB1 ir PB4 auksti, o PB2, PB3 ir PB5 zemi? > tada su DataDirectionRegisterB - raso, kad nuo PB4 iki PB5 pinu yra > inputai, nors man atrodo kad cia inputai turetu buti PB0, PB1, PB2 ir PB3. -- Bye, Levas -- http://www.vabolis.lt