⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.lst

📁 用51模拟的TFT RGB接口驱动程序(HS,VS,DE,PCLK时序)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 112          *修 改 者:                                                                   *
 113          *版    本:0                                                                  *
 114          ******************************************************************************/
 115          void key_scan(void)
 116          {
 117   1              uint8 id;
C51 COMPILER V8.05a   KEY                                                                  12/25/2007 01:05:22 PAGE 3   

 118   1              for(id = KEYID_MIN;id <= KEYID_MAX;id++)
 119   1              {
 120   2                      KEYSCAN_PIN = SET;                                 //扫描检测PIN置位
 121   2                      key_scanx = id;                                    //待扫描的按键ID
 122   2                      XBYTE[0X0000] = (rom_bank & 0x07)|((bl_ctl & 0x01)<<3)|((rom_cs & 0x03)<<4)|((key_scanx & 0x03)<<6);
 123   2                      if(KEYSCAN_PIN == 0)                               //发现按键
 124   2                      {
 125   3                              keypress_count[id]++;                          //按键有效计数
 126   3                              if(keypress_count[id] >= KEYPRESS_COUNT_MAX)   //达到最大计数值
 127   3                                      {keypress_count[id] = KEYPRESS_COUNT_MAX;}
 128   3                              os_wait(K_TMO, KEYSCAN_DELAY, 0);
 129   3                      }
 130   2                      else
 131   2                      {
 132   3                              if(keypress_count[id] >= KEYPRESS_SHORT_NUM)   //短按键
 133   3                              {
 134   4                                      if(keypress_count[id] >= KEYPRESS_LONG_NUM)//长按键
 135   4                                              {key_input(id|KEYPRESS_LONG_SET);}
 136   4                                      else
 137   4                                              {key_input(id);}
 138   4                                      key_count = keypress_count[id];
 139   4                              }                                
 140   3                              keypress_count[id] = CLR;
 141   3                      }                                                  //继续扫描下一个按键
 142   2              }               
 143   1      }
 144          
 145          volatile uint8 key_read(void)
 146          {
 147   1              uint8 tmp;
 148   1              tmp = key_value;
 149   1              key_value = KEY_NULL;
 150   1              return tmp; 
 151   1      }
 152          
 153          volatile uint8 key_test(void)
 154          {
 155   1              return key_count;
 156   1      }
 157          
 158          /******************************************************************************
 159          *函数名称:keyin_task                                                         *
 160          *功能描述:键盘输入任务                                                       *
 161          *输    入:无                                                                 *
 162          *返    回:无                                                                 *
 163          *创建  人:袁杰                                                               *
 164          *创建日期:2007/4/22                                                          *
 165          *修改日期:                                                                   *
 166          *修 改 者:                                                                   *
 167          *版    本:0                                                                  *
 168          ******************************************************************************/
 169          void keyin_task(void)
 170          {
 171   1              key_scan();
 172   1      }
 173          
 174          //#define VK_LEFT           0x25
 175          //#define VK_UP             0x26
 176          //#define VK_RIGHT          0x27
 177          //#define VK_DOWN           0x28
 178          //#define VK_PAUSE          0x03
 179          //#define VK_OFF                        0xF0
C51 COMPILER V8.05a   KEY                                                                  12/25/2007 01:05:22 PAGE 4   

 180          //#define KEY_NULL          0xFF
 181          //scan0 ------- sw2 ------- b/l
 182          //scan1 ------- sw3 ------- pause
 183          //scan2 ------- sw4 ------- on/off(f1)
 184          //scan3 ------- sw5 ------- f2
 185          
 186          /******************************************************************************
 187          *函数名称:keyout_task                                                        *
 188          *功能描述:KEY输出任务,等待读取超时,就放弃该次键值,输出BUF中下一个         *
 189          *输    入:无                                                                 *
 190          *返    回:无                                                                 *
 191          *创建  人:袁杰                                                               *
 192          *创建日期:2007/4/22                                                          *
 193          *修改日期:                                                                   *
 194          *修 改 者:                                                                   *
 195          *版    本:0                                                                  *
 196          ******************************************************************************/
 197          void keyout_task(void)
 198          {
 199   1              uint8 wait;     
 200   1              if (key_value == KEY_NULL){key_value = key_output();}
 201   1              if (key_value != KEY_NULL)
 202   1              {
 203   2                      wait = KEYREAD_TIMEOUT;
 204   2                      while (wait--)               //等待按键读取
 205   2                      {
 206   3                              if (key_value == KEY_NULL)break;
 207   3                              os_wait(K_TMO, 1, 0);   
 208   3                      }
 209   2                      key_value = key_read();      //内部读取,清空按键
 210   2              }
 211   1      }
 212          
 213          
 214          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    297    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       2
   IDATA SIZE       =      6    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -