BORLAND C & SERIELLER INTERRUPT
hi!
wie bekomm ich von der com2 einen receive interrupt?
ich hätte mir gedacht so:
#define PORT1 0x2F8 //Port (Serielle Schnittstelle)einstellen
#define INTVECT 0x0B //IRQ von der Seriellen einstellen
void interrupt(*oldport1isr)(); //Interruptfunktion
void initseri(void) //Serielle initialisieren
{
outportb(PORT1 +1,0); //interrupts ausschalten Port1
oldport1isr = getvect(INTVECT); //alten interrupt speichern, zum sp„teren wiederherstellen
setvect(INTVECT, PORT1INT); //Interruptvector setzen
outportb(PORT1 +3,0x80); //DLAB ein
outportb(PORT1+0,0x0C); //Boud Rate einstellen Low Byte
outportb(PORT1+1,0x00); //High Byte boud rate setzen
outportb(PORT1+3,0x03); //8Bit no parity 1 stop bit
outportb(PORT1+2,0xc7); //FIFO control Register
outportb(PORT1+4,0x0b); //einschalten DTR RTS OUT2
outportb(0x21,(inportb(0x21) & 0xf7)); //setzen des Interrupts (Controller)
outportb(PORT1+1,0x01); //Interrupt wenn Daten empfangen sind
}
void interrupt PORT1INT() //interruptfunktion
{
in_buffer[count]=inportb(PORT1);
if(in_buffer[count] == '\r')
{
in_buffer[count] = '\n';
in_buffer[count+1] = '\0';
check=1; //Flag setzen
count=0;
}
count++;
outportb(0x20,0x20); //Setzen der Interrupt-Kontrollvariable
}
es kommt aber kein interrupt beim empfangen!
|