?? keyboard.lst
字號:
C51 COMPILER V8.02 KEYBOARD 05/23/2007 21:51:41 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: D:\EDA\KEIL\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 keyboard.c file
3 Created by Computer-lov. Date: 2005.5.31
4 Last edited date:2005.5.31
5 Copyright (c) 2005 Computer-lov
6 version 1.0
7 All rigths reserved
8 歡迎訪問我的blog: http://computer00.21ic.org
9 */
10
11 #include "keyboard.h"
12
13 unsigned char key,key_old,key_new,key_pressed_time;
14
15 void scan_keyboard(void) //鍵盤掃描
16 {
17 1 if(key)return;
18 1 if((KEY_INPUT & KEY_PIN)==KEY_PIN) //按鍵釋放
19 1 {
20 2 if(!key_old) //如果上次無按鍵按下
21 2 {
22 3 return; //返回
23 3 }
24 2 else //如果上次有按鍵按下
25 2 {
26 3 if(key_pressed_time>100) //按鍵時間超過一秒,長按鍵碼
27 3 {
28 4 // key=key_old+0x80; //長按鍵碼等于普通按鍵碼加0x80
29 4 }
30 3 else if(key_pressed_time>1)
31 3 {
32 4 key=key_old; //按鍵值
33 4 }
34 3 key_old=0;
35 3 }
36 2 return;
37 2 }
38 1 else //按鍵按下
39 1 {
40 2 key_new=0;
41 2 if(FUNCTION_KEY)key_new=KEY_FUNCTION; //MENU鍵按下
42 2 if(DOWN_KEY)key_new=KEY_DOWN; //DOWN鍵按下
43 2 if(UP_KEY)key_new=KEY_UP; //UP鍵按下
44 2 if(key_new==key_old) //如果按鍵按下長于10ms
45 2 {
46 3 if(key_pressed_time>80) //如果按鍵按下超過1s
47 3 {
48 4 key_pressed_time-=5; //則自動按鍵。相當于每隔50ms按一次
49 4 key=key_new;
50 4 return;
51 4 }
52 3 else
53 3 {
54 4 key_pressed_time++; //按鍵按下計時加一
55 4 }
C51 COMPILER V8.02 KEYBOARD 05/23/2007 21:51:41 PAGE 2
56 3 }
57 2 else
58 2 {
59 3 key_pressed_time=0; //如果本次按下跟上次按下不一樣,則按鍵按下時間清零
60 3 }
61 2 key_old=key_new; //保存本次按鍵值
62 2 }
63 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 91 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
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 + -