Gast
#4001938
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.