📄 main.lst
字号:
249 *********************************/
250 uchar tige(uchar keydata)
251 {
252 1 uchar j=0xfe;
253 1 switch(keydata)
254 1 {
255 2 case 1: j=0; break;
256 2 case 2: j=1; break;
257 2 case 4: j=2; break;
258 2 default: j=0xfe; break;
259 2 }
260 1 return j;
261 1 }
262
263
264
265
266 /**************************************************
267 读按键
268 ****************************************************/
269
270 #define key_scan P1
271 uchar key_store[3][3];
272 uchar key_code1;
273 uchar key_code2;
274 uchar key_code3;
275 uchar key_code;
276 bit key_close;//鍵码释放变量。
277 bit key_tag;//按键变量。
278 sbit L1=P1^0;
279 sbit L2=P1^1;
280 sbit L3=P1^2;
281 uchar key_count;
282 void readkey(void)
283 {
284 1 uchar tempp;
285 1 key_count++;
286 1 if(key_count>120)
287 1 {
288 2 key_count=0;
289 2 L1=0;
290 2 L2=1;
291 2 L3=1;
292 2 key_scan=key_scan|0x38;
293 2 tempp=key_scan;
294 2 tempp>>=3;
295 2 tempp&=0x07;
296 2 key_store[0][2]=key_store[0][1];
297 2 key_store[0][1]=key_store[0][0];
298 2 key_store[0][0]=tempp;
299 2
300 2 L1=1;
301 2 L2=0;
302 2 L3=1;
C51 COMPILER V7.06 MAIN 06/14/2003 11:25:10 PAGE 6
303 2 key_scan|=0x38;
304 2 tempp=key_scan;
305 2 tempp>>=3;
306 2 tempp&=0x07;
307 2 key_store[1][2]=key_store[1][1];
308 2 key_store[1][1]=key_store[1][0];
309 2 key_store[1][0]=tempp;
310 2
311 2 L1=1;
312 2 L2=1;
313 2 L3=0;
314 2 key_scan|=0x38;
315 2 tempp=key_scan;
316 2 tempp>>=3;
317 2 tempp&=0x07;
318 2 key_store[2][2]=key_store[2][1];
319 2 key_store[2][1]=key_store[2][0];
320 2 key_store[2][0]=tempp;
321 2 if(key_close)
322 2 {
323 3 tempp=key_store[0][0]&key_store[1][0]&key_store[2][0];
324 3 if(tempp==0x07)
325 3 key_close=0;
326 3 }
327 2 else
328 2 {
329 3 if(key_store[0][0]==key_store[0][1])
330 3 {
331 4 tempp=key_store[0][0];
332 4 tempp|=0xf8;
333 4 tempp=~tempp;
334 4 if(tempp!=0)
335 4 {
336 5 tempp=tige(tempp);
337 5 if(tempp<3)
338 5 {
339 6 key_code=keynumber[tempp];
340 6 key_tag=1;
341 6 key_close=1;
342 6
343 6 }
344 5 }
345 4 }
346 3 if(key_store[1][0]==key_store[1][1])
347 3 {
348 4 tempp=key_store[1][0];
349 4 tempp|=0xf8;
350 4 tempp=~tempp;
351 4 if(tempp!=0)
352 4 {
353 5 tempp=tige(tempp);
354 5 if(tempp<3)
355 5 {
356 6 tempp=tempp+3;
357 6 key_code=keynumber[tempp];
358 6 key_tag=1;
359 6 key_close=1;
360 6
361 6 }
362 5 }
363 4 }
364 3 if((key_store[2][0]&0x07)==0x01)
C51 COMPILER V7.06 MAIN 06/14/2003 11:25:10 PAGE 7
365 3 {
366 4 key_code=FORDOWN;
367 4 key_tag=1;
368 4 key_close=1;
369 4 }
370 3 if(key_store[2][0]==key_store[2][1])
371 3 {
372 4 tempp=key_store[2][0];
373 4 tempp|=0xf8;
374 4 tempp=~tempp;
375 4 if(tempp!=0)
376 4 {
377 5 tempp=tige(tempp);
378 5 if(tempp<3)
379 5 {
380 6 tempp=tempp+6;
381 6 key_code=keynumber[tempp];
382 6 key_tag=1;
383 6 key_close=1;
384 6
385 6 }
386 5 }
387 4 }
388 3 if(((key_store[1][0]&0x07)==0x06)&&((key_store[2][0]&0x07)==0x05))
389 3 key_code=FORUP;
390 3
391 3 }
392 2 }
393 1 }
394 /*********************************
395 液晶清屏函数
396 **********************************/
397 void cleardisp(void)
398 {
399 1 uchar i=0,j;
400 1 for(j=0;j<8;j++)
401 1 {
402 2 LCM12864(i,j,0,128,0);
403 2 }
404 1 }
405 /*********************************
406 停止界面函数
407 ************************************/
408 void interfaceStop(void)
409 {
410 1 MuchPageDisp(stop,0, 10,67,4);
411 1 MuchPageDisp(plist0,4, 10,98,2);
412 1 MuchPageDisp(plist1,6, 10,90,2);
413 1 }
414
415 /*********************************
416 运行主界面函数
417 ***********************************/
418 void interfaceRun(void)
419 {
420 1 MuchPageDisp(run,0, 10,52,4);
421 1 MuchPageDisp(fwd,1, 75,37,2);
422 1 MuchPageDisp(plist0,4, 10,98,2);
423 1 MuchPageDisp(plist1,6, 10,90,2);
424 1 }
425 /********************************
426 字体合并一行显示
C51 COMPILER V7.06 MAIN 06/14/2003 11:25:10 PAGE 8
427 *********************************/
428 uchar idata fingersbuf[10];
429 void combinline(uchar finger1,uchar finger2,finger3,finger4,uchar finger5,uchar finger6,uchar finger7,ucha
-r finger8,uchar finger9,uchar finger10)
430 {
431 1 fingersbuf[0]=finger1;
432 1 fingersbuf[1]=finger2;
433 1 fingersbuf[2]=finger3;
434 1 fingersbuf[3]=finger4;
435 1 fingersbuf[4]=finger5;
436 1 fingersbuf[5]=finger6;
437 1 fingersbuf[6]=finger7;
438 1 fingersbuf[7]=finger8;
439 1 fingersbuf[8]=finger9;
440 1 fingersbuf[9]=finger10;
441 1 }
442
443 /************************************
444 数码管动态显示以及LCD刷新显示
445 *************************************/
446 uint time;
447 uint lcdrefreshtime;
448 uint lcdcount;
449 extern uchar dispnum[4];
450 uint back;
451 uchar page;
452 uchar state;
453 void intt0(void) interrupt 1
454 {
455 1 TH0=0x3C; //2.5ms
456 1 TL0=0xB0;
457 1 lcdrefreshtime++;
458 1 time++;
459 1 if(time>=50000)//for 0.05s
460 1 {
461 2 if((page==2)||(page==3)||(page==4))
462 2 {
463 3 back++;
464 3 if(back>30000)
465 3 { back=0;
466 4 if(state==0)//stop condition
467 4 {
468 5 cleardisp();
469 5 interfaceStop();
470 5 page=0;
471 5 state=0;
472 5
473 5 }
474 4 if(state==1)//run condition
475 4 {
476 5 cleardisp();
477 5 interfaceRun();
478 5 page=1;
479 5 state=1;
480 5
481 5 }
482 4 }
483 3 }
484 2 }
485 1
486 1 if(lcdrefreshtime>50000)//0.05s
487 1 { lcdrefreshtime=0;
C51 COMPILER V7.06 MAIN 06/14/2003 11:25:10 PAGE 9
488 2 lcdcount++;
489 2 if(lcdcount>=60000)
490 2 { lcdcount=0;
491 3 if((state==0)&&(page==0))
492 3 {
493 4 cleardisp();
494 4 interfaceStop();
495 4 }
496 3 if((state==1)&&(page==1))
497 3 {
498 4 cleardisp();
499 4 interfaceRun();
500 4 }
501 3 }
502 2
503 2 }
504 1 //if(time>1600)
505 1 //{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -