;----------------designe by luoqice 24-0305---------------
;SDQ send and recv control
;---------------------------------------------------------
delay_n_us:
movwf R_Delay3
delay_n_us_loop:
decfsz R_Delay3,1
goto delay_n_us_loop
return
return
set_sdq_input:
;movlw 00100010B
;bsf PT3PU,1
bcf PT3EN,1
return
set_sdq_output:
bsf PT3EN,1
return
;----------------------------------------------------------
sdq_send_n_byte: ;send 4byte 0x74,0x00 0x01,0xfd
btfss CCB_current_mode,B_sinkB_get_power_ok
return
;---------------wait sdq_send_delay ms to send-------------------
;call set_sdq_input
decfsz sdq_send_delay,1 ;delay n ms
return
;-----------send count-----------
movlw 0H
subwf sdq_send_cnt,0
btfsc status,z
return
decf sdq_send_cnt,1
;-------------start flg-----------
call set_sdq_output
send_start:
bcf pt3,1
movlw 14 ;delay 14us value
call delay_n_us
bsf pt3,1
movlw 2 ;delay 5us value
call delay_n_us
;-------------------------------
movlf 74H,sdq_date
call sdq_send_one_byte
;-----------add delay-----------
bsf pt3,1
movlw 9 ;delay 15us value
call delay_n_us
;--------------------------
movlf 00H,sdq_date
call sdq_send_one_byte
;-----------add delay-----------
bsf pt3,1
movlw 9 ;delay 15us value
call delay_n_us
;--------------------------
movlf 01H,sdq_date
call sdq_send_one_byte
;-----------add delay-----------
bsf pt3,1
movlw 9 ;delay 15us value
call delay_n_us
;--------------------------
movlf fdH,sdq_date
call sdq_send_one_byte
;-----------send end flg-----------
bsf pt3,1
movlw 12 ;delay 20us value
call delay_n_us
;---------------------
bcf pt3,1 ;set low,send break 14us
movlw 14 ;delay 13us value
call delay_n_us
bsf pt3,1 ;set low,send break 14us
;---------reset delay cnt---------
call set_sdq_input
movlf 70,sdq_send_delay
;----------------------
call sdq_recv_one_byte
return
sdq_send_one_byte:
call set_sdq_output
movlf 8,sdq_bit_cnt
send_data_loop:
btfss sdq_date,0
goto send_7us_low_3us_high
goto send_1_5us_low_8_3us_high
;-------------send logic 0-------------------
send_7us_low_3us_high:
nop
bcf pt3,1
movlw 6 ;delay 8.3us value
call delay_n_us
bsf pt3,1
nop;delay 3us
;nop
RRF sdq_date,1
goto dec_fun
;-------------send logic 1-------------------
send_1_5us_low_8_3us_high:
bcf pt3,1
nop
nop
nop
nop
bsf pt3,1
movlw 6 ;delay 8.3us value
call delay_n_us
RRF sdq_date,1
;-----------------------------
dec_fun:
decfsz sdq_bit_cnt,1
goto send_data_loop
;bsf GLOBLE_STA_FLG1,B6_read_sdq_flg
;call set_sdq_input
return