| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 681 人关注过本帖
标题:REG->keyboard.c注释
只看楼主 加入收藏
暗留香
Rank: 2
等 级:论坛游民
帖 子:49
专家分:75
注 册:2009-9-4
结帖率:100%
收藏
 问题点数:0 回复次数:0 
REG->keyboard.c注释
主要是按下一个方向键后出来一大堆= =!
程序代码:
  void   far   interrupt   newInt9(void)         /*新的键盘中断程序*/ 
  {
          unsigned   char   ScanCode,temp; 
          ScanCode=inportb(0x60);       /*从键盘I/O端口读入一个按键码*/ 
          temp=inportb(0x61);               /*读取控制寄存器61H*/ 
          outportb(0x61,temp   |   0x80);     /*并用82h完成一个OR操作*/   
          /*在控制寄存器上用7fh完成一个AND操作,以便复位键盘触发器,告诉硬件一个按键已被处理,可以读下一个键了*/ 
          outportb(0x61,temp   &   0x7f); 
          if(ScanCode&0x80)       /*闭合状态*/ 
          { 
                  ScanCode&=0x7f; 
                  key_state[ScanCode]=0;
          } 
          else     /*断开状态*/ 
          { 
                  key_state[ScanCode]=1; 
                  key_pressed[ScanCode]=1; 
          } 
         outportb(0x20,0x20);    /*复位中断控制器8259,向端口20h写一个20h*/


  } 
  
  int   getKey(int   ScanCode)     /*读取按键*/ 
  { 
          int   res; 
          res=key_state[ScanCode]|key_pressed[ScanCode];       /*求出所有按键的键码和*/
          while(key_state[ScanCode])return 0; /* 如果按键未松开 */
          key_pressed[ScanCode]=0;         /*读取完后,恢复未按状态*/
          return   res; 
  }
偶得一注释完全的代码~
和REG中的有说明区别呢?
REG中是按方向键不松,那么会一直显示某个键被按下。
而上面那个代码不管按键松还是不松都只会显示一下。
游戏中REG的只要按着方向键不松,人物会一直走下去。
而上面那个每按一下走一步。。。所以要走,得狂按方向键。
造成这区别的是:while(key_state[ScanCode])return 0;
搜索更多相关主题的帖子: keyboard REG 注释 
2010-06-03 19:57
快速回复:REG->keyboard.c注释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039026 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved