STK500 Programmierhilfe

Gast #3581078
Lesenswert?

Hallo Jungs

Ich probiere momentan mit einem STK500 und ein ATmega88

Programmverlauf:

Wenn Taste PDC0 gedrückt wird, dann soll geprüft werden, ob alle 
EIngänge am PORTB eine 1 haben, ist das nicht der Fall sollen Die PINs 
in Port B, die keine "1" haben, detektiert und die passenden LED in 
PORTD ausgeschaltet werden.
ich denke die folgende Zeile funktioniert nicht[if (( StatusPortB != 
DiodeOk)) ] was amche ich da falsch.
Danke im Voraus

Programm:

#include <avr/signal.h>
#include <avr/sleep.h>
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>

#define BIT(x)  (1 << (x))
#define BITC(ADDRESS,BIT) (!(ADDRESS & (1<<BIT)))
#define BITS(ADDRESS,BIT) (ADDRESS & (1<<BIT))

#define SETB(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define CLEARB(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))


char StatusPortB, StatusPortC, DiodeOk ;
volatile unsigned int j, Diode_count ;

int main(void)
{

// configure I/O ports as INPUT
        DDRB = 0b00000000;
  PORTB = 0b11111111;
  DDRC = 0b000000;
  PORTC = 0b111111;

// configure I/O ports as OUTPUT
  DDRD = 0b11111111;
  PORTD = 0b00000000;

  while (1)
  {
    DiodeOk=0b11111111
    StatusPortB=PINB;
    StatusPortC=PINC;

    if (BITC(PINC,0))       // Wenn Taster PINC0 gedrückt ist, dann...
    {
      if (( StatusPortB != DiodeOk))  // wenn PORTB 0...bis 7 ungleich 1
      {
        for (j = 0; j <= 7; j++)
        {
          if  BITS(PINB,j)
          {
            SETB(PORTD,j);
            _delay_ms(100);

          }

        }
      }

      else
      {
        PORTD = 0b00000000;

      }

    }

  }

}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren