📄 mima.lst
字号:
C51 COMPILER V7.07 MIMA 04/10/2009 11:07:52 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MIMA
OBJECT MODULE PLACED IN mima.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mima.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2
3
4
5 unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
6
7 0xef,0xdf,0xbf,0x7f};
8
9 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
10
11 0x6d,0x7d,0x07,0x7f,0x6f,
12
13 0x77,0x7c,0x39,0x5e,0x79,0x71,
14
15 0x00,0x40,0x73,0xff};
16 unsigned char k,keycount=0,flashcount=0,errorcount=0,num_bit=6;
17 unsigned char get_num[6]={0};
18 unsigned char init_num[6]={1,2,3,4,5,6};
19 bit rightflag=0,alarmflag=0,errorflag=0,keyoverflag=0;
20 unsigned char keys;
21 sbit P1_6=P1^6;
22 sbit P1_7=P1^7;
23 sbit P0_7=P0^7;
24
25
26
27
28
29
30
31
32
33
34
35 void main(void)
36
37 {
38 1
39 1
40 1 unsigned char read_keys(unsigned char m);
41 1 void in_keys(unsigned char x);
42 1 void check_keys();
43 1 void del_keys();
44 1 void change_keys();
45 1
46 1
47 1
48 1 TMOD=0x01;
49 1
50 1 TH0=(65536-4000) / 256;
51 1
52 1 TL0=(65536-4000) % 256;
53 1
54 1 TR0=1;
55 1
C51 COMPILER V7.07 MIMA 04/10/2009 11:07:52 PAGE 2
56 1 ET0=1;
57 1
58 1 EA=1;
59 1
60 1
61 1
62 1
63 1
64 1 for ( k=4;;k++)
65 1 {
66 2 keys=read_keys(k);
67 2 if ((keys>=0) && (keys<10))
68 2 {
69 3 if(keycount<6)
70 3 in_keys(keys);
71 3 else
72 3 keyoverflag=1;
73 3 }
74 2 else if (keys==14)
75 2 check_keys();
76 2 else if (keys==12)
77 2 {
78 3 if (keycount>0)
79 3 del_keys();
80 3 else
81 3 keyoverflag=1;
82 3 }
83 2 else if (keys==13)
84 2 {
85 3 if (rightflag==1)
86 3 change_keys();
87 3 }
88 2 else if (keys==10)
89 2 {
90 3 rightflag=0;
91 3 errorflag=0;
92 3 keycount=0;
93 3
94 3 }
95 2 else if (keys==11)
96 2 {
97 3 alarmflag=0;
98 3 errorflag=0;
99 3 rightflag=0;
100 3 }
101 2 if (k==7)
102 2 k=3;
103 2 }
104 1 }
105
106
107
108 void t0(void) interrupt 1 using 0
109
110 {
111 1 TR0=0;
112 1
113 1 TH0=(65536-4000) / 256;
114 1
115 1 TL0=(65536-4000) % 256;
116 1
117 1 if (rightflag==1)
C51 COMPILER V7.07 MIMA 04/10/2009 11:07:52 PAGE 3
118 1 P1_7=1;
119 1 else
120 1 P1_7=0;
121 1 if (errorflag==1)
122 1 P0_7=~P0_7;
123 1 else
124 1 P0_7=0;
125 1 if (alarmflag==1)
126 1 {
127 2 P1_6=~P1_6;
128 2 }
129 1 else
130 1 P1_6=0;
131 1 if (keycount==0)
132 1 {
133 2 P1=P1 | 0x3f;
134 2 P2=dispcode[0];
135 2 P1=P1 & dispbitcode[0];
136 2 }
137 1 else
138 1
139 1 {
140 2 P1=P1 |0X3f;
141 2 P2=dispcode[8];
142 2 P1=P1 & dispbitcode[flashcount];
143 2 flashcount++;
144 2 if (flashcount>=keycount)
145 2 flashcount=0;
146 2 }
147 1
148 1
149 1 TR0=1;
150 1
151 1
152 1
153 1 }
154
155
156
157
158
159
160 unsigned char read_keys(unsigned char m)
161 {
162 1 unsigned char temp,i,j,key;
163 1
164 1 P3=dispbitcode[m];
165 1
166 1 temp=P3;
167 1
168 1 temp=temp & 0x0f;
169 1
170 1 if (temp!=0x0f)
171 1
172 1 {
173 2
174 2 for(i=50;i>0;i--)
175 2
176 2 for(j=200;j>0;j--);
177 2
178 2 temp=P3;
179 2
C51 COMPILER V7.07 MIMA 04/10/2009 11:07:52 PAGE 4
180 2 temp=temp & 0x0f;
181 2
182 2 if (temp!=0x0f)
183 2
184 2 {
185 3
186 3 temp=P3;
187 3
188 3 P1_6=~P1_6;
189 3
190 3 temp=temp & 0x0f;
191 3
192 3 switch(temp)
193 3
194 3 {
195 4
196 4 case 0x0e:
197 4
198 4 if (m==4)
199 4 key=7;
200 4
201 4 if (m==5)
202 4 key=4;
203 4
204 4 if (m==6)
205 4 key=1;
206 4
207 4 if (m==7)
208 4 key=15;
209 4
210 4 break;
211 4
212 4 case 0x0d:
213 4
214 4 if (m==4)
215 4 key=8;
216 4
217 4 if (m==5)
218 4 key=5;
219 4
220 4 if (m==6)
221 4 key=2;
222 4
223 4 if (m==7)
224 4 key=0;
225 4
226 4 break;
227 4
228 4 case 0x0b:
229 4
230 4 if (m==4)
231 4 key=9;
232 4
233 4 if (m==5)
234 4 key=6;
235 4
236 4 if (m==6)
237 4 key=3;
238 4
239 4 if (m==7)
240 4 key=14;
241 4
C51 COMPILER V7.07 MIMA 04/10/2009 11:07:52 PAGE 5
242 4 break;
243 4
244 4 case 0x07:
245 4
246 4 if (m==4)
247 4 key=10;
248 4
249 4 if (m==5)
250 4 key=11;
251 4
252 4 if (m==6)
253 4 key=12;
254 4
255 4 if (m==7)
256 4 key=13;
257 4
258 4 break;
259 4
260 4
261 4
262 4
263 4
264 4 }
265 3
266 3 while(temp!=0x0f)
267 3
268 3 {
269 4
270 4 temp=P3;
271 4
272 4 temp=temp & 0x0f;
273 4
274 4 }
275 3
276 3
277 3 }
278 2 }
279 1 else
280 1 key=16;
281 1 return key;
282 1 }
283
284
285
286
287 void in_keys(unsigned char x)
288 {
289 1 get_num[keycount]=x;
290 1 keycount++;
291 1 }
292
293
294
295 void check_keys()
296 {
297 1 unsigned char i=0;
298 1 while (i<keycount)
299 1 {
300 2 if (get_num[i]==init_num[i])
301 2 i++;
302 2 else
303 2 break;
C51 COMPILER V7.07 MIMA 04/10/2009 11:07:52 PAGE 6
304 2 }
305 1 if (i==num_bit)
306 1 {
307 2 rightflag=1;
308 2 errorflag=0;
309 2 }
310 1 else
311 1 {
312 2 errorflag=1;
313 2 rightflag=0;
314 2 errorcount++;
315 2 }
316 1 if (errorcount==3)
317 1 {
318 2 alarmflag=1;
319 2 errorcount=0;
320 2 }
321 1 keycount=0;
322 1 }
323
324
325 void del_keys()
326 {
327 1 keycount--;
328 1 }
329
330
331 void change_keys()
332 {
333 1 unsigned char num;
334 1 for ( num=0;num<keycount;num++)
335 1 init_num[num]=get_num[num];
336 1 num_bit=keycount;
337 1 keycount=0;
338 1
339 1
340 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 511 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 ----
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -