Hallo!

Edit: Programmieren in C und zwar C18 von Microchip

Ich hab ne Frage bezüglich der Ansteuerung von einzelnen Port-Bits eines Registers. Also ich dachte das geht so ähnlich:

#define E PORTBbits.RB0
#define F PORTBbits.RB1

TRISB = 0x00; //Alle Bits von Port B als Ausgang verwenden

E = 1; //RB0 auf HIGH setzen -> Leuchtdiode leuchtet
F = 1; //RB1 auf HIGH setzten -> Leuchtdiode an RB1 leuchtet, Leuchtdiode an RB0 ist dunkel

Da liegt auch schon das Problem. Ich will das beide leuchten! Wieso leuchtet nach F = 1; nur mehr die an RB1 und die an RB0 nicht mehr? Ich hab ja beide Ausgänge auf HIGH geschalten!!
Bitte um Hilfe!!

Anbei noch der gesamte Code.

Code:
/** I N C L U D E S **********************************************************/ 
 #include <p18cxxx.h>  
 #include <stdlib.h>                      
 #include <delays.h>
 #include "waits.h"						// für die Warteschleife 
/** D E C L A R A T I O N S **************************************************/ 

#define LCD_TEST 1
#define PORT_TEST 1
#define WAIT_TEST 0

#define TRIS_LCD	TRISB
#define LCD_PORT	PORTB
#define LCD_STEUER_PORT PORTD 

#define D0	PORTBbits.RB0    //Dx .... Datenleitung x
#define D1	PORTBbits.RB1
#define D2	PORTBbits.RB2
#define D3	PORTBbits.RB3
#define D4 	PORTBbits.RB4
#define D5 	PORTBbits.RB5
#define D6	PORTBbits.RB6
#define D7	PORTBbits.RB7
#define RS      PORTDbits.RD0    //Register Select
#define RW     PORTDbits.RD1    //Read / Write
#define E	 PORTDbits.RD2    //Enable 


 /** Configuration ********************************************************/ 
 #pragma config FOSC = HS 			 	//Externer Takt
 #pragma config PWRT = ON 
 #pragma config BOR = OFF 
 #pragma config WDT = OFF  				//Watchdog Timer 
 #pragma config LVP = ON  				//Low Voltage ICSP 
 #pragma config CPUDIV = OSC1_PLL2		//CPU-Frequenz nicht dividiert, PLL durch 2;		
 #pragma config PLLDIV = 5
 
#pragma code 

void main(void)
{

#if WAIT_TEST
{
  int a=0;
  TRISB = 0x00;
  while(a<5)
  {
    LATB = 0x0F;
    wait_s(1);
    LATB = 0x00;
    wait_s(1);
    a++;   
  }
}
#endif
 
#if PORT_TEST
{
  int a=0;
  TRISB = 0x00;
  TRISD = 0x00;
  while(a<5)
  {
    D0 = 1;
    E= 1;
    wait_s(1);
    D1 = 1;
    wait_s(1);
    D2 = 1;
    wait_s(1);
    D3 = 1;
    wait_s(1);
    D3=0;
    D2=0;
    D1=0;
    D0=0;
    wait_s(2);
    a++;   
  }
}

}
Im Code stecken noch mehr Dinge drinnen. Die wait_s(x); sind in einem anderen C-File, aber funktionieren ganz gut. Also da wartet er x-Sekunden.

Ja ich hoffe euch fällt dazu was ein.

lg