📄 fishing_pad.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 + -