Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Danke für deine Antwort. Ich habe nun den korrekten Wert (1Fh) in Register S0BG geschrieben. An > dem Problem hat sich jedoch nichts geändert. Ich habe mich darauf einmal kurz mit > den gemachten Einstellungen befasst und bemerkt, dass hier ja die Interrupts bei Ein- und Ausgang > von Daten aktiviert werden. Diese haben natürlich nur dann eine Wirkung wenn IEN gesetzt wird. > Aus den Interrupt-Routinen im disassemblierten OS bin ich jedoch leider noch nicht ganz schlau geworden. > > Gibt es eine Möglichkeit auf diese zu verzichten? Während des Bootvorgangs werden diese doch auch > nicht benötigt. > > Hier mal mein Testcode: > <asm> > $case > $segmented > $model(medium) > $extend > $nomod166 > $stdnames(reg164ci.def) > regdef R0-R15 > > > code_s SECTION CODE WORD AT 00h > assume DPP3:code_s > assume DPP2:system > pa4cc2 PROC FAR > ;Initialisierung > DISWDT ;Watchdogtimer beenden > MOV STKOV,#0FA00H ;Stackgrenzen initialisieren > MOV STKUN,#0FC00H > MOV SP,#0FC00H ;Stack-Pointer initialisieren > MOV CP,#0FC00H ;Context-Pointer initilisieren > BFLDL BUSCON0,#37H,#15H ;Buskonfiguration > BFLDH BUSCON0,#12H,#00H > BFLDL SYSCON,#04H,#04H ;Systemkonfiguration > BFLDH SYSCON,#0FFH,#00H > EINIT ;Ende der Initialisierung > EXTR #1 ;extended Register > MOV DP1L,#0FFh ;P1L.6 auf Ausgang > > MOV S0CON,#8011h > MOV S0EIC,#00h > MOV S0RIC,#057h ;Interrupt enabled > MOV S0TIC,#056h ;Interrupt enabled > > MOV S0BG,#01Fh ;Baudrate 192000 > > ;BSET IEN ;Interrupt enable > > JNB T3EUD, cmd_Mode ;Hosttaste gedrückt? > > CALL gotoSeg3 > BSET P1L.6 ;P1L.6 setzen > endl: JMP endl ;Endlosschleife > gotoSeg3: CALLS 3,0 > JMP endl > cmd_Mode: MOV P1L,#080h > > recvCMD: > JNB S0RIR, recvCMD ;Auf Kommando-Byte warten > MOV R7,S0RBUF ;Kommando-Byte in R10 sichern > BCLR S0RIR ;Request-Flag wieder zuruecksetzen > > ;Kommando-Byte auswerten > CMP R7,#0 > JMPR cc_EQ, null > CMP R7,#1 > JMPR cc_EQ, eins > CMP R7,#2 > JMPR CC_EQ, zwei > > MOVB RL0,#0 ;wird ausgeführt wenn keiner der obigen Fälle zutrifft > CALL echo ;Echo ausgeben > > > err: MOV P1L,#11111100B > JMP err > > null: MOV P1L,#1110000B > JMP null > eins: MOV P1L,#1000000B > JMP eins > zwei: MOV P1L,#100000B > JMP zwei > > > ;Routine zum senden eines Echos > echo: > MOV P1L,#0FFh > JNB S0TIR,echo ;Ueberpruefen, ob Request-Flag > ; bereits gesetzt ist > MOV P1L,#0AAh > BCLR S0TIR ;Request-Flag wieder zuruecksetzen > MOVBZ R12,RL0 > MOV S0TBUF,R12 ;Daten in Sende-Register schieben > wait4: > BCLR P1L.7 > JNB S0TIR,wait4 ;warten, bis Daten gesendet wurden > RET ;Ruecksprung > </asm> > > An P1L habe ich einer LED-Schaltung. Hieran sehe ich, dass nie einer der 3 Fälle zutrifft und immer > zur Echo-Routine gesprungen wird. Diese hängt dann beim Überprüfen des Requestflags. > > Wenn ich IEN setze ist das natürlich hier wie ein Reset, da an den entsprechenden Interruptvektoren > nichts steht. Ich habe auch einmal ausprobiert S0TIC und S0RIC auf 0 zu setzen. Aber auch das hat > keinen Erfolg gebracht. > > Was genau machen also die Interrupt-Routinen im OS oder kann man darauf auch verzichten? > > Nochmals danke für die Hilfe > > Thomas >