[英]Replace keyboard interrupt (Interrupt 9) makes two calls rather than one
每按一次鍵盤將進入兩次替換中斷的函數。 為什么會這樣?
也許 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;
}
為了避免它,您可以簡單地設置整數來計算中斷的次數,然后忽略所有奇數。
代碼示例:
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.