📄 hal_key.lst
字号:
608 *
609 * @brief - Get called when sleep is over
610 *
611 * @param
612 *
613 * @return - return saved keys
614 **************************************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
615 uint8 HalKeyExitSleep ( void )
\ HalKeyExitSleep:
616 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
617 /* Wake up and read keys */
618 return ( HalKeyRead () );
\ 000000 80.. SJMP ?Subroutine0
619 }
620
621 /***************************************************************************************************
622 * INTERRUPT SERVICE ROUTINE
623 ***************************************************************************************************/
624
625 /**************************************************************************************************
626 * @fn halKeyPort0Isr
627 *
628 * @brief Port0 ISR
629 *
630 * @param
631 *
632 * @return
633 **************************************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
634 HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
\ halKeyPort0Isr:
635 {
\ 000000 C0E0 PUSH A
\ 000002 C0D0 PUSH PSW
\ 000004 C082 PUSH DPL
\ 000006 C083 PUSH DPH
\ 000008 ; Saved register size: 4
\ 000008 ; Auto size: 0
636 /* P0IF is cleared by HW for CHVER < REV_E */
637
638 halProcessKeyInterrupt();
639
640 if( CHVER >= REV_E )
\ 000008 90DF60 MOV DPTR,#-0x20a0
\ 00000B E0 MOVX A,@DPTR
\ 00000C C3 CLR C
\ 00000D 9404 SUBB A,#0x4
\ 00000F 4005 JC ??halKeyPort0Isr_0
641 {
642 /* Make sure that we clear all enabled, but unused P0IFG bits.
643 * For P0 we can only enable or disable high or low nibble, not bit by
644 * bit. For P1 and P2 enabling of single bits are possible, therefore
645 * will not any unused pins generate interrupts on P1 or P2.
646 * We could have checked for low and high nibble in P0, but this
647 * isn't necessary as long as we only clear unused pin interrupts.
648 */
649 P0IFG = (HAL_KEY_P0INT_LOW_USED | HAL_KEY_POINT_HIGH_USED);
\ 000011 758902 MOV 0x89,#0x2
650 P0IF = 0;
\ 000014 C2C5 CLR 0xc0.5
651 CLEAR_SLEEP_MODE();
652 }
653 }
\ ??halKeyPort0Isr_0:
\ 000016 REQUIRE ?Subroutine1
\ 000016 ; // Fall through to label ?Subroutine1
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 D0D0 POP PSW
\ 000006 D0E0 POP A
\ 000008 32 RETI
654
655 /**************************************************************************************************
656 * @fn halKeyPort1Isr
657 *
658 * @brief Port1 ISR
659 *
660 * @param
661 *
662 * @return
663 **************************************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
664 HAL_ISR_FUNCTION( halKeyPort1Isr, P1INT_VECTOR )
\ halKeyPort1Isr:
665 {
\ 000000 C0E0 PUSH A
\ 000002 C0D0 PUSH PSW
\ 000004 C082 PUSH DPL
\ 000006 C083 PUSH DPH
\ 000008 ; Saved register size: 4
\ 000008 ; Auto size: 0
666 if( CHVER <= REV_D )
\ 000008 90DF60 MOV DPTR,#-0x20a0
\ 00000B E0 MOVX A,@DPTR
\ 00000C C3 CLR C
\ 00000D 9404 SUBB A,#0x4
\ 00000F 5002 JNC ??halKeyPort1Isr_0
667 {
668 P1IF = 0;
\ 000011 C2EB CLR 0xe8.3
669 }
670
671 halProcessKeyInterrupt();
672
673 if( CHVER >= REV_E )
\ ??halKeyPort1Isr_0:
\ 000013 E0 MOVX A,@DPTR
\ 000014 C3 CLR C
\ 000015 9404 SUBB A,#0x4
\ 000017 4002 JC ??halKeyPort1Isr_1
674 {
675 P1IF = 0;
\ 000019 C2EB CLR 0xe8.3
676 CLEAR_SLEEP_MODE();
677 }
678 }
\ ??halKeyPort1Isr_1:
\ 00001B 80.. SJMP ?Subroutine1
679
680 /**************************************************************************************************
681 * @fn halKeyPort2Isr
682 *
683 * @brief Port2 ISR
684 *
685 * @param
686 *
687 * @return
688 **************************************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
689 HAL_ISR_FUNCTION( halKeyPort2Isr, P2INT_VECTOR )
\ halKeyPort2Isr:
690 {
\ 000000 C0E0 PUSH A
\ 000002 C0D0 PUSH PSW
\ 000004 C082 PUSH DPL
\ 000006 C083 PUSH DPH
\ 000008 ; Saved register size: 4
\ 000008 ; Auto size: 0
691 if( CHVER <= REV_D )
\ 000008 90DF60 MOV DPTR,#-0x20a0
\ 00000B E0 MOVX A,@DPTR
\ 00000C C3 CLR C
\ 00000D 9404 SUBB A,#0x4
\ 00000F 5002 JNC ??halKeyPort2Isr_0
692 {
693 P2IF = 0;
\ 000011 C2E8 CLR 0xe8.0
694 }
695
696 halProcessKeyInterrupt();
697
698 if( CHVER >= REV_E )
\ ??halKeyPort2Isr_0:
\ 000013 E0 MOVX A,@DPTR
\ 000014 C3 CLR C
\ 000015 9404 SUBB A,#0x4
\ 000017 4002 JC ??halKeyPort2Isr_1
699 {
700 P2IF = 0;
\ 000019 C2E8 CLR 0xe8.0
701 CLEAR_SLEEP_MODE();
702 }
703 }
\ ??halKeyPort2Isr_1:
\ 00001B 80.. SJMP ?Subroutine1
\ In segment INTVEC, offset 0x33, root
\ `halKeyPort2Isr??INTVEC 51`:
\ 000033 02.... LJMP (halKeyPort2Isr)
\ In segment INTVEC, offset 0x6b, root
\ `halKeyPort0Isr??INTVEC 107`:
\ 00006B 02.... LJMP (halKeyPort0Isr)
\ In segment INTVEC, offset 0x7b, root
\ `halKeyPort1Isr??INTVEC 123`:
\ 00007B 02.... LJMP (halKeyPort1Isr)
\ In segment SFR_AN, at 0xc0
\ union <unnamed> volatile __sfr _A_IRCON
\ _A_IRCON:
\ 000000 DS 1
\ In segment SFR_AN, at 0xe8
\ union <unnamed> volatile __sfr _A_IRCON2
\ _A_IRCON2:
\ 000000 DS 1
704
705 /**************************************************************************************************
706 **************************************************************************************************/
707
708
709
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
HalKeyConfig 0 0 3
HalKeyEnterSleep 0 0 0
HalKeyExitSleep 0 0 0
HalKeyInit 0 0 0
HalKeyPoll 0 0 0
HalKeyRead 0 0 0
halKeyPort0Isr 4 0 0
halKeyPort1Isr 4 0 0
halKeyPort2Isr 4 0 0
halProcessKeyInterrupt 0 0 0
Segment part sizes:
Function/Label Bytes
-------------- -----
P0IFG 1
Hal_KeyIntEnable 1
halSaveIntKey 1
HalKeyInit 3
HalKeyConfig 3
HalKeyRead 0
?Subroutine0 5
HalKeyPoll 3
halProcessKeyInterrupt 3
HalKeyEnterSleep 3
HalKeyExitSleep 2
halKeyPort0Isr 22
?Subroutine1 9
halKeyPort1Isr 29
halKeyPort2Isr 29
halKeyPort2Isr??INTVEC 51 3
halKeyPort0Isr??INTVEC 107 3
halKeyPort1Isr??INTVEC 123 3
_A_IRCON 1
_A_IRCON2 1
22 bytes in segment BANKED_CODE
9 bytes in segment INTVEC
89 bytes in segment NEAR_CODE
3 bytes in segment SFR_AN
2 bytes in segment XDATA_Z
111 bytes of CODE memory (+ 9 bytes shared)
0 bytes of DATA memory (+ 3 bytes shared)
2 bytes of XDATA memory
Errors: none
Warnings: 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -