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

📄 nesp.src

📁 SM5907应用程序
💻 SRC
📖 第 1 页 / 共 3 页
字号:
;
;function:	shock-proof mode off
;procedure:	SOFT_MUTE-------
;		WAIT 23.2MS----- step 1.
;		STOP_ENCODE_DECODE(8001H,wait 1ms, CLEAR_WR_RD_ADR)-----
;		CLV_1X							|
;		SET_THROUGH_MODE					|step 2
;		SOFT_UNMUTE---------------------------------------------
;
Espoff::	ld	by_esp_task,#n_esp_off10
		and	by_flag4,#~b4_svo_B	;loop_lnk
		call	Svomute
		call	esp_mute_cmd
		ld	r13,#00000001b	;stop encoding and decoding
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
;		CALL	Clvstop
		call	Cda1x
		ret


;
;function:	shock-proof mode on
;procedure:	CLV_2X		      --
;		SOFT_MUTE(8320H)	| step 1,wait servo stable
;		CLEAR_WR_RD_ADR(8051H)--
;		START_ENCODE(8081H)-----
;		START_DECODE(80A1H)	| step 2
;	goto	ESP_ENCODE_STEP---------
;
Espon::		ld	by_esp_task,#n_esp_on10
		call	Svomute
espon2:		call	esp_mute_cmd
espon3:		call	Cda2x
;		ldw	rr12,#15
;		call	Adjsvotime
		call	hold_cnnt_time
		call	svotime_2_esptime
		tm	by_flag1,#b1_pbt_loop | b1_pbt_scan2
		jr	nz,espoexit
		ldw	rr12,#-15
		call	Adjsvotime
		ret
		
;
;move servo play time to esp play time
;
svotime_2_esptime:
		ld	by_esp_min2,by_svo_min_play
		ld	by_esp_sec2,by_svo_sec_play
		ld	by_esp_frm2,by_svo_frm_play
		ld	by_esp_trk2,by_svo_trk_play
		ret

;
;move esp play time to servo play time
;
esptime_2_svotime::
		ld	by_svo_min_play,by_esp_min2
		ld	by_svo_sec_play,by_esp_sec2
		ld	by_svo_frm_play,by_esp_frm2
		ld	by_svo_trk_play,by_esp_trk2
		ret
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	restart a encode & decode procedure
;		SOFT_MUTE
;		WAIT 23.2MS
;		STOP_ENCODE_DECODE(8001H)
;		INIT_INPUT_BUFFER(8000H,8001H)
;	goto	ESP_ON
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esprestartpause::
		or	by_esp_flag, #b_esp_pause
		jr	esp_next1
Esprestart::
esp_next:	and	by_esp_flag,#~b_esp_pause
esp_next1:	ld	by_esp_task,#n_esp_skip10
		and	by_esp_flag,#~b_esp_disc_over
		ld	r13,#10100101b	;stop connect
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
;		call	Delay1ms
;		call	Delay1ms
		jr	espon2
.if	1
Espscan::	and	by_esp_flag,#~b_esp_pause
		and	by_esp_flag,#~b_esp_disc_over
;		call	esp_mute_cmd
;		call	reset_wr_rd_ptr		;esp_rev mask, 20030107
;		call	hold_cnnt_time		;esp_rev mask, 20030107
;		call	svotime_2_esptime	;esp_rev mask, 20030107
		ld	r13,#00100001b		;esp_rev ;stop encode, connect
		call	esp_cmd_80h		;esp_rev ;en,wacl,de,racl,dcn2,dcn1,waqv,sys
;		call	Delay1ms
;		call	Init5907inputbuf
;		ld	r13,#10100001b	;start encode, decode
;		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
;		call	esp_unmute
;		jr	espscan1		;loop_lnk
		
;		tm	by_flag1,#b1_pbt_scan | b1_pbt_scan2
;		jr	nz,espscan1
	;loop		
		ld	by_esp_task,#n_esp_on20
		clr	by_esp_timer
		jp	espon1	;3
		

espscan1:	ld	by_esp_task,#n_esp_chk
		and	by_svo_flag8,#~b8_svo_skip_err
		or	by_time_flag,#b_esp_100ms
espsexit:	ret
.endif
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	pause key
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esppause::	or	by_esp_flag,#b_esp_pause
		cp	by_esp_task,#n_esp_chk
		jr	ult,rete10
		ld	r13,#10000001b	;stop decoding
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		ld	by_esp_task,#n_esp_pause10
		jr	esp_mute_cmd

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	pause release key
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esppauserls::	and	by_esp_flag,#~b_esp_pause
		ld	r13,#10100001b		;start decoding
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		call	esp_unmute
rete10:		ret

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	stop key
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Espstop::	call	esptime_2_svotime
		ld	by_esp_task,#n_esp_stop10
		and	by_esp_flag,#~b_esp_pause
esp_mute_cmd::	ld	r13,#01000000b		;mute
		call	esp_cmd_83h
		ld	by_esp_timer,#12		;延时24ms
		or	by_esp_flag,#b_esp_mute
		ret


;================================================================
;esp on/off
;================================================================
;
;
;
esp_off_10:	cp	by_esp_timer,#0
		jp	ne,rete05
		call	reset_wr_rd_ptr			;noise_esp_off
;		call	Svomute
		call	Delay1ms
		call	Init5907inputbuf		;noise_esp_off
;		call	esp_through_mode
		call	esptime_2_svotime
;		call	Cda1x
		call	ClrQstatus
;		call	Init5907inputbuf		;noise_esp_off
		call	esp_through_mode
		call	esp_unmute
		clr	by_esp_flag2
		clr	by_esp_flag3
		clr	by_esp_task

		tm	by_flag1,#b1_pbt_scan2
		jr	z,espoff0
		SYS_UNMUTE
espoff0		or	by_svo_flag8,#b8_svo_skip_err
		and	by_svo_flag8,#~b8_svo_dataerr
		tm	by_esp_flag,#b_esp_pause
		jp	z,Playtime
		and	by_esp_flag,#~b_esp_pause
		ld	by_svo_utl,#n_svoutl_pause
		ret		

;
;
;
esp_on_10:	;call	Loopspec
		cp	by_esp_timer,#0
		jr	ne,rete05
		ld	r13,#00000001b	;stop decoding
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		ld	tmr_100ms_esp,#150	;15s
		ld	by_esp_task,#n_esp_on20
		call	Delay1ms			;jxd_021223
		call	reset_wr_rd_ptr
		call	Delay1ms			;jxd_021223
		call	Init5907inputbuf		;jxd_021223
;		LD	R13,#0
;		CALL	esp_cmd_80h
		cp	by_svo_utl,#n_svoutl_pause
		jr	ne,espon1
		or	by_esp_flag,#b_esp_pause
espon1:		;ld	by_esp_min2,by_svo_min_play
		;ld	by_esp_sec2,by_svo_sec_play
		;ld	by_esp_frm2,by_svo_frm_play
		;ld	by_esp_trk2,by_svo_trk_play
		call	ClrQstatus
		call	Playtime
		and	by_svo_flag8,#~b8_svo_dataerr
		or	by_svo_flag8,#b8_svo_skip_err
espon5		call	esp_skip_reset
esprevrst:	and	by_esp_flag,#~b_esp_rev
		clr	by_esp_rev
		clr	by_esp_rtime
		clr	by_esp_rtime+1
		ret


esp_skip_reset:	and	by_esp_flag,#~b_esp_skip
;		and	by_svo_flag8,#~b8_svo_skip_stat
;		clr	by_esp_jmp_cnt
		ld	r13,#by_esp_sbuf
		ld	pp,#10h
esp_skip_rst1:	clr	@r13
		inc	r13
		clr	@r13
		inc	r13
		cp	r13,#by_esp_sbuf+20
		jr	ne,esp_skip_rst1
		clr	pp
rete05:		ret
;
;
;
esp_on_20:	;call	Loopspec
		;cp	by_esp_timer,#0
		;jr	ne,rete05
;		LD	R13,#1
;		call	esp_cmd_80h
;		call	svotime_2_esptime
		cp	by_svo_utl,#n_svoutl_play	;seek ok
		jr	eq,espon23
		tm	by_svo_flag8,#b8_svo_dataerr
		jr	z,rete05
		and	by_svo_flag8,#~b8_svo_dataerr
		inc	by_esp_jmp_cnt
		cp	by_esp_jmp_cnt,#2
		jr	ult,rete05
		clr	by_esp_jmp_cnt
		jr	espon24
		
espon23:	;tm	by_esp_flag,#b_esp_lnkwait
		;jr	nz,espon25
		;or	by_esp_flag,#b_esp_lnkwait
		;ld	by_esp_timer,#14
		;ret
espon25		;cp	by_esp_timer,#0
		;jr	eq,espon26
		;ret
espon26		;and	by_esp_flag,#~b_esp_lnkwait
		call	chklnktime
		jr	nc,espon22
espon24:	call	esp_chk_jc1		;by_esp_min1+37f
		ld	by_svo_min_play,by_esp_min1
		ld	by_svo_sec_play,by_esp_sec1
		ld	by_svo_frm_play,by_esp_frm1
		jp	Playtime
espon22:	tm	by_flag1,#b1_pbt_loop | b1_pbt_scan2
		jr	nz,espon21
		cp	r4,#2	;10
		jr	ule,espon21
		tm	by_svo_flag10,#b10_svo_fwd
		jp	nz,Playtime
		ret
espon21:	and	by_svo_flag8,#~b8_svo_dataerr
;		LD	R13,#1
;		call	esp_cmd_80h
		ld	r13,#10000001b	;start encode, decode
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		call	hold_cnnt_time
;		call	esprefresh
		
;		call	esp_unmute		;tmp
		ld	tmr_mute_2ms,#7
		ld	by_esp_task,#n_esp_chk
		and	by_svo_flag8,#~b8_svo_skip_err
		ret



Loopspec	tm	by_flag1,#b1_pbt_loop
		jr	z,rete05
		tm	by_flag4,#b4_loop_key
		jr	nz,rete05
		jp	esprefresh
;==========================================================================
esp_stop_10:	cp	by_esp_timer,#0
		jp	ne,rete05
		ld	r13,#00000001b
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		call	Delay1ms
		call	reset_wr_rd_ptr
		ld	by_esp_task,#n_esp_stop20
		ret


;==========================================================================
esp_skip_10:	cp	by_esp_timer,#0
		jr	ne,rete09
;		call	reset_wr_rd_ptr
;		call	Delay1ms
;		call	Init5907inputbuf
;		LD	R13,#0
;		CALL	esp_cmd_80h
		ld	by_esp_task,#n_esp_on10
		ret
esp_skip_20:	ret
;
;
;
Init5907inputbuf:
		LD	R13,#0
		CALL	esp_cmd_80h
		LD	R13,#1
		jr	esp_cmd_80h

;==========================================================================
esp_pause_10:	cp	by_esp_timer,#0
		jr	ne,rete09
		ld	by_esp_task,#n_esp_chk
rete09:		ret
;==========================================================================
esp_unmute:	ld	r13,#00000000b		;unmute
		and	by_esp_flag,#~b_esp_mute
esp_cmd_83h:	ld	r12,#83h
		jr	esp_write_command

;
;
;
esp_through_mode:
		ld	r13,#00000001b
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		call	Delay1ms
		ld	r13,#00000000b
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		ret

;
;
;
reset_wr_rd_ptr:
		ld	r13,#01010001b
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		ld	r13,#01010001b
		call	esp_cmd_80h	;en,wacl,de,racl,dcn2,dcn1,waqv,sys
		ret
		
;
;en,wacl,de,racl,dcn2,dcn1,waqv,sys
;
esp_cmd_80h:	tm	by_esp_flag,#b_esp_pause
		jr	z,esp_cmd_8011
		and	r13,#11011111b		;stop decode
esp_cmd_8011:	ld	r12,#80h
		jr	esp_write_command

;==========================================================================
;	communication with 5907
;==========================================================================
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	send a command and data to 5907
;input:		r12=commond, r13=data
;output:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
esp_write_command:
		call	esp_wr_8bit
		ld	r13,r12
esp_wr_cmd1:	call	esp_wr_8bit
		sb0
		and	port_esp_ymld,#~pin_ymld
		nop
		nop
		or	port_esp_ymld,#pin_ymld		;get command run
		ret
		
;
;function:	send one byte to 5907
;input:		r13=data
;output:
;
esp_wr_8bit:	sb0
		ld 	r2,#8h
esp_wr_lp:	rl	r13
		and	port_esp_ymclk,#~pin_ymclk
		nop
		ldb	port_esp_ymdata.ymdata,r13
		nop
		or	port_esp_ymclk,#pin_ymclk
		djnz	r2,esp_wr_lp
		ret
		


;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	send a command to 5907, then read one byte from 5907
;input:r13=commond, 
;output:r13=data read
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
esp_read1_command:
		call	esp_wr_cmd1
		jr	esp_rd_8bit
;
;function:	read one byte from 5907
;input:
;output:	r13=data read
;
esp_rd_8bit:	sb0	
		ld	r2,#8h
esp_rd_lp:	and	port_esp_ymclk,#~pin_ymclk
		nop
		nop
		rl	r13
		or	port_esp_ymclk,#pin_ymclk
		ldb	r13,port_esp_zsense.zsense
		djnz	r2,esp_rd_lp
		ret

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;function:	send a command to 5907, then read two bytes from 5907
;input:r13=commond
;output:rr12=data
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
esp_read2_command:
		call	esp_read1_command
		push	r13
		call	esp_rd_8bit
		pop	r12
		ret



.end

⌨️ 快捷键说明

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