📄 keyboard.lst
字号:
C51 COMPILER V7.10 KEYBOARD 08/29/2005 13:01:35 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN .\out\KEYBOARD.obj
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE c\KEYBOARD.C BROWSE INTVECTOR(0XC000) DEBUG OBJECTEXTEND PRIN
-T(.\lst\KEYBOARD.lst) OBJECT(.\out\KEYBOARD.obj)
line level source
1 //***********************//
2 // 8*3 matrix keyboard //
3 // 2004/03/08 //
4 // version 1.0 //
5 //finished on 2004/03/16 //
6 //***********************//
7
8 #include "..\H\key.h "
9 extern void Delay100uS(word);
10
11
12 byte KEYVALUE=NULLKEY; //扫描获得非NULLKEY值的存放字节,程序取值后应写入NULLKEY,初始值为NULLKEY
13
14 byte ScanOnce(void) //不带去抖程序的键盘扫描,返回值为扫描的键值,无键按下时,返回NULLKEY值
15 {
16 1 //code byte TABLE[14]={NUM_9,NUM_6,NUM_3,CANCEL,START,uS_mS_S,MODE,NUM_7,NUM_4,NUM_1,NUM_0,NUM_2,NUM_5,NUM
-_8};
17 1 code byte TABLE[3][8];//={{},{},{}};
18 1
19 1 byte input_buffer=NULLKEY;
20 1 byte i;
21 1 bit j=0;
22 1 byte scan_const=0xfe; //1111 1110B
23 1
24 1 for(i=0;(i<8)&&(j==0);i++)
25 1 {
26 2 XBYTE[kb_adds]=scan_const;
27 2 switch(P1&0x1c) //P1.2,P1.3,P1.4 are the keyboard wires
28 2 {
29 3 case 0x1c:break; //no key pressed
30 3 case 0x0c: //P1.4 pressed
31 3 {
32 4 input_buffer=TABLE[0][i];
33 4 j=1;
34 4 break;
35 4 }
36 3 case 0x18: //P1.3 pressed
37 3 {
38 4 input_buffer=TABLE[1][i];
39 4 j=1;
40 4 break;
41 4 }
42 3 case 0x14: //P1.2 pressed
43 3 {
44 4 input_buffer=TABLE[2][i];
45 4 j=1;
46 4 break;
47 4 }
48 3 default:break; //多个键同时按下,无效
49 3 }
50 2 if(i!=7) scan_const=_crol_(scan_const,1); //左移一位,循环移动
51 2
52 2 }
53 1 return(input_buffer);
C51 COMPILER V7.10 KEYBOARD 08/29/2005 13:01:35 PAGE 2
54 1 }
55
56
57
58 bit ScanKey(void) //带去抖程序的键盘扫描,按键的键值存入KEYVALUE,无按键提示音,若有键按下,返回值为1,否则
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -