Hi Leute,
ich bin seit meinem letzten Post etwas weitergekommen und zwar nutze ich jetzt den pic18f2550 vom Microchip und die Programmieroberfläche von Microchip (MPLAB IDE - cc1
.
mein Problem ist nun, wie kann ich ein Bit aus einer "unsigned char" Variable abfragen? unsigned char bedeutet ja, dass ich einen Rahmen von 0 bis 255 habe... aber wie kann ich mir da das vierte von den 8Bit auskoppeln und dieses verknüpfen? Es geht um die Variable "value"...
Taster ist für den Integralgeber geschrieben und funktioniert soweit ganz gut!
Code:
#include <p18f2550.h>
//***************Variablen festlegen***************
char oldA, oldB, Power;
unsigned char value;
//***************Konfiguratioswort*****************
void config (void)
{
UCFG=0x08;
UCON=0x00;
TRISA=0b00000000;
TRISB=0b00000000;
#define SCKL_PGA PORTBbits.RB1
TRISC=0b00110100;
#define K1 PORTCbits.RC0
#define K2 PORTCbits.RC1
#define START PORTCbits.RC2
#define A PORTCbits.RC4
#define B PORTCbits.RC5
#define CS_PGA PORTCbits.RC6
#define SDI_PGA PORTCbits.RC7
}
//***************loop1*****************************
void loop1 (void)
{
int i;
for (i=0; i<118; i++);
}
//***************loop2*****************************
void loop2 (void)
{
unsigned short long i;
for (i=0; i<118909; i++);
}
//***************Start*****************************
void Start (void)
{
if (START && !K1 && !K2)
{
K1=1;
loop2();
loop2();
K2=1;
Power=1;
loop1();
while (START);
}
}
//***************Ende******************************
void Ende (void)
{
if (START && K1 && K2)
{
K2=0;
loop2();
loop2();
K1=0;
Power=0;
loop1();
while (START);
}
}
//***************Taster****************************
void Taster (void)
{
loop1(); //Verzögern
if (!((oldA==A)&&(oldB==B))) //nach Änderungen suchen
{
if (oldA&&!oldB&&A&&B&&(value<255)) //Regler nach rechts
{
value++; //lauter
loop1(); //Verzögern
while (B); //warten bis Signalende
}
if (oldB&&!oldA&&A&&B&&(value>0)) //Regler nach links
{
value--; //leiser
loop1(); //Verzögern
while (A); //warten bis Signalende
}
oldA=A; //Altdaten speichern
oldB=B; //Altdaten speichern
}
}
//***************LCD*******************************
void LCD (void)
{
}
//***************PGA*******************************
void PGA (void)
{
}
//***************main******************************
void main (void)
{
config(); //Konfigrautionswort aufrufen
oldA=0;
oldB=0;
value=0;
Power=0;
PORTA=0;
PORTB=0;
PORTC=0;
Sprungmarke:
if (!Power)
{
Start();
}
if (Power)
{
Taster();
Ende();
}
goto Sprungmarke;
}
Greetz
Edit von BASTIUniversal: Bitte, bitte, bitte die Code-Kästchen verwenden!!
Lesezeichen