一种PC键盘的革命性设计

技术分类: 工业电子  | 2008-04-07
作者:微计算机信息

  4 软件设计

  软件以uCos实时嵌入式操作为核心,按功能分为多个任务,软件采用C语言编写,主要完成两部分功能,其一是本地按键和显示,其二是将按键变为PC键扫描码通过PS2接口送给PC机。软件结构如图4-1所示。

  系统软件结构

  图4-1  系统软件结构

  算法的关键是对按键值的处理。由于PC键盘中的每个键都具有通码(接下)和断码(松开),产生的键盘扫描码由多个字节组成,而掌心键是多次操作才能构成PC键盘的单次操作,所以在算法中要设置很多状态变量来记忆操作过程,在完成一个PC键操作后才通过PS2接口输出通码或断码。下面给出了详细的原码程序和注释。

  首先说明以下重要的全局变量:

  char KeySet;                  //存入子键集号,因为不同子集的Kn值代表不同的键

  char KeyStatus;                     //记忆处理状态,在不同阶段Kn有不同的意义

  char …….

  函数KeyMessage( )将按键原始值分集处理,分集后的值调用函数KeySend( )保存或发送,函数KeySendOn( )发送通码的扫描码,而函数KeySendOff( )发送断码的扫描码。

  void KeySend( unsigned char OnCode )     //发送通码

  {       if( KeepLock==1){                             //保存组合通码KeepGroup

  KeepGroup[KeepPtr++] = OnCode;

  return;                                                 //只保存,不发送

           }

  If(KeepLock==2)……..

           KeySendOn( OnCode );                      //发送通码的扫描码

  }

  void KeySendOn( unsigned char OnCode )

  {       KeyOnCodeOff = 0;                           //设标志,要求发断码

    KeyOnCode = OnCode;                

1】【2】【3】【4】【5
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销