求高人指点:为什么这个中断运行以后,键盘就不能正常输入了呢?
#include<stdio.h>
#include<dos.h>
#include<io.h>
unsigned char ScanCode;
int KeyFlag=0;
static void interrupt (*oldkeyinterrupt)(void);
static void interrupt newkeyboardinterrupt(void)
{
unsigned char temp;
ScanCode=inportb(0x60);
temp=inportb(0x61);
outportb(0x61,temp | 0x80);
outportb(0x61,temp & 0x7f);
if(ScanCode==0x1c) /*a的扫描码*/
{
KeyFlag=1;
}
outportb(0x20,0x20);
}
static void initkeyboard(void)
{
oldkeyinterrupt=getvect(9);
setvect(9,newkeyboardinterrupt);
}
static void closekeyboard()
{
setvect(9,oldkeyinterrupt);
}
int main()
{
initkeyboard();
outportb(0x64,0x60);
outportb(0x60,0x01);
while(1)
{
if(KeyFlag==1)
{
closekeyboard();
gets(KeyData);
KeyFlag=0;
}
}
}
在程序运行中,KeyData输入的时候键盘就发生了错乱,求高人指点这是为什么?谢谢!