PIC 16F1827 - Problem mit Latch

Gast #2027352
Lesenswert?

Hallo,

Ich bin gerade dabei für mein momentanes Projekt die 
Fernbedienungs-Empfangsroutine zu schreiben. Dabei bin ich beim Testen 
ob das ganze auch so tut wie es soll auf ein seltsames (oder bin ich 
einfach nur so doof?) Problem gestoßen. Doch erstmal was ich gemacht 
habe:

Das kleine Testprogramm unten bekommt über einen Interrupt ein Phillips 
RC5 Datenpaket (noch Manchestercodiert) sowie ein Readyflag. Hier 
ersetzt durch die beiden Konstanten.
Die erste If() soll eine LED einschalten, sobald der gewünschte Befehl 
gekommen ist und wieder ausschalten sobald was anderes kommt. 
Funktioniert auch.
Die dann folgende For Wiederholung soll das in "receive" empfangene 
Datenpaket seriell über ein Portpin ausgeben. Funktioniert für sich 
selbst auch.
1
  
2
volatile long unsigned int receive;
3
volatile bit ready;
4

5
void main(void)
6
{
7
  ...
8
  unsigned char i, i2;
9
  long unsigned int buffer, out;
10
  static bit bit_test;
11
  ...
12
  ...
13
  ready = 1;
14
  receive = 0b10010110101001010110010101;
15
  while (1 == 1)
16
  {
17
    if (ready == 1)
18
    {
19
      buffer = receive;
20
    //  ready = 0;
21
      if (receive == 0b10010110101001010110010101)
22
        LATB5 = 1;
23
      else 
24
        LATB5 = 0;
25
    }
26
    //wait some time...
27
    for (i=0; i<100; i++){}
28

29
    out = buffer;
30
    //serial output on portb.2
31
    for (i = 0; i < 30; i++)
32
    {
33
      //increase pulse width
34
      for (i2=0; i2<10; i2++){}
35

36
      bit_test = out & 1;
37
      if (bit_test == 1)
38
        LATB2 = 1;
39
      else 
40
        LATB2 = 0;
41
      out = out >> 1;
42

43
    }
44
  }//while  
45
}//main

Problem ist nun, sobald in der for Wiederholung die else Bedingung 
ausgeführt wird, werden in LATB alle Ausgangspins gelöscht und LATB2 
entsprechend der Zuweisung gelöscht bzw. gesetzt. Hääää??? Warum verhält 
sich ein BCF 0xd, 0x2 hier anderes als woanders im Quellcode???
Ich hoffe, ihr habt einigermaßen verstanden, wo mein Problem liegt...

Das ganze Projekt habe ich als Zip angehängt, bitte mich nicht hängen, 
ich weiß das es noch etwas chaotisch ist...
Compiler ist der Hi Tech V9.71a Lite und IDE ist MPLAB 8.56

Danke schonmal für eure Hilfe!

Gruß Martin
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren