【第7章】键盘开始

来源:互联网 发布:cctv5在线直播软件 编辑:程序博客网 时间:2024/05/17 06:16

     现在进入第7章IO系统了,首先是键盘部分。键盘我们已经有了一点的认识了,在这之前已经有过这方面的实践了。

     那么现在就来回顾下,为了不影响输出,先把各进程的执行体中的打印语句注释起来,再把时钟中断程序中的打印语句也注释起来。

     那么先来写键盘中断处理程序,在kernel文件夹下建立一个keyboard.c文件,写一个Keyboard_Handler函数:

Code:
  1. /*====================================================================  
  2.                              keyboard.c  
  3. ====================================================================*/  
  4.   
  5. #include "type.h"   
  6. #include "proto.h"   
  7.   
  8. void Keyboard_Handler(u32 irq_no)   
  9. {   
  10.     Disp_Color_Str("*",0xc);   
  11. }  

     打印一个“*”号就够了,接着还要对8259A进行设置,使其打开键盘中断,还得把IRQ_Table[0]设为Keyboard_Handler,把这些放到一个Init_Keyboard函数中来做,这个函数放到keyboard.c中:

Code:
  1. void Init_Keyboard()   
  2. {   
  3.     Put_IRQ_Handler(1,Keyboard_Handler);   
  4.     Enable_IRQ(1);   
  5. }  

     别忘了在proto.h添加声明:

Code:
  1. void Init_Keyboard();  

     然后就是对这个函数的调用了,在Init_PCB函数中调用:

Code:
  1. Init_Keyboard();  

     由于新加了一个文件,别忘了修改MAKEFILE,make一下,运行结果如图所示:

     敲一个任意键,出现星号,可是再敲键盘,却什么也不输出了,这是为什么呢?等会再说?干嘛这样,一是为了循序渐进,二来多捞点分,发一个日记2分呢。