📄 keyscan.lst
字号:
C51 COMPILER V8.02 KEYSCAN 12/08/2008 23:21:50 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<AT89X51.H>
2 #define uchar unsigned char
3 #define uint unsigned int
4 uchar k=0;
5 /////////////////////////////////延时
6 void delaynms(uint n)
7 {uchar i;
8 1 while(n--)
9 1 {for(i=0;i<125;i++);
10 2 }
11 1 }
12 //////////////////////////////
13 uchar GetKey()
14 {uchar temp,key=0xff;
15 1 P2=0x0f;
16 1 temp=P2;
17 1 if(temp!=0x0f)
18 1 {delaynms(50);
19 2 temp=P2;
20 2 if(temp!=0x0f)
21 2 {
22 3 P2=0xef;
23 3 temp=P2;
24 3 switch (temp)
25 3 {
26 4 case 0xe7:key=0;break;
27 4 case 0xeb:key=1;break;
28 4 case 0xed:key=2;break;
29 4 case 0xee:key=3;break;
30 4 default:break;
31 4 }
32 3
33 3 P2=0xdf;
34 3 temp=P2;
35 3 switch (temp)
36 3 {
37 4 case 0xd7:key=4;break;
38 4 case 0xdb:key=5;break;
39 4 case 0xdd:key=6;break;
40 4 case 0xde:key=7;break;
41 4 default:break;
42 4 }
43 3
44 3 P2=0xbf;
45 3 temp=P2;
46 3 switch (temp)
47 3 {
48 4 case 0xb7:key=8;break;
49 4 case 0xbb:key=9;break;
50 4 case 0xbd:key=10;break;
51 4 case 0xbe:key=11;break;
52 4 default:break;
53 4 }
54 3
55 3 P2=0x7f;
C51 COMPILER V8.02 KEYSCAN 12/08/2008 23:21:50 PAGE 2
56 3 temp=P2;
57 3 switch (temp)
58 3 {
59 4 case 0x77:key=12;break;
60 4 case 0x7b:key=13;break;
61 4 case 0x7d:key=14;break;
62 4 case 0x7e:key=15;break;
63 4 default:break;
64 4 }
65 3 while(P2&0x0f!=0x0f)
66 3 {;}
67 3
68 3 if (key!=0xff) ;
69 3
70 3 }
71 2 }
72 1 return key;
73 1 }
74
75 void KeyProcess()
76 {uchar key=0xff;
77 1 key=GetKey();
78 1
79 1 if(P1==0x8f&&k==1)
80 1
81 1 {P0_0=0;
82 2 P3_7=0;
83 2 delaynms(3000);
84 2 }
85 1 else if(P1==0x4f&&P0_5==0)
86 1 {P3_7=0;
87 2 P0_1=0;
88 2 delaynms(3000);
89 2 }
90 1 else if(P1==0x2f&&P0_6==0)
91 1 {P3_7=0;
92 2 P0_2=0;
93 2 delaynms(3000);
94 2 }
95 1 else if(P1==0x1f&&P0_7==0)
96 1 {P3_7=0;
97 2 P0_3=0;
98 2 delaynms(3000);
99 2 }
100 1
101 1 else if(key==0)
102 1 {k++;
103 2 if(k==1)P0_4=0;
104 2
105 2 else if(k==2)P0_4=1;
106 2 else if (k>2)k=0;
107 2 }
108 1 else if(key==1)P0_1=~P0_1;
109 1 else if(key==2)P0_2=~P0_2;
110 1 else if(key==3)P0_3=~P0_3;
111 1 else if(key==4)P0_4=~P0_4;
112 1 else if(key==5)P0_5=~P0_5;
113 1 else if(key==6)P0_6=~P0_6;
114 1 else if(key==7)P0_7=~P0_7;
115 1 else if(key==8){P0_0=~P0_0;P0_1=~P0_1;}
116 1 else if(key==9){P0_1=~P0_1;P0_2=~P0_2;}
117 1 else if(key==10){P0_2=~P0_2;P0_3=~P0_3;}
C51 COMPILER V8.02 KEYSCAN 12/08/2008 23:21:50 PAGE 3
118 1 else if(key==11){P0_3=~P0_3;P0_4=~P0_4;}
119 1 else if(key==12){P0_4=~P0_4;P0_5=~P0_5;}
120 1 else if(key==13){P0_5=~P0_5;P0_6=~P0_6;}
121 1 else if(key==14){P0_6=~P0_6;P0_7=~P0_7;}
122 1 else if(key==15)P0=~P0;
123 1 }
124
125 /////////////////////////
126 main()
127 {
128 1 while(1)
129 1 KeyProcess();
130 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 436 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 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 + -