macg
驱动牛犊
驱动牛犊
  • 注册日期2001-05-31
  • 最后登录2002-10-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2353回复:9

使用EPP或ECP模式响应实时中断可以吗?

楼主#
更多 发布于:2001-06-29 16:56
使用EPP或ECP模式响应实时中断可以吗?读取外部的数据并且控制外部设备?
马春光
Mike_Li
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-30 17:29
你好!
  原则上可以,但你能保证你GET到的数据的准确,完整。并不过份占用CPU资源吗?如果你有好方案希望能够探讨!
               谢谢!我的EMAIL:lizy_01@sina.com
principal
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2014-02-12
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望62点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-30 20:27
可以用vxd hook IRQ 7,然后调用dpc来读并口的数据就行了。

Youngar
游客
游客
地板#
发布于:2001-07-02 15:41
To Principal;
Would you please give me some detailed information? What is your development environment?(OS+Tools)
Thanks in advance!
h_happy
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-04 10:22
我凭在DOS下的调试经验告诉你.在DOS这种实时独占的环境下.486以上配置.在并口上读取数据.用中断方式最高有几K的中断速度.不能依靠主板性能的提升,提升很多性能.
每天都有一堆一堆的问题出现. 总希望有一个牛人出现在我的面前. 每个工程师的梦想大概也不过如此.
cant
驱动牛犊
驱动牛犊
  • 注册日期2001-06-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-04 16:32
我也试过改VToolsD生成的hook irq 8 的例子为hook irq 7,但为什么不行呢?hook()返回失败。哪位大侠有现成的例子,可否让小弟参考一下?
Email : cantsong@163.net
Youngar
游客
游客
6楼#
发布于:2001-07-04 17:05
Hi,H_Happy;
Do you have the samples under MS-DOS?
Any information you can provide will be deeply appreciated.
h_happy
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-07-04 17:15
对不起,那是很久以前的事情了.毕设时偶然用了一下.就扔了.

至于并口的设置我忘了,就不写了.总之是把379,37A设妥.然后看一下,有没有其他占用中断7的设备.
往中断7对应的管脚,放脉冲.这对于硬件调试是很方便的.首先在DOS下确定你的硬件没有问题.然后再上WINDOWS.要不,就有你好看了.

#include <stdio.h>
#include <dos.h>
#include <conio.h>

#define INTR 0X0f    /* The  interrupt 7 */

#ifdef __cplusplus
    #define __CPPARGS ...
#else
    #define __CPPARGS
#endif

void interrupt ( *oldhandler)(__CPPARGS);

int count=0;

void interrupt handler(__CPPARGS)
{
/* increase the global counter */
   count++;
   //
   INT=inport(INT_STATUS);
   if (INT)
   printf();
   outportb(0x20,0x20);
   else
/* call the old routine */
   oldhandler();
}

int main(void)
{
unsigned x;
/* save the old interrupt vector */
   oldhandler = getvect(INTR);
/* install the new interrupt handler */
   setvect(INTR, handler);
    outportb(0x21,&0x00);
    x=inportb(0x21);
   enable();
   outportb(0x20,0x20);
/* loop until the counter exceeds 20 */
   while (count < 20)
      printf("count is %d\n",count);

/* reset the old interrupt handler */
   setvect(INTR, oldhandler);

   return 0;
}

每天都有一堆一堆的问题出现. 总希望有一个牛人出现在我的面前. 每个工程师的梦想大概也不过如此.
caigh
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2001-12-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-07-04 23:11
我正好有有关并口操作的说明书,感兴趣可以发给你,希望对你有帮助
Youngar
游客
游客
9楼#
发布于:2001-07-05 10:59
Hi,H_Happy & Caigh;
Thank you very much.
(1)Do you have any references in a Win32 application? I am now programming the Parallel Port with VC++6.0,but can't find any samples.
(2)Caigh,I send a mail to you.Would U please email me the data?
Thanks again.
游客

返回顶部