⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 option.asm

📁 万能遥控器原代码!技术非常成熟
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        inc     key_num
scan_b4_loop1:
        bne     scan_b4_loop
        nop
        lda     key_num
        cmp     #2
        bcc     scan_b5
        jmp     scan_key_end

scan_b5:
        lda     #11100000b
        sta     IOBDIR
        sta     IOBPLH
        lda     #11011111b
        and     IOB
        ora     #00011111b
        sta     IOB

        lda     IOAPAD
        eor     #0FFH
        beq     scan_key_end
        sta     temp2
        and     key_temp
        cmp     key_temp
        bne     scan_b5_loop
        eor     #0ffh
        and     temp2
scan_b5_loop:
        asl     a
        bcc     scan_b5_loop1
        inc     key_num
scan_b5_loop1:
        bne     scan_b5_loop
        nop
;        jmp     scan_key_end

scan_key_end:
	rts
;************************************************
scan_option:
        stz     flag_temp
        stz     cnt
        stz     cnt0
        stz     cnt1
        stz     cnt2
        stz     cnt3
        stz     cnt4
        stz     cnt5

scan_iob0:
;        lda     #1
;        sta     temp1
;        jsr     delay100us
        stz     IOBPLH
        nop
        nop

        lda     #11000010b
        sta     IOBDIR
        lda     #11111101b
        and     IOB
        sta     IOB
        lda     #ffh
        sta     IOBPLH
        nop
        nop

        jsr     delay2ms
        lda     IOBPAD
        and     #00000001b
        bne     cnt_iob0

        lda     #00000010b
        ora     IOB
        sta     IOB
        jsr     delay2ms
        lda     IOBPAD
        and     #00000001b
        beq     cnt_iob0
        inc     cnt0
cnt_iob0:
        inc     cnt
        lda     cnt
        cmp     #4
        bcc     scan_iob0
        lda     cnt0
        cmp     #4
        bcc     reset_iob0
        lda     #00000001b
        ora     flag_temp
        sta     flag_temp
reset_iob0:
        stz     cnt
;        stz     cnt1

        jsr     scan_key
        lda     key_num
        beq     scan_iob1
        jmp     scan_option_end

scan_iob1:
;        lda     #1
;        sta     temp1
;        jsr     delay100us
        stz     IOBPLH
        nop
        nop

        lda     #11000100b
        sta     IOBDIR
        lda     #11111011b
        and     IOB
        sta     IOB
        lda     #ffh
        sta     IOBPLH
        nop
        nop

        jsr     delay2ms
        lda     IOBPAD
        and     #00000010b
        bne     cnt_iob1

        lda     #00000100b
        ora     IOB
        sta     IOB
        jsr     delay2ms
        lda     IOBPAD
        and     #00000010b
        beq     cnt_iob1
        inc     cnt1
cnt_iob1:
        inc     cnt
        lda     cnt
        cmp     #4
        bcc     scan_iob1
        lda     cnt1
        cmp     #4
        bcc     reset_iob1
        lda     #00000010b
        ora     flag_temp
        sta     flag_temp
reset_iob1:
        stz     cnt
;        stz     cnt2

        jsr     scan_key
        lda     key_num
        beq     scan_iob2
        jmp     scan_option_end

scan_iob2:
;        lda     #1
;        sta     temp1
;        jsr     delay100us
        stz     IOBPLH
        nop
        nop

        lda     #11001000b
        sta     IOBDIR
        lda     #11110111b
        and     IOB
        sta     IOB
        lda     #ffh
        sta     IOBPLH
        nop
        nop

        jsr     delay2ms
        lda     IOBPAD
        and     #00000100b
        bne     cnt_iob2

        lda     #00001000b
        ora     IOB
        sta     IOB
        jsr     delay2ms
        lda     IOBPAD
        and     #00000100b
        beq     cnt_iob2
        inc     cnt2
cnt_iob2:
        inc     cnt
        lda     cnt
        cmp     #4
        bcc     scan_iob2
        lda     cnt2
        cmp     #4
        bcc     reset_iob2
        lda     #00000100b
        ora     flag_temp
        sta     flag_temp
reset_iob2:
        stz     cnt
;        stz     cnt3

        jsr     scan_key
        lda     key_num
        beq     scan_iob3
        jmp     scan_option_end

scan_iob3:
;        lda     #1
;        sta     temp1
;        jsr     delay100us
        stz     IOBPLH
        nop
        nop

        lda     #11010000b
        sta     IOBDIR
        lda     #11101111b
        and     IOB
        sta     IOB
        lda     #ffh
        sta     IOBPLH
        nop
        nop

        jsr     delay2ms
        lda     IOBPAD
        and     #00001000b
        bne     cnt_iob3

        lda     #00010000b
        ora     IOB
        sta     IOB
        jsr     delay2ms
        lda     IOBPAD
        and     #00001000b
        beq     cnt_iob3
        inc     cnt3
cnt_iob3:
        inc     cnt
        lda     cnt
        cmp     #4
        bcc     scan_iob3
        lda     cnt3
        cmp     #4
        bcc     reset_iob3
        lda     #00001000b
        ora     flag_temp
        sta     flag_temp
reset_iob3:
        stz     cnt
;        stz     cnt4

        jsr     scan_key
        lda     key_num
        beq     scan_iob4
        jmp     scan_option_end

scan_iob4:
;        lda     #1
;        sta     temp1
;        jsr     delay100us
        stz     IOBPLH
        nop
        nop

        lda     #11100000b
        sta     IOBDIR
        lda     #11011111b
        and     IOB
        sta     IOB
        lda     #ffh
        sta     IOBPLH
        nop
        nop

        jsr     delay2ms
        lda     IOBPAD
        and     #00010000b
        bne     cnt_iob4

        lda     #00100000b
        ora     IOB
        sta     IOB
        jsr     delay2ms
        lda     IOBPAD
        and     #00010000b
        beq     cnt_iob4
        inc     cnt4
cnt_iob4:
        inc     cnt
        lda     cnt
        cmp     #4
        bcc     scan_iob4
        lda     cnt4
        cmp     #4
        bcc     reset_iob4
        lda     #00010000b
        ora     flag_temp
        sta     flag_temp
reset_iob4:
;        stz     cnt
;        stz     cnt5
        jsr     scan_key
        lda     key_num
        bne     scan_option_end
        lda     flag_temp
        sta     flag_iob

scan_option_end:
        stz	IRQEVT
        lda     #11000000B
        sta     IOBDIR
        nop
        nop
        rts
;************************************************
delay100us:
        stz     IRQEVT
;        lda     #ffh
;        sta     IOBDIR
;        stz     IOB

        lda     #40
        sta     delayram
delay100us1:
        nop
        nop
        dec     delayram
        bne     delay100us1
        dec     temp1
        bne     delay100us
        rts
;************************************************
delay2ms:
	stz	IRQEVT

        lda     #10h    ;32h/400us    ;ffh/2ms
        sta     delayram
delay2ms1:
        nop
        nop
        nop
        nop
        nop

        nop
        nop
        nop
        nop
        nop

        nop
        nop
        dec     delayram
        bne     delay2ms1
        rts
;************************************************
Irq_Isr:
	rti
;************************************************
	.ORG	fffch
	.DW	Reset
	.DW	Irq_Isr
;************************************************
	.END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -