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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.