RCREG1 löschen (PIC18)

OP #2753197
Lesenswert?

Hallo zusammen,
wie kann ich das RCREG1 löschen? Ich möchte, dass man 8 Zahlen eingeben 
kann und diese dann in ein Array geschrieben werden. Bei mir ist jetzt 
aber das Problem, dass wenn ich einen Wert eingebe, er diesen in alle 
Felder schreibt. Hier der QT:

Das auslesen der USART- Schnittstelle:
1
char getcUSART(){
2
  if(RCSTA1bits.FERR == 1){
3
    return 0;
4
  }
5
  if(RCSTA1bits.OERR == 1){
6
    RCSTA1bits.CREN = 0;
7
    RCSTA1bits.CREN = 1;
8
    return 0;
9
  }
10
  return RCREG1;
11
}

Das schreiben der Arrays:
1
  for(unsigned int i = 0; i < 8; i++){
2
    while(received != '0' && received != '1'){
3
      received = getcUSART();
4
    }
5

6
    if(received == '0'){
7
      code[i] = 0;
8
    }
9
    else{
10
      code[i] = 1;
11
    }
12

13
    received = 0;
14
    RCREG1 = 0;
15
  }

Ich bedanke mich shconmal für die Hilfe.

David
Gast #2753455
Lesenswert?

Das RCREG lässt sich nur durch auslesen des Registers löschen. Ein BCF 
RCREG ist quasi sinnlos. Steht noch ein Byte im Empfangsregister geht 
das Statusbit automatisch wieder auf 1. Im übrigen ist der RX-Buffer 
zwei Byte tief.
OP #2753626
Lesenswert?

Ok, danke euch beiden. Meine Lösung sieht nun so aus:
1
  for(unsigned int i = 0; i < 8; i++){
2
    while(!PIR1bits.RC1IF){}
3
    received = getcUSART();
4

5
    if(received == '0'){
6
      code[i] = 0;
7
    }
8
    else{
9
      code[i] = 1;
10
    }
11

12
    received = 0;
13
    RCREG1;
14
    PIR1bits.RC1IF = 1;
15
  }

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