trim001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:739回复:0

为什么中断函数只调用一次

楼主#
更多 发布于:2003-10-13 16:28
我要开发一个isa卡的驱动程序,该卡是由北京宏拓公司开发的pc7510。该卡的地址为110-11f内部有一块8253定时器。用1M晶振时钟作为基准源。其中8253定时器的地址为114-117H,采用工作3方式,每隔20MS产生一次中断中断号为12。我采用WinDriver构建驱动程序框架,在构建中断是选择了Interrupt Number 为12,edge triggered用Delphi编写。
在编写过程中存在的问题是中断只能产生一次。
我把我的程序的一部分写出,请你指出错误的地方。
var pc7510 :pc7510_handle;
    addr   :pc7510_addr;
begin
pc7510 :=nil;
addr   :=0;
pc7510_registerWindriver;
if no pc7510_open(@pc7510) then
 shwomessage(\'pc7510初始化错误‘);
pc7510_writebyte(pc7510,addr,7,$36); //写入控制字 工作方式3
先写低字节再写高字

pc7510_wirtebyte(pc7510,addr,4,$20);//20ms出发一次写入的数字20000
pc7510_wirtebyte(pc7510,addr,4,$4e);
pc7510_interrupt0enable(pc7510,pc7510_interrupt0HandlerRoutine);//调用中断函数



end;
procedure pc7510_interrupt0HandlerRoutine            
//中断使能函数(pworker:pointer;intResult:ppc7510_interrupt_result)stdcall;
begin
form1.memo1.lines.add(\'interrupt happened\');
//目的是知道中断
//采生并且调用了中断函数
end;
我用windriver的lisen to the interrupt 发现可以听到好多次中断
敬请回复!!
游客

返回顶部