Interrupt der seriellen schnittstelle

Gast #4001938
Lesenswert?

Hallo,

frage zum Interuppt der seriellen Schnittstelle beim 8051.
Ich will gerne ein Array über sie serielle Schnittstelle versenden.

Das erste Versenden starte ich in main nach der initialisierung.
Ich habe das beispiel so aus dem Keil C51 Baldischweiler seite 202 
kapitel 10.

Ich verstehe nicht ganz wann er genau in den Interrupt der seriellen 
Schnittstelle springt.

void main ()
{

initialisierung....

//First send
ACC = uc_massage[uc_offset];   // Determine parity bit
TB8_bit = P_bit;               // Copy parity bit in TB8
SBUF = uc_massage[uc_offset];  // Begin to send
uc_offset++;

while(1);

}


void Serial_ISR () org 0x0023 ilevel 0{

  TI_bit = 0;                             // Reset TI-flag
  if( uc_massage[uc_offset] != 0 ){
      ACC = uc_massage[uc_offset];        // Determine parity bit
      TB8_bit = P_bit;                    // Copy parity bit in TB8
      SBUF = uc_massage[uc_offset];       // Begin to send
      uc_offset++;                        // Increment index of the 
array
  }
}



Angenommen uc_massage hat zwanzig zeichen. Nach dem ersten SBUF befehl 
in main ist doch der sendevorgang gestartet.
wird uc_offset++ in main noch durchgeführt?
Bleibt er solange in der ISR bis alle zwanzig zeichen gesendet sind?
Bei mir habe ich dann keine endlosschleife sondern weitere befehle die 
aber erst weiter abgearbeitet werden sollen wenn alle zweichen gesendet 
sind.
Gast #4002004
Lesenswert?

Wir wissen jetzt grad nicht um welche Baudrate wir reden. Bei 9600 Baud 
kommt ein byte pro Millisekunde. Dh alle Millisekunde ist der UART 
Buffer leer und muss nachgefuellt werden. Zwischendurch hat ein 
Controller bei 1MHz jeweils 1000 Befehle fuer Anderes.

Bei den Mir bekannten controllern kommt der Transmitter Empty uebrigens 
wenn das letzte Bit des Bytes drauusen ist. Das Stopbit kommt nachher 
noch. Ist aber hier egal.

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