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
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 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.
Und das print würde ich aus der Interruptroutine nehmen.
Lesezeichen