Mój problem polega na tym iż skopiowałem pewien program z kursu który na 100% działa.
program działa bez problemów
Czy ktoś wie jakiego rodzaju ma być zmienna i lub jak ją zadeklarować (może brakuje jakiś nawiasów, znaczników, czegokolwiek akurat w tej wersji kompilatora) aby można było zapisać to tak:
....
for (rodzaj_zmiennej i;........)
{....
przyzwyczaiłem się do tego rodzaju zapisu i chciałbym w ten sposób deklarować zmienne ale niestety nie wiem jak to zrobić
Czy ktoś zna tajemnice o która mi chodzi?
Kody źródłowe, proszę umieszczać w znacznikach[code]
[zumek]
#define F_CPU 1000000L
#include <avr/io.h>
#include <avr/delay.h>
int main(void)
{
/* Wszystkie linie portu D będą wyjściami */
DDRD = 0xFF;
/* Początek nieskończonej pętli */
for(;;)
{
PORTD = 0x0f; /* Ładuje do PORTD wartość 0x0f*/
/* opóźnienie 1 sek. */
for(unsigned int i=0; i<100; i++) _delay_ms(10);
PORTD |= 0xf0; /* ustawia bity nr. 4..7 */
for(unsigned int i=0; i<100; i++) _delay_ms(10);
PORTD &= 0xaa; /* zeruje bity nr. 0,2,4,6 */
for(unsigned int i=0; i<100; i++) _delay_ms(10);
PORTD ^= 0x0f; /* "odwraca" bity nr. 0..3 */
for(unsigned int i=0; i<100; i++) _delay_ms(10);
PORTD = 0x00;
/* opóźnienie 2 sek. */
for(unsigned int i=0; i<200; i++) _delay_ms(10);
}
}
W kompilatorze (korzystam z kompilatora WinAVR-20050214) wyskakuje błąd:
led.c:15: error: 'for' loop initial declaration used outside C99 mode
led.c:18: error: redefinition of 'i'
dla każej funkcji for.
------------------------------------------------------------------------
Po zadeklarowaniu zmiennej 'i' przed funkcjami for, tzn tak:
#define F_CPU 1000000L
#include <avr/io.h>
#include <avr/delay.h>
int main(void)
{
/* Wszystkie linie portu D będą wyjściami */
DDRD = 0xFF;
/* Początek nieskończonej pętli */
for(;;)
{
unsigned int i;
PORTD = 0x0f; /* Ładuje do PORTD wartość 0x0f*/
/* opóźnienie 1 sek. */
for(i=0; i<100; i++) _delay_ms(10);
PORTD |= 0xf0; /* ustawia bity nr. 4..7 */
for(i=0; i<100; i++) _delay_ms(10);
PORTD &= 0xaa; /* zeruje bity nr. 0,2,4,6 */
for(i=0; i<100; i++) _delay_ms(10);
PORTD ^= 0x0f; /* "odwraca" bity nr. 0..3 */
for(i=0; i<100; i++) _delay_ms(10);
PORTD = 0x00;
/* opóźnienie 2 sek. */
for(i=0; i<200; i++) _delay_ms(10);
}
}
program działa bez problemów
....
for (rodzaj_zmiennej i;........)
{....
przyzwyczaiłem się do tego rodzaju zapisu i chciałbym w ten sposób deklarować zmienne ale niestety nie wiem jak to zrobić
Kody źródłowe, proszę umieszczać w znacznikach[code]
[zumek]
