📄 keyboard.lst
字号:
C51 COMPILER V7.06 KEYBOARD 11/28/2006 23:11:15 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg51.h"
2 #include "intrins.h"
3 #include "keyboard.h"
4
5 sbit P1_7=P1^7;
6 //sbit P1_6=P1^6;
7 void delay(void)
8 {
9 1 unsigned char i;
10 1 for(i=0;i<10;i++)//i=10 210
11 1 _nop_();
12 1 }
13 unsigned scan_key(void)
14 {
15 1 unsigned char result=0;
16 1 P1_7=0;
17 1 P1|=0x40;
18 1 P3|=0x33;
19 1 switch ((P3&0x33)|(P1&0x40))
20 1 {
21 2 case 0x33: result=1; break;
22 2 case 0x72: result=2; break;
23 2 case 0x71: result=3; break;
24 2 case 0x63: result=4; break;
25 2 case 0x53: result=5; break;
26 2 default: result=0; break;
27 2 }
28 1 return result;
29 1 }
30 /* P1_7=0;
31 P1|=0x40;
32 switch (P1&0x40)
33 {
34 //case 0x80: result=1; break;
35 case 0x00: result=9; break;
36 default: result=0; break;
37 }
38 P1_6=1;
39 if(P1_6==0)
40 result=1;
41 P3|=0x33;
42 switch (P3&0x33)
43 {
44 case 0x32: result=2; break;
45 case 0x31: result=3; break;
46 case 0x23: result=4; break;
47 case 0x13: result=5; break;
48 default: result=0; break;
49 }
50 return result;
51 } */
52
53 unsigned get_key(void)
54 {
55 1 unsigned char temp1,key_num=0;
C51 COMPILER V7.06 KEYBOARD 11/28/2006 23:11:15 PAGE 2
56 1 unsigned int i=4000;//按键时间
57 1 if((temp1=scan_key())!=0);
58 1 {
59 2 delay();
60 2 if( temp1==scan_key())
61 2 {
62 3 key_num=temp1;
63 3 while(scan_key()!=0&&i--);//放开按键或时间到都可以退出循环
64 3 }
65 2 }
66 1 return key_num;
67 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 126 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -