向大家请教并口编程的问题!-PLC技术网(www.plcjs.com)-可编程控制器技术门户


向大家请教并口编程的问题!

 (点击题目可以在互联网中搜索该题目的相关内容)
日期:2006-7-25 23:21:30     来源:   作者: 点击:
点击【  大  中   小 】,可以选择字体的大小,以便你阅读.

   我用直接对寄存器操作的方法操作并口。使用EPP模式。
采用READ_PORT_UCHAR和WRITE_PORT_UCHAR函数读写并口寄存器。
我的最终目的是,想首先通过程序判断状态位S7的值,当读到S7为1即外设准备好以后,才读写数据寄存

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

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

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

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

 以下是对《向大家请教并口编程的问题!》的回复:

匿名回复:
    是否是这样的;
379H状态寄存器的状态位S7,仅仅只读状态位S7,它并不干预读写数据寄存器;
379H状态寄存器的状态位S7,是靠外设的输出位来改变的,当外设准备好时,通过状态位S7告诉调用的主程序,才允许主程序进行I/O操作,当外设断开或未准备好时,状态位S7也必定是未准备好,这时主机不是不能发数据,而是发出数据外设也并未在接收,因此在你的主程序中一般先查状态位S7,若未准备好则等待,若准备好则开始发一个字节。
匿名回复:
    大体上是这样的,只有S7为1,才表示外设已准备好,主程序可以发送数据了。如果S7为0,则表示外设还没有做好接收或发送数据的准备,主程序这时需等待S7变为1才可以发数据。
有好的建议吗?关于解决我上面提到的问题?
匿名回复:
     上面的用法是查询方式,没用到中断;是否还可以考虑用中断方式.

上一篇: CC-LINK连不上网
下一: HART通讯协议简介