RI0 = 0;
if (RI0=1)
{ ...
wie soll da RI0 jemals 1 sein, wenn du es vorher auf 0 setzt? Außerdem ist in C der Vergleich ==
sast
edit:
Versuche es doch erst mal ohne Interrupt mit
und Aufruf von b_getkey() oder nb_getkey() in der while(1){}. Ich bin mir nicht mehr sicher, ob du nicht auch EA=1 setzen musst. Ist schon mind. 4 Jahre her, dass ich was mit dem F300 gemacht hatte. Ich hoffe die defines stimmen, ansonsten anpassen.Code:sfr SBUF = 0x99; sbit RI = 0x98; char nb_getkey () { char c; int i; while(!RI && i++<100); if(RI) { c = SBUF; RI = 0; } else c = '\3'; return (c); } char b_getkey () { char c; while (!RI); c = SBUF; RI = 0; return (c); }
Und das print würde ich aus der Interruptroutine nehmen.
Lesezeichen