又有一个串口的问题了。哎!

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,请多多指教。
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
idontlikenickname 2003-08-30
  • 打赏
  • 举报
回复


谢谢~

houzy 2003-08-30
  • 打赏
  • 举报
回复
stukov2002,这个问题你没回答正确哦。见http://expert.csdn.net/Expert/topic/2201/2201962.xml?temp=.179455
houzy 2003-08-27
  • 打赏
  • 举报
回复
十分感谢!
idontlikenickname 2003-08-27
  • 打赏
  • 举报
回复


可能是你选用了偶校验的原因~
这只是经验,在windows的ms-dos方式下,用偶校验时可能会有无响应的现象,原因不清楚~~

houzy 2003-08-27
  • 打赏
  • 举报
回复
顶!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧