每次按键盘都会进入两次替换中断的功能。为什么要打apping?
也许scanf干扰后的“输入”?但这不仅是在每次尝试
之后,每次按两次都会进入该功能我在做什么错?如何使它每次只按一次进入功能一次?在图片中您可以看到我只按了5次而不是5次
#include<stdio.h>
#include<dos.h>
volatile int ctrl_break_flag; //counter
void interrupt(*Int9Save)(void);
void interrupt my_func8(void)
{
ctrl_break_flag++;
printf("%d\n",ctrl_break_flag);
Int9Save();
}
void main()
{
int N=0,i;
Int9Save=getvect(9); //Save pointer to original interrupt.
printf("Please enter number: ");
scanf("%d",&N);
setvect(9,my_func8);//Set interrupt pointer to our function.
ctrl_break_flag=0;
while(ctrl_break_flag<N);
printf("End");
setvect(9,Int9Save);//Return to original interrupt.
return;
}
答案 0 :(得分:0)
为了避免它,您可以简单地设置整数来计算中断的次数,然后忽略所有奇数。
代码示例:
void interrupt Keyboard(void){
check++;
Keyboard_Flag=1;
if(check%2==0) //print only button pressed(will print only
odd interrupts)
printf(" KeyPressed");
Int9Save(); // return state
}