![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() |
![]() 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! |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|