Wertuję książkę Pana Jarosława Dolińskiego - "Mikrokontrolery AVR w praktyce" poświęconej programowaniu mikrokontrolerów w C.
1. W pierwszym listingu użyto komend cbi(PORTB,i); i sbi(PORTB,i); których nie przyjmuje WinAVR GCC. Używam najnowszej wersji WinAvR oraz z 2005 roku. W obu przypadkach ten sam błąd. Jak temu zaradzić.
2. Co to są pliki <io.h>?
Równolegle śledzę kurs C z Edw z 2005/2006 roku.
We wspomnianej książce spotykam następujący kod:
#include <io.h>
natomiast w kursie z EdW
#include <avr\io.h>
Czy obydwie składnie są poprawne i dotyczą tych samych plików?
			 
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięcbi(PORTB,i);
Moderatorzy:Jacek Bogusz, procesorowiec, r-mik, Moderatorzy
- 
				Jurek Szczesiul
- - 
- Posty:175
- Rejestracja:10 paź 2003, o 20:44
- Lokalizacja:Białystok
- Kontaktowanie:
zeby korzystac z tych makr dodaj wpierw:
#include <avr\sfr_defs.h>
cytat
i wybij sobie ze ..glowy
  
   
   
   
   
   
   
   
   
   
   
   
   
 
			#include <avr\sfr_defs.h>
cytat
Kod: Zaznacz cały
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
  		zmienna &= ~_BV(numer_bitu); //zgaszenie bitu
		zmienna ^= _BV(numer_bitu); // przełączenie bitu
		( _BV() - bit value to proste pomocnicze makro równoznaczne z jedynką przesuniętą w lewo o numer_bitu ).
		PORTC & 0x01;     // Testuj bit 0 portu C.
i wybij sobie ze ..glowy
 
   
   
   
   
   
   
   
   
   
   
   
   
 
Kod: Zaznacz cały
A na zapis podobny do funkcji jest śliczna funkcja 'inline', w pełni 
	sprawdzana przez kompilator, będąca jakąś tam sensowną całością. 
	zamiast 
		#define LED_OFF PORTB=!_BV(PB4) 
	poprawnie jest
		inline void LED_OFF(void) 
		{ 
		PORTB=!_BV(PB4) ; 
		}
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości


