Gast
#941369
Hallo zusammen!
Ich bin gerade ein wenig beim Experimentieren und hier auf ein problem
gestoßen.
Ich will ein Relais (P2.0) über zwei Taster ein und ausschalten. Dies
fünktioniert bereits so wie es soll.
Des weiteren will ich andere willkürliche Zustände (x auf P2.1 - P2.7)
mitsimulieren.
Mein Problem: ist das Relais aktiviert, so wird x nicht mehr
kontinuierlich ausgegeben. Ist es auschgeschalten schon.
Der Controller ist ein 89C51RD2.
Vielleicht hat ja wer einen Tipp für mich,
Besten Dank, Mike
Code:
#include "reg51f.h"
#define Relais 0x01 // Relaisausgang am Port
sbit Relais_ein = P1^0; // Ein Taster
sbit Relais_aus = P1^1; // Aus Taster
unsigned char rel_state = 0; // Relais Status: 0 = aus, 1 = ein
unsigned char x;
unsigned char y;
void main (void)
{
while (1)
{
// Taster abfragen:
if ( !Relais_ein ) rel_state = 1; // Relais ein. Nur Status!
if ( !Relais_aus ) rel_state = 0; // Relais aus. Nur Status!
// Simulator für andere Pinfunktionen (x)
x++;
if ( rel_state == 1 ) x = x & ~Relais;
// Relais ein: Alle unverändert nur Bit 0 Low (0)
else x = x | Relais;
// Relais aus: Alle unverändert nur Bit 0 High (1)
P2 = x;
// Warteschleife
for ( y = 0; y < 255; y++) x=x;
}
}