WinAVR operacje na bitach

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
jareks91
Użytkownik
Posty: 157
Rejestracja: 15 kwie 2005, 13:30

WinAVR operacje na bitach

Post autor: jareks91 » 15 sie 2008, 22:00

Witam,

Mam taki problem...jak sie wykonuje operacje na bitach? i na zmiennych bitowych? Slyszalem ze ANSI C nie przewiduje tego typu dzialań ale przecież mikrokontoler ma obszar dostępny bitowo oraz polecenia operujące na bitach wiec marnotrastwo z tego nie korzystać...

Nie chodzi mi o samo kasowanie i ustawianie bitu bo to mozna zrobić tak PORTB |= 1<<1;
ale np o toggle bitu na danym pinie.
Zalezy mi na tym aby napisać program obslugi LCD gdzie poszczegolne piny są rozsiane po roznych portach i pinach tak żeby w naglowku mozna bylo podwać numer pinu i aby program dzialal poprawinie np cos w stylu:

#define D4 PORTB.7
#define D3 PORTE.2
itp

Czy ktoś ma na to rade ?

[ Dodano: 2008-08-15, 23:23 ]
Inaczej mowiąc chce wykonać operacje:

PB1 = PD2 ; jak to wykonać nie niszcząc pozostałych bitow w portach i żeby kod nie byl za bardzo rozrośniety ?

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 15 sie 2008, 22:26

Trudno będzie Ci osiągnąć to w WinAVR. Obsługę LCD na dowolnych pinach można zrealizować poprzez określenie dla każdej linii osobno rejestru kierunku, danych, numeru wyprowadzenia itp. Podejrzyj jak ja to zrobiłem : http://radzio.dxp.pl/hd44780/ . Nie twierdze, że sposób najlepszy, ale najprostszy i łatwy do przeniesienia na inne mikrokontrolery i kompilatory. Nie ma sensu pchać się w jakieś niestandardowe rozwiązania, to się zemści - zazwyczaj w przypadku zmiany mikrokontrolera czy kompilatora, a w przypadku WinAVR nawet w przypadku zmiany wersji pakietu na nowszą.

ODPOWIEDZ