又有一个串口的问题了。哎!
houzy 2003-08-26 10:22:18 一段串口初始化和发送代码:
#define INTVECT 0x0C /* Com Port's IRQ here */
char textSave[160];
disable();
outportb(0x3f8+ 1 , 0); /* Turn off interrupts - Port1 */
oldport1isr = getvect(INTVECT); /*Save old Interrupt Vector for */
/* later recovery */
setvect(INTVECT, UartInterrupt); /*Set Interrupt Vector Entry */
/* PORT 1 - Communication Settings */
outportb(0x3f8+3,0x03); /*8bit 1stopbit even parity*/
outportb(0x3f8+4,0xf); /*DTR=1 RTS=1*/
outportb(0x3f8+3,inportb(0x3f8+3)|0x80); /*DLAB=1*/
outportb(0x3f8,0x0c); /*9600bps*/
outportb(0x3f8+1,0);
outportb(0x3f8+3,inportb(0x3f8+3)&0x7f); /*DLAB=0*/
setvect(0xc,UartInterrupt);
outportb(0x21,inportb(0x21)&0xef);/*8259 rigister 0x21 BIT4=0*/
outportb(0x3f8+1,1); /*只允许RXT中断*/
enable();
/*发送部分代码*/
for(i1=0;i1<strlen(textSave);i1++){
c=textSave[i1];
outportb(PORT1,c);
}
当outportb(0x3f8+3,0x03); /*8bit 1stopbit no parity*/时,发送,中断接收都没有问题。
而我改为outportb(0x3f8+3,0xfb); /*8bit 1stopbit even parity*/时,中断接收没有问题,不能发送,不知道是什么原因。小弟初学c,请多多指教。