?? 矩陣式鍵盤.lst
字號:
C51 COMPILER V8.05a __陣式鍵盤 08/03/2011 20:04:50 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE __陣式鍵盤
OBJECT MODULE PLACED IN 矩陣式鍵盤.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 矩陣式鍵盤.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 sbit dula=P2^6;
5 sbit wela=P2^7;
6 uchar code table[]={
7 0x3f,0x06,0x5b,0x4f,
8 0x66,0x6d,0x7d,0x07,
9 0x7f,0x6f,0x77,0x7c,
10 0x39,0x5e,0x79,0x71,0};
11 uchar num,temp;
12 void display(uchar bb);
13 uchar keyscan();
14
15 void delay(uint z)
16 {
17 1 uint x,y;
18 1 for(x=z;x>0;x--)
19 1 for(y=110;y>0;y--);
20 1 }
21 void main()
22 {
23 1 num=17;
24 1 dula=1;
25 1 P0=0;
26 1 dula=0;
27 1 wela=1;
28 1 P0=0xc0;
29 1 wela=0;
30 1
31 1 while(1)
32 1 {
33 2
34 2 display(keyscan());
35 2
36 2 }
37 1
38 1 }
39 void display(uchar bb)
40 {
41 1 dula=1;
42 1 P0=table[bb-1];
43 1 dula=0;
44 1 }
45 uchar keyscan()
46 {
47 1 P3=0xfe;//檢測第一行
48 1 temp=P3;//外部鍵盤輸入
49 1 temp=temp&0xf0;//檢測那個鍵被按下
50 1 if(temp!=0xf0)
51 1 {
52 2
53 2 delay(5);
54 2 temp=P3;
55 2 temp=temp&0xf0;
C51 COMPILER V8.05a __陣式鍵盤 08/03/2011 20:04:50 PAGE 2
56 2 if(temp!=0xf0)//消抖確認時候按鍵
57 2 {
58 3 temp=P3;
59 3 switch(temp)
60 3 {
61 4 case 0xee:num=1;
62 4 break;
63 4 case 0xde:num=2;
64 4 break;
65 4 case 0xbe:num=3;
66 4 break;
67 4 case 0x7e:num=4;
68 4 break;
69 4
70 4 }
71 3 while(temp!=0xf0)
72 3 {
73 4 temp=P3;
74 4 temp=temp&0xf0;//松手檢測
75 4 }
76 3
77 3 }
78 2 }
79 1
80 1 P3=0xfd;//檢測第2行
81 1 temp=P3;//外部鍵盤輸入
82 1 temp=temp&0xf0;//檢測那個鍵被按下
83 1 if(temp!=0xf0)
84 1 {
85 2
86 2 delay(5);
87 2 temp=P3;
88 2 temp=temp&0xf0;
89 2 if(temp!=0xf0)//消抖確認時候按鍵
90 2 {
91 3 temp=P3;
92 3 switch(temp)
93 3 {
94 4 case 0xed:num=5;
95 4 break;
96 4 case 0xdd:num=6;
97 4 break;
98 4 case 0xbd:num=7;
99 4 break;
100 4 case 0x7d:num=8;
101 4 break;
102 4
103 4 }
104 3 while(temp!=0xf0)
105 3 {
106 4 temp=P3;
107 4 temp=temp&0xf0;//松手檢測
108 4 }
109 3
110 3 }
111 2 }
112 1 P3=0xfb;//檢測第3行
113 1 temp=P3;//外部鍵盤輸入
114 1 temp=temp&0xf0;//檢測那個鍵被按下
115 1 if(temp!=0xf0)
116 1 {
117 2
C51 COMPILER V8.05a __陣式鍵盤 08/03/2011 20:04:50 PAGE 3
118 2 delay(5);
119 2 temp=P3;
120 2 temp=temp&0xf0;
121 2 if(temp!=0xf0)//消抖確認時候按鍵
122 2 {
123 3 temp=P3;
124 3 switch(temp)
125 3 {
126 4 case 0xeb:num=9;
127 4 break;
128 4 case 0xdb:num=10;
129 4 break;
130 4 case 0xbb:num=11;
131 4 break;
132 4 case 0x7b:num=12;
133 4 break;
134 4
135 4 }
136 3 while(temp!=0xf0)
137 3 {
138 4 temp=P3;
139 4 temp=temp&0xf0;//松手檢測
140 4 }
141 3
142 3 }
143 2 }
144 1 P3=0xf7;//檢測第4行
145 1 temp=P3;//外部鍵盤輸入
146 1 temp=temp&0xf0;//檢測那個鍵被按下
147 1 if(temp!=0xf0)
148 1 {
149 2
150 2 delay(5);
151 2 temp=P3;
152 2 temp=temp&0xf0;
153 2 if(temp!=0xf0)//消抖確認時候按鍵
154 2 {
155 3 temp=P3;
156 3 switch(temp)
157 3 {
158 4 case 0xe7:num=13;
159 4 break;
160 4 case 0xd7:num=14;
161 4 break;
162 4 case 0xb7:num=15;
163 4 break;
164 4 case 0x77:num=16;
165 4 break;
166 4
167 4 }
168 3 while(temp!=0xf0)
169 3 {
170 4 temp=P3;
171 4 temp=temp&0xf0;//松手檢測
172 4 }
173 3
174 3 }
175 2 }
176 1 return num;
177 1 }
C51 COMPILER V8.05a __陣式鍵盤 08/03/2011 20:04:50 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 406 ----
CONSTANT SIZE = 17 ----
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 + -