📄 keyboard.lst
字号:
C51 COMPILER V7.50 KEYBOARD 04/09/2007 18:39:43 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /**************************************************************************
3
4
5
6 File Name: keyboard.c
7 Author: liao xu ming
8 Created: 2007/3/23
9 Modified: NO
10 Revision: 1.0
11
12 ***************************************************************************/
13
14 #include"keyborad.h"
15 #include"clock.h"
16 #define KEY_PORT P1
17
18 void Delay_Ms2(uchar i)
19 { uchar j;
20 1 for(;i>0;i--)
21 1 for(j=125;j>0;j--);
22 1 }
23
24
25 uchar Kbscan(void)
26 { uchar sccode; //行输出
27 1 uchar recode; // 列输入
28 1 KEY_PORT=0xf0; //有键按下的那一行列都为0,取反后为1
29 1 if((KEY_PORT&0xf0)!=0xf0) //条件成立=有键按下 //1=0x11; 2=0x21; 3=0x41; 4=0x81;
30 1 { //5=0x12; 6=0x22; 7=0x42; 8=0x82;
31 2 Delay_Ms2(10); //去抖动 延时 //9=0x14; a=0x24; b=0x44; c=0x84
32 2 if((KEY_PORT&0XF0)!=0XF0) //d=0x18; e=0x28; f=0x48; 0=0x88
33 2 {
34 3 sccode=0xfe;
35 3 while((sccode&0x10)!=0)
36 3 {
37 4 KEY_PORT=sccode;
38 4 if((KEY_PORT&0xf0)!=0xf0)
39 4 {
40 5 recode=(KEY_PORT&0xf0)|0x0f;
41 5 KEY_PORT=0xf0;
42 5 while((KEY_PORT&0XF0)!=0XF0){};//等待按键放开
43 5 LCD_LIGHT=0; //开LCD 的背光灯
44 5 LCD_LIGHT_FLAG=1; //LCD背光灯开标志
45 5 count_50ms=0; //LCD背光灯开启计时
46 5 return ((~sccode)+(~recode));
47 5 }
48 4 else
49 4 {
50 5 sccode=(sccode<<1)|0x01;
51 5 }
52 4 }//end while
53 3 }//end if two
54 2 }//end if first
55 1
C51 COMPILER V7.50 KEYBOARD 04/09/2007 18:39:43 PAGE 2
56 1 return(KEY_NOTHING);
57 1 }//end Kbscan
58
59
60
61 unsigned char Keyboard(void)
62 { unsigned char returnkey;
63 1 unsigned char keytemp;
64 1 keytemp=Kbscan();
65 1 switch(keytemp)
66 1 {
67 2 case 0x11: returnkey=DIV; break;
68 2 case 0x21: returnkey=EQUAL; break;
69 2 case 0x41: returnkey=ZERO; break;
70 2 case 0x81: returnkey=KEY_FUNCTION;break;
71 2 case 0x12: returnkey=MUL; break;
72 2 case 0x22: returnkey=THREE; break;
73 2 case 0x42: returnkey=TWO; break;
74 2 case 0x82: returnkey=ONE; break;
75 2 case 0x14: returnkey=DEC; break;
76 2
77 2
78 2 case 0x24: returnkey=SIX; break;
79 2 case 0x44: returnkey=FIVE; break;
80 2 case 0x84: returnkey=FOUR; break;
81 2 case 0x18: returnkey=ADD; break;
82 2 case 0x28: returnkey=NINE; break;
83 2 case 0x48: returnkey=EIGHT; break;
84 2 case 0x88: returnkey=SEVEN; break;
85 2 case KEY_NOTHING: returnkey=KEY_NOTHING; break;
86 2 default: break; // returnkey=returnkey;
87 2
88 2 }
89 1 return returnkey;
90 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 246 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
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 + -