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!!