📄 main.lst
字号:
602 0000F03D A9 01 < lda #1
603 0000F03F 85 62 < sta IB_KeyupFlag ;Key not up
604 0000F041 4C 56 F0 < jmp ?L_CmpClr
605 <
606 0000F044 < ?L_JudgeUp:
607 0000F044 A5 2B < lda P_AD_DataHi
608 0000F046 C9 04 < cmp #$4 ;Key up?
609 0000F048 B0 0C < bcs ?L_CmpClr ;No
610 0000F04A E6 64 < inc IB_CmpTimers ;\
611 0000F04C A5 64 < lda IB_CmpTimers ;+ = Compare 4 times untile all Keys up
612 0000F04E C9 04 < cmp #CB_CmpTimers ;+
613 0000F050 90 08 < bcc ?L_ADKeyx16Exit ;/
614 0000F052 A9 00 < lda #0
615 0000F054 85 62 < sta IB_KeyupFlag ;Keys up
616 0000F056 < ?L_CmpClr:
617 0000F056 A9 00 < lda #0
618 0000F058 85 64 < sta IB_CmpTimers
619 0000F05A < ?L_ADKeyx16Exit:
620 0000F05A 60 < rts
621 <
622 < ;==================================================================================
623 < ; Function: F_Light
624 < ; Description: light LEDs to reflect the Keys value
625 < ; Input: GB_KeyValue------Keys value
626 < ; Output: none
627 < ; Destroy: A
628 < ; Stacks: 1
629 < ;==================================================================================
630 < .PUBLIC F_Light
631 0000F05B < F_Light:
632 0000F05B A5 60 < lda GB_KeyValue
633 0000F05D 85 02 < sta P_IOC_Data
634 0000F05F 60 < rts
635 < ;==================================================================================
636 < ; Function: F_AD_KeyInit
637 < ; Description: initialize PC as output "0", set ADC
638 < ; Input: none
639 < ; Output: none
640 < ; Destroy: A
641 < ; Stacks: 1
642 < ;==================================================================================
643 0000F060 < F_AD_KeyInit:
644 0000F060 A9 00 < lda #0
645 0000F062 85 0A < sta P_IOC_Attrib
646 0000F064 85 02 < sta P_IOC_Data
647 0000F066 A9 FF < lda #$FF
648 0000F068 85 06 < sta P_IOC_Dir
649 <
650 0000F06A A9 80 < lda #(C_AD_CE+C_AD_Ch0) ;Select channel 0 (AN0)
651 0000F06C 85 2A < sta P_AD_Ctrl2
652 <
653 0000F06E A9 88 < lda #(C_AD_EN+C_AD_CS_32) ;Fcpu/32
654 0000F070 09 01 < ora #00000001B
655 0000F072 85 28 < sta P_AD_Ctrl0
656 <
657 0000F074 A9 01 < lda #C_AD_Pin0 ;Analog input : channel 0
658 0000F076 85 29 < sta P_AD_Ctrl1
659 <
660 0000F078 60 < rts
661 <
662 < ;==================================================================================
663 < ; Function: F_Variable_Init
664 < ; Description: Initialize variables
665 < ; Input: none
666 < ; Output: none
667 < ; Destroy: A
668 < ; Stacks: 1
669 < ;==================================================================================
670 0000F079 < F_Variable_Init:
671 0000F079 A9 00 < lda #0
672 0000F07B 85 61 < sta GB_KeyDownFlag ;Keys are not down in initial state
673 0000F07D 85 64 < sta IB_CmpTimers ;The times of compare is 0 in initial state
674 0000F07F 85 62 < sta IB_KeyupFlag ;Keys are all up in initial state
675 0000F081 85 60 < sta GB_KeyValue ;Key value
676 0000F083 60 < rts
677 <
678 <
679 ;**********************************************************************************
680 ;* *
681 ;* Power on Reset Process *
682 ;* *
683 ;**********************************************************************************
684 0000F084 V_Reset:
685 0000F084 78 sei ;Disable interrupt
686 0000F085 A2 FF ldx #C_STACK_BOTTOM ;Initial stack pointer at $00FF
687 0000F087 9A txs ;Transfer to stack point
688
689 0000F088 20 79 F0 jsr F_Variable_Init ;Initialize variables
690 0000F08B 20 60 F0 jsr F_AD_KeyInit ;Initialize ADC function
691
692 ;------------------------------------------------------
693 ;1.024ms loop
694 ;------------------------------------------------------
695 0000F08E A9 70 lda #C_TBASE_Div_8k ;1.024ms
696 0000F090 85 2D sta P_BUZ_Ctrl
697
698 0000F092 ?L_Main_Loop:
699 0000F092 A2 00 ldx #0
700 0000F094 ?L_Loop:
701 0000F094 A5 26 lda P_INT_Flag2
702 0000F096 29 20 and #C_INT_ITVALIF ;Check Timer base INT?
703 0000F098 F0 FA beq ?L_Loop ;No
704 0000F09A A9 20 lda #C_INT_ITVALIF
705 0000F09C 85 26 sta P_INT_Flag2 ;Clear INT request flag
706 0000F09E E8 inx
707 0000F09F E0 08 cpx #8 ;8 ms coming?
708 0000F0A1 90 F1 bcc ?L_Loop ;no
709
710 0000F0A3 20 00 F0 jsr F_ADKeyx16 ;Scanning 16 keys
711
712 0000F0A6 A5 61 lda GB_KeyDownFlag ;Key down?
713 0000F0A8 F0 07 beq ?L_LoopExit ;No
714 0000F0AA A9 00 lda #0
715 0000F0AC 85 61 sta GB_KeyDownFlag ;Clear key down flag
716
717 0000F0AE 20 5B F0 jsr F_Light ;Show the key value
718
719 0000F0B1 ?L_LoopExit:
720 0000F0B1 4C 92 F0 jmp ?L_Main_Loop
721
722 ;**********************************************************************************
723 ;* *
724 ;* Interrupt service process *
725 ;* *
726 ;**********************************************************************************
727 0000F0B4 V_IRQ:
728 0000F0B4 40 rti
729
730 0000F0B5 V_NMI:
731 0000F0B5 40 rti
732
733 0000FFFA VECTOR: .SECTION
734 ;**********************************************************************************
735 ;* *
736 ;* Interrupt Vector Table *
737 ;* *
738 ;**********************************************************************************
739 0000FFFA B5 F0 DW V_NMI ;Non-mask interrupt vector(no use)
740 0000FFFC 84 F0 DW V_Reset ;Reset vector
741 0000FFFE B4 F0 DW V_IRQ ;IRQ interrupt vector
742 ;**********************************************************************************
743 ;* *
744 ;* End of Interrupt Vector Table *
745 ;* *
746 ;**********************************************************************************
747 .END
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -