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

📄 fishing_pad.asm

📁 ps钓鱼手柄代码
💻 ASM
字号:

tcc     equ 01
pc      equ 02
status      equ 03

port5       equ 05
   	                    ; bit3=  in "data"
                            ; bit2=  in "ack"
                            ; bit1=  
                            ; bit0= in "sel"   

port6       equ 06


ioce        equ 0EH
iocf        equ 0FH
RF		  equ 0fH
ack_times   equ 10H
clock_counts    equ 11H
anolog_data equ 12H
mouse_count    equ 13H   
label       equ 14H
ack_delay   equ 15H
mouse	   equ 16H

;/*************************************************************/

        ORG     00H
        
        jmp Start
        jmp Start
        
;=============================

    ORG 08H
    jmp intr
intr:   
	inc  mouse
	clr	RF
    reti    
    
;-----------------------------
;=============================

Start:  
    disi
    mov a,@00000000b
    contw               ;tcc: precaler = 1/2 

;    mov a,@0111b        ;in: cmd,clk,ack,dat
    mov a,@1011b        ;in: cmd,clk,ack,dat
    iow port5

    mov a,@0
    mov port5,a
    
    mov a,@11111111b        ;in: sel,clk,osci,osco  out: data
    iow port6

    mov a,@0x40
    iow ioce
    
    mov a,@0x04
    iow iocf

    call    delay2s
    clr	mouse
    mov	a,@2
    mov	mouse_count,a
    eni 
;==============================================================
loop0000:
;    jbc port5,0				;sel
    jbc port5,1				;sel

    jmp loop0000
	
	mov	a,@1			;the "1" is express the meaning that when one or more 						;single has been checked the programm will jump to 					;another program list to force the mcu send a data single
					;to the host 
	sub	a,mouse
	jbs	status,0
	jmp	intr_ret1
    jmp    send_digest_data

intr_ret:
    clr	 mouse
intr_ret1:
	eni
;    jbs     port5,0			;sel
    jbs     port5,1			;sel

    jmp     intr_ret1
    jmp	 loop0000
;=============================

;----------------------------------------------------------    
    
    
send_digest_data:
    disi
    mov a,@4
    mov ack_times,a 

test_ack_digest:
;    jbs port5,2				;ack     
    jbs port5,3				;ack     

    jmp count_ack_digest
;    jbs port5,0				;sel
    jbs port5,1				;sel

    jmp test_ack_digest
    jmp intr_ret

count_ack_digest:
;    jbc port5,0				;sel
    jbc port5,1				;sel

    jmp intr_ret
    djz ack_times
    jmp delay_digest
    jmp send_digest
delay_digest:
;    jbs port5,2				;ack
    jbs port5,3				;ack

    jmp delay_digest    
    jmp test_ack_digest 

send_digest:

    mov a,@0x06
    mov clock_counts,a
    
    nop
    nop
    nop
    nop
    nop
loopsend_digest:
    nop
    nop
    nop
    nop
    djz clock_counts
    jmp loopsend_digest
	
	nop
	nop
	nop	
    mov	a,@1000b
 

    mov	port5,a	
	nop
	nop
	nop
    mov	a,@0	
    mov    port5,a 

    djz	mouse_count
    jmp	intr_ret1
    mov	a,@4					;the mouse_count is the times the mcu need to 						;send the data when one or more single has been 						;checked in 16ms
    mov	mouse_count,a    
    jmp	intr_ret
;=====================================================
delay2s:
    mov a,@255
    mov anolog_data,a
loop2:
    mov a,@255
    mov label,a
loop1:
    mov a,@35
    mov ack_times,a
loop0:
    nop
    nop
    nop
    nop
    djz ack_times
    jmp loop0
    
    djz label
    jmp loop1
    djz anolog_data
    jmp loop2
    ret
;============================================

⌨️ 快捷键说明

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