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

📄 test56.asm

📁 4channel 语音播放程序 26个字母播放. 4x12 小扫描按键
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        mov     p2      a
        mov     a       mrx_3
        mov     p2s     a
        mov     a       #1111b
        mov     p2s     a
	page0
        mov     a       p6
        mov     tr45_48 a
endif
ifdef   mrx_4
        mov     a       #0001b
        mov     p3      a
        mov     a       mrx_4
        mov     p3s     a
        mov     a       #1111b
        mov     p3s     a
        mov     a       p6
        mov     tr49_52 a
        mov     a       mrx_4
        caje    #1110b  @@update_over
        mov     a       #0010b
        mov     p3      a
        mov     a       mrx_4
        mov     p3s     a
        mov     a       #1111b
        mov     p3s     a
        mov     a       p6
        mov     tr53_56 a
        mov     a       mrx_2
        caje    #1100b  @@update_over
        mov     a       #0100b
        mov     p3      a
        mov     a       mrx_4
        mov     p3s     a
        mov     a       #1111b
        mov     p3s     a
        mov     a       p6
        mov     tr57_60 a
        mov     a       mrx_4
        caje    #1000b  @@update_over
        mov     a       #1000b
        mov     p3      a
        mov     a       mrx_4
        mov     p3s     a
        mov     a       #1111b
        mov     p3s     a
        mov     a       p6
        mov     tr61_64 a
endif

;;******************************************************
@@update_over:
ifdef	@_key_type_@
	mov	a	keyp2
	caje	#0	@f
	mov	a	p2
	and	a	keyp2
	mov	MTR2	a
@@:
	mov	a	keyp3
	caje	#0	@f
	mov	a	p3
	and	a	keyp3
	mov	MTR3	a
@@:
	mov	a	keyp6
	caje	#0	@f
	mov	a	p6
	and	a	keyp6
	mov	MTR6	a
@@:
endif
        
        
        mov     a       #0000b
        mov     p2      a
ifdef	mrx_2
	mov	a	#0000b
	mov	p3	a
endif
;;******************************************************
	rstc
        jmp     @@Update_Key_Bk
;;******************************************************
@@update_key:
        mov     a       p1
        and     a       keyp1
        mov     tr1_4   a
        mov     a       p2
        and     a       keyp2
        mov     tr5_8   a
        mov     a       p3
        and     a       keyp3
        mov     tr9_12  a
        mov     a       p6
        and     a       keyp6
        mov     tr13_16  a
        rstc
        jmp     @@Update_Key_Bk
;;********************************************************
;;********************************************************
scankey:
	page3
	mov	a	#1000b			;check key bounce flag
	and	a	debocr
	caje	#1000b	@@Check_Debounce

@@Check_bounce_back:	
	mov     a       mrx
        caje    #1111b  @@key0_		;; direct key

ifdef   mrx_2                           ;; scan 2st block
	page2
	mov	a	skblock
	caje	#0001b	@@Scan_block2

ifdef   mrx_3                           ;; scan 3st block
	;page2
	;mov	a	skblock
	caje	#0010b	@@Scan_block3
ifdef   mrx_4                           ;; scan 4st block
	;page2
	;mov	a	skblock
	caje	#0011b	@@Scan_block4
endif                 
endif
endif	
ifdef	@_key_type_@
	page2
	mov	a	skblock
	caje	#0100b	@@Mixkey
endif	

	page3
	mov	a	keyid
	caje	#0010b	@@scan1
	caje	#0100b	@@scan2
	caje	#1000b	@@scan3
	
@@scan0:
	page3
        mov     keyid   #0001b                  ;keyid: scan loop
        jmp     @@trig_scan
@@scan0_back:
	page1
        mov     a       p1
        xor     a       tr1_4
        jmp     @@trig_chk
@@scan1:
	page3
        mov     keyid   #0010b                  ;keyid: scan loop
        jmp     @@trig_scan
@@scan1_back:
	page1
        mov     a       p1
        xor     a       tr5_8
        jmp     @@trig_chk
@@scan2:
	page3
        mov     keyid   #1000b
        mov     a       mrx
        caje    #1100b @@clr_debounce
        mov     keyid   #0100b                  ;keyid: scan loop
        jmp     @@trig_scan
@@scan2_back:
	page1
        mov     a       p1
        xor     a       tr9_12
        jmp     @@trig_chk
@@scan3:
	page3
        mov     keyid   #1000b
        mov     a       mrx
        caje    #1000b  @@clr_debounce
        jmp     @@trig_scan
@@scan3_back:
	page1
        mov     a       p1
        xor     a       tr13_16
        jmp     @@trig_chk
;;-----------------------------------------------------------------       
ifdef   mrx_2
@@Scan_block2:
	page3
	mov	a	keyid
	caje	#0010b	@@scan5
	caje	#0100b	@@scan6
	caje	#1000b	@@scan7

@@scan4:
	page3
        mov     keyid   #0001b                  ;keyid: scan loop
        jmp     @@trig_scan_2
@@scan4_back:
	page1
        mov     a       p1
        xor     a       tr17_20
        jmp     @@trig_chk
@@scan5:
	page3
        mov     keyid   #1000b                  ;;if (key#<21)
        mov     a       mrx_2                   ;;then skip the rest key
        caje    #1110b  @@clr_debounce                  ;;
        mov     keyid   #0010b                  ;keyid: scan loop
        jmp     @@trig_scan_2
@@scan5_back:
	page1
        mov     a       p1
        xor     a       tr21_24
        jmp     @@trig_chk
@@scan6:
	
	page3
        mov     keyid   #1000b                  ;;if (key#<25)
        mov     a       mrx_2                   ;;then skip the rest key
        caje    #1100b  @@clr_debounce                   ;;
        mov     keyid   #0100b                  ;keyid: scan loop
        jmp     @@trig_scan_2
@@scan6_back:
	page1
        mov     a       p1
        xor     a       tr25_28
        jmp     @@trig_chk
@@scan7:
	page3
        mov     keyid   #1000b                  ;;if (key#<29)
        mov     a       mrx_2                   ;;then skip the rest key
        caje    #1000b  @@clr_debounce                   ;;
        jmp     @@trig_scan_2
@@scan7_back:
	page1
        mov     a       p1
        xor     a       tr29_32
        jmp     @@trig_chk
endif
;;***************************************************************

;;-----------------------------------------------------------------       
ifdef   mrx_3
@@Scan_block3:
	page3
	mov	a	keyid
	caje	#0010b	@@scan9
	caje	#0100b	@@scan10
	caje	#1000b	@@scan11

@@scan8:
	page3
        mov     keyid   #0001b                  ;keyid: scan loop
        jmp     @@trig_scan_3
@@scan8_back:
	page1
        mov     a       p6
        xor     a       tr33_36
        jmp     @@trig_chk
@@scan9:
	page3
        mov     keyid   #1000b                  ;;if (key#<21)
        mov     a       mrx_3                   ;;then skip the rest key
        caje    #1110b  @@clr_debounce                   ;;
        mov     keyid   #0010b                  ;keyid: scan loop
        jmp     @@trig_scan_3
@@scan9_back:
	page1
        mov     a       p6
        xor     a       tr37_40
        jmp     @@trig_chk
@@scan10:
	page3
        mov     keyid   #1000b                  ;;if (key#<25)
        mov     a       mrx_3                   ;;then skip the rest key
        caje    #1100b  @@clr_debounce                   ;;
        mov     keyid   #0100b                  ;keyid: scan loop
        jmp     @@trig_scan_3
@@scan10_back:
	page1
        mov     a       p6
        xor     a       tr41_44
        jmp     @@trig_chk
@@scan11:
	page3
        mov     keyid   #1000b                  ;;if (key#<29)
        mov     a       mrx_3                   ;;then skip the rest key
        caje    #1000b  @@clr_debounce                   ;;
        jmp     @@trig_scan_3
@@scan11_back:
	page0
        mov     a       p6
        xor     a       tr45_48
        jmp     @@trig_chk
endif
;;***************************************************************
;;-----------------------------------------------------------------       
ifdef   mrx_4
@@Scan_block4:
	page3
	mov	a	keyid
	caje	#0010b	@@scan13
	caje	#0100b	@@scan14
	caje	#1000b	@@scan15

@@scan12:
	page3
        mov     keyid   #0001b                  ;keyid: scan loop
        jmp     @@trig_scan_4
@@scan12_back:
	page0
        mov     a       p6
        xor     a       tr49_52
        jmp     @@trig_chk
@@scan13:
	page3
        mov     keyid   #1000b                  ;;if (key#<21)
        mov     a       mrx_4                   ;;then skip the rest key
        caje    #1110b  @@clr_debounce                   ;;
        mov     keyid   #0010b                  ;keyid: scan loop
        jmp     @@trig_scan_4
@@scan13_back:
	page0
        mov     a       p6
        xor     a       tr53_56
        jmp     @@trig_chk
@@scan14:
	page3
        mov     keyid   #1000b                  ;;if (key#<25)
        mov     a       mrx_4                   ;;then skip the rest key
        caje    #1100b  @@clr_debounce                   ;;
        mov     keyid   #0100b                  ;keyid: scan loop
        jmp     @@trig_scan_4
@@scan14_back:
	page0
        mov     a       p6
        xor     a       tr57_60
        jmp     @@trig_chk
@@scan15:
	page3
        mov     keyid   #1000b                  ;;if (key#<29)
        mov     a       mrx_4                   ;;then skip the rest key
        caje    #1000b  @@clr_debounce                   ;;
        jmp     @@trig_scan_4
@@scan15_back:
	page0
        mov     a       p6
        xor     a       tr61_64
        jmp     @@trig_chk
endif
;;******************************
;;------ mixkey  ---------------
;;******************************
ifdef	@_key_type_@
@@Mixkey:
	page3
	mov     a	keyid
	caje	#0011b	@@MKEYP3_
	caje	#0110b	@@MKEYP6_
@@MKEYP2_:
        mov     a       p2
        mov     keyid   a
        mov     a       keyp2
        and     a       keyid
        mov     keyid   #0101b
	page1
        xor     a       Mtr2
	jmp	@@trig_chk	
@@Mkeyp3_:
	mov     a       p3
        mov     keyid   a
        mov     a       keyp3
        and     a       keyid
        mov     keyid   #0011b
	page1
        xor     a       Mtr3
	jmp	@@trig_chk
@@Mkeyp6_:
	mov     a       p6
        mov     keyid   a
        mov     a       keyp6
        and     a       keyid
        mov     keyid   #0110b
	page1
        xor     a       Mtr6
	jmp	@@trig_chk
endif	


;;********************************************
;;------  direct key  ------------------------
;;********************************************
@@key0_:
	page3
	mov     a	keyid   
	caje	#0010b	@@key1_
	caje	#0100b	@@key2_
	caje	#1000b	@@key3_
	
	
        mov     a       p1
        mov     keyid   a
        mov     a       keyp1
        and     a       keyid
        mov     keyid   #0001b
	page1
        xor     a       tr1_4
        jmp     @@trig_chk
@@key1_:
	
        mov     a       p2
        mov     keyid   a
        mov     a       keyp2
        and     a       keyid
        mov     keyid   #0010b
	page1
        xor     a       tr5_8
        jmp     @@trig_chk
@@key2_:
	
        mov     a       p3
        mov     keyid   a
        mov     a       keyp3
        and     a       keyid
        mov     keyid   #0100b
	page1
        xor     a       tr9_12
        jmp     @@trig_chk
@@key3_:
	
        mov     a       p6
        mov     keyid   a
        mov     a       keyp6
        and     a       keyid
        mov     keyid   #1000b
	page1
        xor     a       tr13_16
        jmp     @@trig_chk
        
;;************************************************************
@@trig_scan:
ifdef   mrx_2
	page6
        mov     a       p3state         ;;clear P3
        mov     p3      a               ;;
endif
	page6
        mov     a       p2state
        page3
        or      a       keyid
        mov     p2      a
        mov     a       mrx
        mov     p2s     a
        mov     a       #1111b
        mov     p2s     a
        mov     a       keyid
        caje    #0001b  @@scan0_back
        caje    #0010b  @@scan1_back
        caje    #0100b  @@scan2_back
        jmp     @@scan3_back        
;;*******************************************************************
;;*************************************************
ifdef 	mrx_2
@@trig_scan_2:
	page6
        mov     a       p2state         ;;clear P2
        mov     p2      a               ;;
        
        mov     a       p3state
        page3
        or      a       keyid
        mov     p3      a
        mov     a       mrx_2
        mov     p3s     a
        mov     a       #1111b
        mov     p3s     a
        mov     a       keyid
        caje    #0001b  @@scan4_back
        caje    #0010b  @@scan5_back

⌨️ 快捷键说明

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