毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

s3c-keypad.c矩阵键盘代码press_mask和release_mask

更新时间:2013-3-4:  来源:毕业论文

s3c-keypad.c矩阵键盘代码press_mask和release_mask

假设是3行3列的按键,press_mask和release_mask这样算的含义是什么?
static void keypad_timer_handler(unsigned long data) {     u32 press_mask;     u32 release_mask;     u32 restart_timer = 0;     int i, col;     struct s3c_keypad *pdata = (struct s3c_keypad *)data;     struct input_dev *dev = pdata->dev;       keypad_scan();       for (col = 0; col < KEYPAD_COLUMNS; col++) {         press_mask = ((keymask[col] ^ prevmask[col]) &毕业论文  keymask[col]);         release_mask = ((keymask[col] ^ prevmask[col]) & prevmask[col]);         i = col * KEYPAD_ROWS;           while (press_mask) {             if (press_mask & 1) {                 input_report_key(dev, pdata->keycodes[i], 1);                 printk("key Pressed : key %d map %d\n",                         i, pdata->keycodes[i]);             }             press_mask >>= 1;             i++;         }           i = col * KEYPAD_ROWS;           while (release_mask) {             if (release_mask & 1) {                 input_report_key(dev, pdata->keycodes[i], 0);                 printk("key Released : %d map %d\n",                         i, pdata->keycodes[i]);             }             release_mask >>= 1;             i++;         }         prevmask[col] = keymask[col];           restart_timer |= keymask[col];     }       if (restart_timer) {         mod_timer(&keypad_timer, jiffies + HZ/10);     } else {         writel(KEYIFCON_INIT, key_base + S3C_KEYIFCON);         is_timer_on = false;     } }

完成按键的什么功能?可以侦测按下,抬起动作?一般简单的按键就检测到按下动作,没释放动作。看起来完成按键的事件蛮复杂的,如果能知道目的,解释起来应该很好办了。

你就按照单片机的方法来扫描得到键值,然后调用 input_report_key(dev, pdata->keycodes[i], 1);

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。