68023611
驱动牛犊
驱动牛犊
  • 注册日期2008-09-25
  • 最后登录2011-06-01
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1311回复:1

关于串口的接收数据的疑惑

楼主#
更多 发布于:2009-11-18 11:28


最近在写一个工具,想通过串口来实现通讯。把要调试的板子和我工作的机器相连的时候,板子给主机发信息,现在是没问题了。但是,现在主机给板子发信息的时候,串口已经收到数据了,却就是不产生中断,也因此不能进我的中断服务子程序。

在初始化串口的时候,我配置了相应的baud,数据宽度,停止位长度,校验方法,打开“收到数据就绪中断”,把8259的IRQ4的屏蔽字打开。(21H读回,and 0EFH再写回。)但是数据来了以后,就是不产生中断。我用debug已经看了,数据受到了,而且中断的请求也被置1了。可不进ISR。。。。我想应该是我哪里的寄存器没有配置的原因吧,希望哪个大哥指点一下晚辈。
68023611
驱动牛犊
驱动牛犊
  • 注册日期2008-09-25
  • 最后登录2011-06-01
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-11-19 09:09
更新一下现象,原来是昨天我对串口的MCR(modem control register)的bit3没有做配置造成。大致是因为没有配置的话,就不会把中断传递到内部的PIC。(不过完全是自己的理解,也许不对的。)

现在的问题是,中断能进了。但是我写的中断服务程序,是截取原本的0CH的中断,然后再hook到原来的ISR。但是问题是,数据来了以后,第一次能进ISR,第二次又不进ISR了。(以前一直没写过中断服务程序,所以我想可能是关于8259的东西哪些标志估计是没有清,所以第二次进不去中断。)
游客

返回顶部