阅读:739回复:0
为什么中断函数只调用一次
我要开发一个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 发现可以听到好多次中断 敬请回复!! |
|