Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Pętla for i wyrażenie if w C

pablos23 14 Kwi 2008 22:09 1459 4
  • #1 14 Kwi 2008 22:09
    pablos23
    Poziom 15  

    Witam.

    Chciałbym aby mój program wykonywał instrukcję w pętli for tylko gdy n=TAR i tylko wtedy gdy warunek ten jest spełniony dodawał do n wartość 10.
    Pętla resetowałaby się tzn. zmiennej n przypisywane byłoby 0 natychmiast po przekroczeniu 65536. Czy program ten napisany jest poprawnie?

    Code:
     long int n ;
    
      for ( n=0; n = TAR; n += 100 )
      {
      P1OUT ^= 0x01;
      }
      if ( n > 65536)
      {
       n=0;
      }

    0 4
  • Pomocny post
    #2 14 Kwi 2008 22:17
    mietekn
    Poziom 35  

    Powinno być:
    for ( n=0; n != TAR; n += 100 )
    lub (dla pewności bo TAR może nie być podzielne przez 100)
    for ( n=0; n < TAR; n += 100 )

    Dodano po 3 [minuty]:

    A może jednak nie tak. Nie do końca zrozumiałem co ma robić program, kiedy zwiększać itd. Opisz jeszcze raz działanie programu.

    0
  • #3 14 Kwi 2008 22:26
    pablos23
    Poziom 15  

    Program ma zmieniać wartość wyjściowego bitu poprzez instrukcję :
    P1OUT ^= 0x01;

    Chcę aby zrobił to tylko wtedy gdy TAR wynosi np. 0,10,20,30. Jednak wartość TAR osiąga zawsze 65535 po czym zlicza od nowa do tej wartości. Dlatego chcę resetować wartość n natychmiast po osiągnięciu tej wartości.

    0
  • #4 14 Kwi 2008 22:39
    don diego
    Poziom 32  

    Może chodzi Ci o coś takiego:

    Code:
     
    
      if ( TAR%10==0)
      {
      P1OUT ^= 0x01;
      }

    0
  • #5 14 Kwi 2008 22:42
    mietekn
    Poziom 35  

    Ja bym to zrobił ciut inaczej:

    for ( ; ; )
    {
    P1OUT=(P1OUT&0x0fe)+(TAR/10)&1;
    }

    Skutek będzie podobny co 10 taktów będzie zmieniany stan wyjścia.

    0