📄 cont.lst
字号:
285 1
286 1 PCON=0X0;
287 1 SCON=0X40;
288 1
289 1 IE=0X82; //开定时0中断
290 1
291 1 }
292
293 u8 key(void)
294 {
295 1 u8 temp;
296 1 temp=P1 & 0x1f;
297 1 if (temp != 0x1f)
298 1 {
299 2 delay(6);
300 2 P1=0xdf;
301 2 temp=P1 & 0x1f;
302 2 if (temp==0x1f)
303 2 {
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 6
304 3 P1=0xbf;
305 3 temp=P1 & 0x1f;
306 3 if (temp==0x1f)
307 3 {
308 4 P1=0x7f;
309 4 temp=P1 & 0x1f;
310 4 if (temp==0x1f) temp=0;
311 4 else temp=~P1;
312 4 }
313 3 else temp=~P1;
314 3 }
315 2 else temp= ~P1;
316 2 }
317 1 else temp=0;
318 1 P1=0x1f;
319 1 return temp;
320 1 }
321
322 void sendkey(u8 kk)
323 {
324 1 u8 k_code;
325 1
326 1
327 1 switch (kk)
328 1 {
329 2 case 0x30: //key1
330 2 if (key_flag_a) k_code=0x0e;
331 2 else k_code=0xf;
332 2 break;
333 2 case 0x28: //2
334 2 k_code=0x03;
335 2 break;
336 2 case 0x24: //3
337 2 k_code=0x02;
338 2 break;
339 2 case 0x22: //4
340 2 k_code=0x01;
341 2 break;
342 2 case 0x21: //5
343 2 k_code=0xee;
344 2 break;
345 2 case 0x50: //6
346 2 if (key_flag_b) k_code=0x0b;
347 2 else k_code=0x2b;
348 2 break;
349 2 case 0x48: //7
350 2 k_code=0x06;
351 2 break;
352 2 case 0x44: //8
353 2 k_code=0x05;
354 2 break;
355 2 case 0x42: //9
356 2 k_code=0x09;
357 2 break;
358 2 case 0x41: //10
359 2 k_code=0x0;
360 2 break;
361 2 case 0x90: //11
362 2 if (key_flag_c) k_code=0x32;
363 2 else k_code=0x31;
364 2 break;
365 2 case 0x88: //12
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 7
366 2 k_code=0x07;
367 2 break;
368 2 case 0x84: //13
369 2 k_code=0x04;
370 2 break;
371 2 case 0x82: //14
372 2 k_code=0x08;
373 2 break;
374 2
375 2 case 0x81: //15
376 2 k_code=0x0;
377 2 break;
378 2 case 0xff: //stop all
379 2 k_code=0xff;
380 2 break;
381 2 default:
382 2 k_code=0;
383 2 break;
384 2 }
385 1 if (k_code)
386 1 {
387 2 if (k_code==0xee) k_code=0;
388 2
389 2 //P2_3=0;
390 2
391 2 SBUF=0xeb;
392 2 while(!TI);
393 2 TI=0;
394 2
395 2 SBUF=0x20;
396 2 while(!TI);
397 2 TI=0;
398 2
399 2 SBUF=ch;
400 2 while(!TI);
401 2 TI=0;
402 2
403 2 SBUF=0xaa;
404 2 while(!TI);
405 2 TI=0;
406 2
407 2 SBUF=k_code;
408 2 while(!TI);
409 2 TI=0;
410 2
411 2 SBUF=0x55;
412 2 while(!TI);
413 2 TI=0;
414 2
415 2 // P2_3=1;
416 2 }
417 1
418 1 }
419
420 void Time_intt() interrupt 1
421 {
422 1 // P1_0=P3_0;
423 1 // return;
424 1 // if (com_times==255)
425 1 // P1=~P1;
426 1 // return;
427 1 com_times++;
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 8
428 1
429 1 P1_2 = P3_0;
430 1 if(bit_statex == P3_0) //接收滤波
431 1 bit_state = P3_0;
432 1
433 1 if(bit_state != last_state) //跳变
434 1 {
435 2 if(com_bits == 0 ) //引导码
436 2 {
437 3 if((com_times > 20) && (last_state == 0))
438 3 com_bits =1;
439 3 }
440 2
441 2 else
442 2 {
443 3 if(com_times > 20) //接收超时,错误
444 3 {
445 4 if(com_bits > 1)
446 4 {
447 5 SBUF = com_bits;
448 5 com_bits = 0;
449 5 P1_0 =0;
450 5
451 5 }
452 4 }
453 3 else if(com_times > 6) //收到 1
454 3 {
455 4 Buffer = (Buffer << 1) | 1;
456 4 com_bits ++;
457 4 }
458 3 else if((com_times > 1) && (last_state == 1)) //收到 0
459 3 {
460 4 Buffer = (Buffer << 1) ;
461 4 com_bits ++;
462 4 }
463 3 }
464 2
465 2 com_times = 0; //定时计数清零
466 2
467 2 }
468 1 if(com_bits == 32)
469 1 {
470 2 Buffer <<= 1;
471 2 Com_sucess();
472 2 com_bits = 0;
473 2 out_flag =1;
474 2 }
475 1 /*
476 1 if (com_times < 50) //接收中
477 1 {
478 1
479 1 Buffer = (Buffer << 1) | (P3_0);
480 1 com_bits++;
481 1
482 1 if(com_bits == 8 ) //接收完毕
483 1 {
484 1 com_bits = 1;
485 1
486 1 //Com_sucess(); //模拟键盘输出
487 1 //P1_0=0;
488 1 SBUF=Buffer;
489 1 P1_0=0; //串口发送号码到pc,测试用
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 9
490 1 }
491 1
492 1 }
493 1 else
494 1 {
495 1 com_bits = 0;
496 1 }*/
497 1 if(com_times >= 300) //间隔时间停留,输出释放
498 1 {
499 2 com_times = 300;
500 2 com_bits = 0;
501 2 bit_cnt = 0;
502 2 Buffer = 0;
503 2 P1_0=1;
504 2 }
505 1
506 1 last_state = bit_state;
507 1 bit_statex = P3_0;
508 1 }
509
510 void Com_sucess(void)
511 {
512 1
513 1
514 1 switch (Buffer & 0x3F)
515 1 {
516 2 case 1:
517 2 P0 = X_RF;
518 2 break;
519 2 case 2:
520 2 P0 = X_STOP;
521 2 break;
522 2 case 3:
523 2 P0 = X_PAUSE;
524 2 break;
525 2 case 4:
526 2 P0 = X_FF;
527 2 break;
528 2 case 5:
529 2 P0 = X_PLAY;
530 2 break;
531 2 case 6:
532 2 P0 = X_MENU;
533 2 break;
534 2 case 7:
535 2 P0 = X_UP;
536 2 break;
537 2 case 8:
538 2 P0 = X_DOWN;
539 2 break;
540 2 case 9:
541 2 P0 = X_SELECT;
542 2 break;
543 2 case 0X1E:
544 2 P0 = X_REC;
545 2 break;
546 2
547 2 default:
548 2 break;
549 2 }
550 1 }
551
C51 COMPILER V6.23a CONT 11/23/2003 16:41:45 PAGE 10
552
553 void delay(int ms)
554 {
555 1 int i,j;
556 1 for (i=0;i<ms;i++)
557 1 for(j=0;j<255;j++);
558 1 }
559
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1157 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 4
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -