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 ?
WinAVR operacje na bitach
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ą.