Hello, I'm trying to write a Function that reads a character from RS232 (trival?). I'm using 80c552, Serial_Mode=1. I think the baudrate is set correct (I can transmit data to the PC). The Problem is, S0BUF is allways empty. I tried it on the simulator too. I paste my code:
CLR RI JNB RI,$ ; waiting for character MOV R7, S0BUF ; <- here S0BUF is ALLWAYS 0x00 RET
The initialisation function:
char rs232_ini(unsigned int br, unsigned char modus){ unsigned int th_tl; //Initialisierung von Timer if (modus%2){ //nur bei den Modis, wo Timer gebraucht wird switch (br){ //nur bestimmte Werte möglich, sonst Fehler case 2400: th_tl = 0xF400; break; case 4800: th_tl = 0xFA00; break; case 9600: th_tl = 0xFD00; break; case 19200: th_tl = 0xFD00; PCON = PCON | 0x80; break; default: return 1; } if (timer_ini(1,2,th_tl)!=0) return 3; } if (modus>4) return 2; modus = modus << 6; //Initialisierung der RS232 schnittstelle S0CON = modus | 0x10; // modus + reciver enable return 0; }