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.
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.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++; } } }
Ja ich hoffe euch fällt dazu was ein.
lg







Zitieren

Lesezeichen