?? key2.lst
字號(hào):
"File: KEY2.ASM Holtek Cross-Assembler Version 2.86 Page 9
454 0153 ;Input : ACC = Instruction numbers
455 0153 DelayNInst:
456 0153 1785 SDZ ACC
457 0154 2800 R JMP DelayNInst
458 0155 0003 RET
459 0156
460 0156 ;----BEGIN (Remove one keyboard index from keyboard buffer)
461 0156 ;Remove one keyboard index ([IndexBuf]) from keyboard buffer
462 0156 ;Output: Z = 1:Remove/0:None
463 0156 RemoveKey:
464 0156 0F00 R MOV A,OFFSET KEY_Code1B
465 0157 0081 MOV MP0,A
466 0158 RemoveKeyLp:
467 0158 0700 R MOV A,IndexBuf
468 0159 0400 XOR A,R0
469 015A 3D0A SZ Z
470 015B 2800 R JMP ExtRemove
471 015C 1481 INC MP0
472 015D 0F00 R MOV A,OFFSET KEY_BUF_END ;until buffer end (6)
473 015E 0401 XOR A,MP0
474 015F 390A SNZ Z
475 0160 2800 R JMP RemoveKeyLp
476 0161 350A CLR Z
477 0162 0003 RET
478 0163 ExtRemove:
479 0163 1F00 CLR R0
480 0164 0003 RET
481 0165 ;----END (Remove one keyboard index from keyboard buffer)
482 0165
483 0165 ;----BEGIN (reorder all 0 value in keybaord buffer to buffer's tail)
484 0165 ;reorder all 0 value in keybaord buffer to buffer's tail
485 0165 SortKeyboardBuf:
486 0165 0F00 R MOV A,OFFSET KEY_CODE1B
487 0166 0081 MOV MP0,A
488 0167 SortKeyboardBufLp:
489 0167 0700 R MOV A,BUFF_Index
490 0168 0401 XOR A,MP0
491 0169 3D0A SZ Z
492 016A 2800 R JMP ExtSortKey
493 016B 0700 MOV A,R0
494 016C 1481 INC MP0
495 016D 1085 SZ ACC
496 016E 2800 R JMP SortKeyboardBufLp
497 016F 0700 MOV A,R0
498 0170 1581 DEC MP0
499 0171 0080 MOV R0,A
500 0172 1481 INC MP0
501 0173 1F00 CLR R0
502 0174 2800 R JMP SortKeyboardBufLp
503 0175 ExtSortKey:
504 0175 1580 R DEC BUFF_Index
505 0176 0003 RET
506 0177 ;----END (reorder all 0 value in keybaord buffer to buffer's tail)
507 0177
508 0177
509 0177 ;----------------------------------------------------------------------------
510 0177 ;Input
511 0177 ;ACC : store the present scan out line
512 0177 ;Output
513 0177 ;Change I/O PB,PC,PD state
"File: KEY2.ASM Holtek Cross-Assembler Version 2.86 Page 10
514 0177 ;variable used
515 0177 ;temp1 : temporary variable
516 0177
517 0177 GetScanPortAndBit:
518 0177 0080 R mov temp1,a
519 0178
520 0178 1F95 set ScanOut1C
521 0179 1F99 set ScanOut3C
522 017A 0FF0 mov a,Scan2_Mask
523 017B 0597 orm a,ScanOut2C
524 017C
525 017C 0F15 mov a,scanout1C_adr ;1~8
526 017D 3C00 R sz temp1.3
527 017E 0F19 mov a,scanout3C_adr ;9~16
528 017F 3C00 R sz temp1.4
529 0180 0F17 mov a,scanout2C_adr ;17~20
530 0181 0081 mov mp0,a
531 0182 3400 R clr temp1.4
532 0183 1480 R inc temp1
533 0184 0F7F mov a,01111111b
534 0185 next_bit:
535 0185 1885 rl acc
536 0186 1780 R sdz temp1
537 0187 2800 R jmp next_bit
538 0188 0080 R mov temp1,a
539 0189 0701 mov a,mp0
540 018A 0C17 xor a,scanout2C_adr
541 018B 0700 R mov a,temp1
542 018C 390A snz z
543 018D 2800 R JMP SetLine
544 018E ScanOut2Line:
545 018E 1180 R swap temp1
546 018F 0FF0 MOV A,Scan2_Mask ;Mask for ScanOut2
547 0190 0680 R ANDM A,Temp1 ;
548 0191 0716 MOV A,LED_PORT ;Get LED_PORT state
549 0192 0E0F AND A,LED_Mask ;
550 0193 0500 R OR A,Temp1
551 0194 SetLine:
552 0194 0080 MOV R0,A
553 0195 1581 dec MP0
554 0196 0080 MOV R0,A
555 0197 0700 R mov a,kb_led
556 0198 2800 R jmp setled
557 0199
558 0199 ;----------------------------------------------------------------------------
559 0199 SETLED:
560 0199 3805 snz acc.@num_bit
561 019A 2800 R jmp turn_off_num
562 019B turn_on_num:
563 019B 3497 clr led_num_c
564 019C 3496 clr led_num
565 019D 2800 R jmp examine_cap_state
566 019E turn_off_num:
567 019E 3097 set led_num_c
568 019F 3096 set led_num
569 01A0
570 01A0
571 01A0 examine_cap_state:
572 01A0 3885 snz acc.@cap_bit
573 01A1 2800 R jmp turn_off_cap
"File: KEY2.ASM Holtek Cross-Assembler Version 2.86 Page 11
574 01A2 turn_on_cap:
575 01A2 3517 clr led_cap_C
576 01A3 3516 clr led_cap
577 01A4 2800 R jmp examine_scroll_state
578 01A5 turn_off_cap:
579 01A5 3117 set led_cap_C
580 01A6 3116 set led_cap
581 01A7 examine_scroll_state:
582 01A7 3905 snz acc.@scrl_bit
583 01A8 2800 R jmp turn_off_scroll
584 01A9 turn_on_scroll:
585 01A9 3597 clr led_scrl_c
586 01AA 3596 clr led_scrl
587 01AB 2800 R jmp out_of_examine_led
588 01AC turn_off_scroll:
589 01AC 3197 set led_scrl_c
590 01AD 3196 set led_scrl
591 01AE out_of_examine_led:
592 01AE 0003 ret
593 01AF ;------------------------------------------------------------------------------
594 01AF MoveKeyboardData:
595 01AF 3C00 R sz bPhantom
596 01B0 2800 R jmp out_kb_error_status
597 01B1 1F04 CLR BP ;set to BP 0
598 01B2 0F00 R MOV A,OFFSET KEY_Mdfb ;report buffer pointer
599 01B3 0081 MOV MP0,A ;
600 01B4 0F00 E MOV A,OFFSET FIFO_OUT1 ;FIFO_OUTx pointer
601 01B5 0083 MOV MP1,A ;
602 01B6 GetInputSLp:
603 01B6 0700 MOV A,R0 ;move report buffer
604 01B7 0082 MOV R1,A ; into FIFO_OUT
605 01B8 1481 INC MP0 ;Update source pointer
606 01B9 1483 INC MP1 ;Update target pointer
607 01BA 1480 E INC FIFO_SendLen ;Update FIFO data length
608 01BB 0F00 R MOV A,OFFSET KEY_Mdfb + REPORT_KB_SIZE ;end buffer address
609 01BC 0401 XOR A,MP0 ;End buffer ?
610 01BD 390A SNZ Z ;
611 01BE 2800 R JMP GetInputSLp ;No
612 01BF
613 01BF
614 01BF
615 01BF out_of_MOVEKEYBOARDDATA:
616 01BF 0F01 MOV A,USB_REG_BANK ;Yes: Reset to USB register bank
617 01C0 0084 MOV BP,A
618 01C1 0003 ret
619 01C2
620 01C2 ;------------------------------------------------------------------------------
621 01C2 out_kb_error_status:
622 01C2 0F01 mov a,01
623 01C3 0080 E mov fifo_out1,a
624 01C4 0080 E mov fifo_out2,a
625 01C5 0080 E mov fifo_out3,a
626 01C6 0080 E mov fifo_out4,a
627 01C7 0080 E mov fifo_out5,a
628 01C8 0080 E mov fifo_out6,a
629 01C9 0080 E mov fifo_out7,a
630 01CA 0080 E mov fifo_out8,a
631 01CB 2800 R jmp out_of_MOVEKEYBOARDDATA
632 01CC ;------------------------------------------------------------------------------
633 01CC kb_io_config:
"File: KEY2.ASM Holtek Cross-Assembler Version 2.86 Page 12
634 01CC 1F94 set ScanOut1
635 01CD 1F95 set ScanOut1c
636 01CE 0FF0 mov a,Scan2_Mask
637 01CF 0596 orm a,scanout2
638 01D0 0597 orm a,scanout2c
639 01D1 1F98 set scanout3
640 01D2 1F99 set scanout3c
641 01D3 0FFE mov a,11111110b
642 01D4 0697 andm a,led_port_c
643 01D5 0696 andm a,led_port
644 01D6 0003 ret
645 01D7 ;----------------------------------------------------------------------------
646 01D7 KB_INITIAL:
647 01D7 0F00 R MOV A,OFFSET STATE_BUF_BEG
648 01D8 0081 MOV MP0,A
649 01D9 InitRAMLp_KB:
650 01D9 1F80 SET R0
651 01DA 1481 INC MP0
652 01DB 0F00 R MOV A,OFFSET STATE_BUF_END
653 01DC 0401 XOR A,MP0
654 01DD 390A SNZ Z
655 01DE 2800 R JMP InitRAMLp_KB
656 01DF 0F00 R MOV A,OFFSET KEY_Code1B ;Reset keyboard buffer pointer to
657 01E0 0080 R MOV BUFF_Index,A ; 1st KeyCode
658 01E1
659 01E1
660 01E1 1F00 R clr ScanLineNo
661 01E2 0003 ret
662 01E3 ;----------------------------------------------------------------------------
663 01E3 kb_suspend:
664 01E3 0F00 mov a,00000000b
665 01E4 0095 mov ScanOut1C,a ;Set all scan row 0 lines to output mode
666 01E5 0094 mov Scanout1,a
667 01E6
668 01E6 0F0E mov a,00001110b
669 01E7 0097 MOV ScanOut2C,A ;Set all scan row 2 lines to output mode
670 01E8 0096 MOV ScanOut2,A ;Set all scan row 2 lines to low
671 01E9
672 01E9 0F00 mov a,00000000b
673 01EA 0099 mov ScanOut3C,a ;Set all scan row 0 lines to output mode
674 01EB 0098 mov Scanout3,a
675 01EC 0003 ret
676 01ED ;----------------------------------------------------------------------------
677 01ED
678 01ED
679 01ED
680 01ED
681 01ED PUBLIC examine_kb_state
682 01ED public setled
683 01ED public MoveKeyboardData
684 01ED public get_kb_matrix_end_pcl
685 01ED public get_kb_matrix_start_pcl
686 01ED public kb_suspend
687 01ED public KB_INITIAL
688 01ED public kb_io_config
689 01ED
690 01ED END
0 Errors
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -