向大家请教并口编程的问题! 点击:1180 | 回复:3



wince初学者

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2005年8月17日
发表于:2005-11-16 10:33:00
楼主
我用直接对寄存器操作的方法操作并口。使用EPP模式。
采用READ_PORT_UCHAR和WRITE_PORT_UCHAR函数读写并口寄存器。
我的最终目的是,想首先通过程序判断状态位S7的值,当读到S7为1即外设准备好以后,才读写数据寄存

器发送或接收数据。
但是每当我读379H状态寄存器的状态位S7时,读到的S7一直为0,也就表示外设一直都没有准备好接收或

发送数据(外设采用WINCE5.0操作系统,也采用EPP并口模式)。可是我试着直接读写37CH数据寄存器,

数据却是可以传送到外设的,这与前面判断外设没有准备好的结论是矛盾的,而且这样就不能用判断状态

位的方法控制读写操作了。如何解决这个问题呢?请大家帮忙想想办法,小弟将不胜感激!



亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-11-16 11:20:00
1楼
是否是这样的;
379H状态寄存器的状态位S7,仅仅只读状态位S7,它并不干预读写数据寄存器;
379H状态寄存器的状态位S7,是靠外设的输出位来改变的,当外设准备好时,通过状态位S7告诉调用的主程序,才允许主程序进行I/O操作,当外设断开或未准备好时,状态位S7也必定是未准备好,这时主机不是不能发数据,而是发出数据外设也并未在接收,因此在你的主程序中一般先查状态位S7,若未准备好则等待,若准备好则开始发一个字节。

wince初学者

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2005年8月17日
发表于:2005-11-16 18:43:00
2楼
大体上是这样的,只有S7为1,才表示外设已准备好,主程序可以发送数据了。如果S7为0,则表示外设还没有做好接收或发送数据的准备,主程序这时需等待S7变为1才可以发数据。
有好的建议吗?关于解决我上面提到的问题?

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-11-16 18:52:00
3楼
 上面的用法是查询方式,没用到中断;是否还可以考虑用中断方式.

热门招聘
相关主题

官方公众号

智造工程师