?? ps2_bin.ls1
字號:
436 ;
437 ; };
438 ; unsigned char code e0_keyval[]=
439 ; {0x11,0x1F,0x14,0x12,0x70,0x6c,0x7d,0x71,0x69,0x7a,0x4a,0x5a,0x75,0x6b,0x72,0x74,0x5e,0x3
f,0x37,0x7c,0x27,0x2f};
440 ; unsigned char code pausekey[]={0xe1,0x14};
441 ; //unsigned char code pausekey[]={0xe1,0x14}
442 ;
443 ; void main()
444
---- 445 RSEG ?PR?main?PS2_BIN
0000 446 main:
447 USING 0
448 ; SOURCE LINE # 113
449 ; {
450 ; SOURCE LINE # 114
451 ; DINT; //關中斷
452 ; SOURCE LINE # 115
0000 C2AF 453 CLR EA
A51 MACRO ASSEMBLER PS2_BIN 05/26/2005 15:31:26 PAGE 8
454 ;
455 ; for(i=0;i<1000;i++)
456 ; SOURCE LINE # 117
0002 E4 457 CLR A
0003 F500 F 458 MOV i,A
0005 F500 F 459 MOV i+01H,A
0007 460 ?C0001:
0007 0500 F 461 INC i+01H
0009 E500 F 462 MOV A,i+01H
000B 7002 463 JNZ ?C0160
000D 0500 F 464 INC i
000F 465 ?C0160:
000F B4E8F5 466 CJNE A,#0E8H,?C0001
0012 E500 F 467 MOV A,i
0014 B403F0 468 CJNE A,#03H,?C0001
0017 469 ?C0002:
470 ; ;//延時穩定
471 ;
472 ; /* 初始化變量 */
473 ; sda = 0;
474 ; SOURCE LINE # 121
0017 C2B4 475 CLR sda
476 ; scl = 0; //端口設置為高
477 ; SOURCE LINE # 122
0019 C2B2 478 CLR scl
479 ; key_sw = 1; //關鍵盤
480 ; SOURCE LINE # 123
001B D291 481 SETB key_sw
482 ; for(i=0;i<1000;i++)
483 ; SOURCE LINE # 124
001D E4 484 CLR A
001E F500 F 485 MOV i,A
0020 F500 F 486 MOV i+01H,A
0022 487 ?C0004:
488 ; Delay(10);
489 ; SOURCE LINE # 125
0022 7F0A 490 MOV R7,#0AH
0024 120000 F 491 LCALL _Delay
0027 0500 F 492 INC i+01H
0029 E500 F 493 MOV A,i+01H
002B 7002 494 JNZ ?C0162
002D 0500 F 495 INC i
002F 496 ?C0162:
002F C3 497 CLR C
0030 94E8 498 SUBB A,#0E8H
0032 E500 F 499 MOV A,i
0034 6480 500 XRL A,#080H
0036 9483 501 SUBB A,#083H
0038 40E8 502 JC ?C0004
003A 503 ?C0005:
504 ; for(i = 0;i<16;i++)
505 ; SOURCE LINE # 126
003A E4 506 CLR A
003B F500 F 507 MOV i,A
003D F500 F 508 MOV i+01H,A
003F 509 ?C0007:
510 ; {
511 ; SOURCE LINE # 127
512 ; KeyCodeBuff[i] = 0;
513 ; SOURCE LINE # 128
003F 7400 F 514 MOV A,#LOW (KeyCodeBuff)
0041 2500 F 515 ADD A,i+01H
0043 F8 516 MOV R0,A
0044 E4 517 CLR A
0045 F6 518 MOV @R0,A
519 ; }
A51 MACRO ASSEMBLER PS2_BIN 05/26/2005 15:31:26 PAGE 9
520 ; SOURCE LINE # 129
0046 0500 F 521 INC i+01H
0048 E500 F 522 MOV A,i+01H
004A 7002 523 JNZ ?C0163
004C 0500 F 524 INC i
004E 525 ?C0163:
004E 6410 526 XRL A,#010H
0050 4500 F 527 ORL A,i
0052 70EB 528 JNZ ?C0007
0054 529 ?C0008:
530 ; KeyCodeSum = 0;
531 ; SOURCE LINE # 130
0054 E4 532 CLR A
0055 F500 F 533 MOV KeyCodeSum,A
534 ; KeyFlag = 0;
535 ; SOURCE LINE # 131
0057 C200 F 536 CLR KeyFlag
537 ; KeyUpFlag = 0;
538 ; SOURCE LINE # 132
0059 C200 F 539 CLR KeyUpFlag
540 ; KeyExtendFlag = 0;
541 ; SOURCE LINE # 133
005B C200 F 542 CLR KeyExtendFlag
543 ; KeyLedLockFlag = 0;
544 ; SOURCE LINE # 134
005D C200 F 545 CLR KeyLedLockFlag
546 ; KeyBoardConnectFlag = 0;
547 ; SOURCE LINE # 135
005F C200 F 548 CLR KeyBoardConnectFlag
549 ; KeyPauseFlag = 0;
550 ; SOURCE LINE # 136
0061 C200 F 551 CLR KeyPauseFlag
552 ; KeyMakeCodeFlag = 0;
553 ; SOURCE LINE # 137
0063 C200 F 554 CLR KeyMakeCodeFlag
555 ; KeyIDLo = 0;
556 ; SOURCE LINE # 138
0065 F500 F 557 MOV KeyIDLo,A
558 ; KeyIDHi = 0;
559 ; SOURCE LINE # 139
0067 F500 F 560 MOV KeyIDHi,A
561 ; LedStatus = 0;
562 ; SOURCE LINE # 140
0069 F500 F 563 MOV LedStatus,A
564 ; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
565 ; TMOD=0x22; // 定時器1 工作于方式2
566 ; SOURCE LINE # 142
006B 758922 567 MOV TMOD,#022H
568 ; //20
569 ; SCON=0x40; // 串口工作于方式1
570 ; SOURCE LINE # 144
006E 759840 571 MOV SCON,#040H
572 ; TH1=0xfa; //裝入初值,22.1184MHZ 的晶振,9600 的波特率
573 ; SOURCE LINE # 145
0071 758DFA 574 MOV TH1,#0FAH
575 ; TL1=0xfa;
576 ; SOURCE LINE # 146
0074 758BFA 577 MOV TL1,#0FAH
578 ; TL0 = 0xff;
579 ; SOURCE LINE # 147
0077 758AFF 580 MOV TL0,#0FFH
581 ; TH0 = 0xff;
582 ; SOURCE LINE # 148
007A 758CFF 583 MOV TH0,#0FFH
584 ; PCON=0x00; //波特率無倍增
585 ; SOURCE LINE # 149
A51 MACRO ASSEMBLER PS2_BIN 05/26/2005 15:31:26 PAGE 10
007D F587 586 MOV PCON,A
587 ; TR1=1; //開啟定時器1 開始工作
588 ; SOURCE LINE # 150
007F D28E 589 SETB TR1
590 ; TR0=1; //開啟定時器0 開始工作
591 ; SOURCE LINE # 151
0081 D28C 592 SETB TR0
593 ; //EA=1;
594 ;
595 ; ES=1;
596 ; SOURCE LINE # 154
0083 D2AC 597 SETB ES
598 ; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
599 ; /*
600 ; TMOD = 0x22; //T1為波特率發生器設置19200波特率
601 ; //T0為采樣鍵盤時鐘發生器
602 ; TL1 = 0xFD;
603 ; TH1 = 0xFD;
604 ; // TL0 =
605 ; // TH0 =
606 ; PCON |= 0x80; //SMOD設置為1
607 ; SCON = 0x50; //串口控制寄存器
608 ; //工作方式
609 ; //非多機通訊方式
610 ; //允許接收
611 ; //
612 ;
613 ; TR1 = 1; //定時器1開始
614 ; */
615 ; IT0 = 0; //低電平引起中斷
616 ; SOURCE LINE # 172
0085 C288 617 CLR IT0
618 ;
619 ; ES = 1; //開串口中斷
620 ; SOURCE LINE # 174
0087 D2AC 621 SETB ES
622 ; EX0 = 1; //開外部0中斷
623 ; SOURCE LINE # 175
0089 D2A8 624 SETB EX0
625 ; key_sw = 0; //開鍵盤電源
626 ; SOURCE LINE # 176
008B C291 627 CLR key_sw
628 ; scl = 1;
629 ; SOURCE LINE # 177
008D D2B2 630 SETB scl
631 ; sda = 1;
632 ; SOURCE LINE # 178
008F D2B4 633 SETB sda
634 ;
635 ; Delay(1);
636 ; SOURCE LINE # 180
0091 7F01 637 MOV R7,#01H
0093 120000 F 638 LCALL _Delay
0096 639 ?C0010:
640 ; while(!KeyBoardConnectFlag)
641 ; SOURCE LINE # 181
0096 200005 F 642 JB KeyBoardConnectFlag,?C0011
643 ; ReadPS2();//等待鍵盤自檢成功
644 ; SOURCE LINE # 182
0099 120000 F 645 LCALL ReadPS2
009C 80F8 646 SJMP ?C0010
009E 647 ?C0011:
648 ;
649 ; Order(COMMAND_RESET); //復位鍵盤
650 ; SOURCE LINE # 184
009E 7FFF 651 MOV R7,#0FFH
A51 MACRO ASSEMBLER PS2_BIN 05/26/2005 15:31:26 PAGE 11
00A0 120000 F 652 LCALL _Order
653 ; ReadPS2(); //等待鍵盤應答
654 ; SOURCE LINE # 185
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -