📄 v_audi.asm
字号:
lcall send_byte
;
mov r0,#30h
r_hitdh_code:lcall recv_byte ;delay incept data
jnc r_hitch_a
ajmp comm_err2
r_hitch_a: cjne a,#3,r_hitch0
setb finish
r_hitch0:mov rec_cnt,a
jb finish,r_hitch1
dec rec_cnt
r_hitch1:dec rec_cnt
dec rec_cnt
cpl a
lcall send_byte ;resend cpl length data
lcall recv_byte
jnc r_hitch_b
ajmp comm_err2
r_hitch_b:mov frame_cnt,a ;inc count
inc frame_cnt
cpl a
lcall send_byte ;resend inc cound data
lcall recv_byte
jnc r_hitch_c
ajmp comm_err2
r_hitch_c:cjne a,#0fch,read_h_0
setb hitch
read_h_0: cpl a
lcall send_byte
rec6: lcall recv_byte
jnc rec6_0
ajmp comm_err2
rec6_0:jb finish,rec9
mov r3,a
mov a,r0
cjne a,#4eh,rec7
mov a,r3
sjmp rec8
rec7: mov a,r3
mov @r0,a
inc r0
dec rec_cnt
cpl a
lcall send_byte
lcall recv_byte
jnc rec7_0
ajmp comm_err2
rec7_0:mov @r0,a
inc r0
dec rec_cnt
cpl a
lcall send_byte
lcall recv_byte
jnc rec8
ajmp comm_err2
rec8: mov 29h,a
cpl a
lcall send_byte
djnz rec_cnt,rec6
;
lcall recv_byte
jnc rec9
ajmp comm_err2
rec9: mov t_count,#15
acall delay_times
jb finish,con_red_a
acall cont_link
ajmp r_hitdh_code
;
con_red_a:jb hitch,con_red_b
ajmp com_ok
;
con_red_b:mov a,clr_buf
cjne a,#2,con_d
acall clr_hitch_code
acall read_link
jc comm_err2
mov t_count,#15
acall delay_times
con_d: setb end_f
acall cont_link
;
clr finish
clr hitch
clr off_disp
mov r1,#30h
mov a,@r1
cjne a,#0ffh,disp_hitch2
inc r1
mov a,@r1
cjne a,#0ffh,disp_hitch2
mov a,29h
cjne a,#88h,disp_hitch2
ajmp com_ok
disp_hitch2: mov r1,#30h
disp_hitch0: mov a,@r1
mov b,a
anl a,#0f0h
swap a
mov bufer4,a
mov a,b
anl a,#0fh
mov bufer3,a
inc r1
mov a,@r1
mov b,a
anl a,#0f0h
swap a
mov bufer2,a
mov a,b
anl a,#0fh
mov bufer1,a
mov r7,#10
disp_hitch1: acall delay_200ms
djnz r7,disp_hitch1
inc r1
mov a,r1
clr c
subb a,r0
jc disp_hitch0
;
mov a,r0
clr c
subb a,#2
jc cont_a
ret
cont_a: mov r7,#8
disp_hitch3: acall delay_200ms
djnz r7,disp_hitch3
ret
;
comm_err2:mov r7,#15 ;delay 1 second
c_err2:acall delay_200ms
acall delay_200ms
cpl off_disp
djnz r7,c_err2
ret
comm_err1:mov r7,#5 ;delay 1 second
c_err1:acall delay_200ms
djnz r7,c_err1
comm_err:mov bufer1,#0eh ;display "HX-E" word
mov bufer2,#15h
mov r7,#7 ;delay 1.4 Second
c_err:acall delay_200ms
djnz r7,c_err
ret
;
com_ok: mov bufer1,#15h
mov bufer2,#15h
mov r7,#12 ;delay 2.4 second
com_ok0: acall delay_200ms
djnz r7,com_ok0
ret
;
clr_hitch_code: mov a,#3 ;send "3"
lcall send_cplb
jc clr_err
mov a,frame_cnt ;send "count"
lcall send_cplb
jc clr_err
mov a,#5 ;send clear hitch command "5"
lcall send_cplb
jc clr_err
mov a,#3 ;send finish flag "3"
lcall send_byte
clr c
clr_err: ret
;---------------------------------------------------------------------
cont_link: mov a,#03h ;send start link flag "03h"
lcall send_byte
lcall recv_byte
jc recz
mov a,frame_cnt ;send "count"
lcall send_byte ;resend cpl length code
lcall recv_byte
jc recz
jnb end_f,linc_0
clr end_f
mov a,#6 ;read ver code "09h"
sjmp linc_1
linc_0: mov a,#9 ;read ver code "09h"
linc_1: lcall send_byte ;resend inc cound data
lcall recv_byte
jc recz
mov a,#3
lcall send_byte
clr c
ret
recz: setb c
ret
;---------------------------------------------------------------------
read_link: lcall recv_byte
jc err_a
mov rec_cnt,a
dec rec_cnt
cpl a
lcall send_byte
lcall recv_byte
jc err_a
mov frame_cnt,a
inc frame_cnt
recv: cpl a
lcall send_byte
lcall recv_byte
jc err_a
djnz rec_cnt,recv
err_a: ret
;---------------------------------------------------------------------
send_address: push 0h
mov r0,#8
clr txd_p
clr l_line
lcall delay_200ms
setb off_disp
mov channel_buf,channel
send_bit:mov a,channel_buf
rrc a
mov channel_buf,a
mov txd_p,c
mov l_line,c
lcall delay_200ms
cpl over_f
jb over_f,send_a
cpl off_disp
send_a: djnz r0,send_bit
clr over_f
setb txd_p
setb l_line
lcall delay_1ms
pop 0h
ret
;
send_cplb: acall send_byte
acall recv_byte
ret
;---------------------------------------------------------
recv_byte: setb ex0
mov r3,#80h ;delay times=1s
con_rec0:mov int_cont,#0
con_rec1:jb int_ex0_f,con_rec2
mov a,int_cont
cjne a,#0ch,con_rec1
djnz r3,con_rec0
clr ex0
setb c
ret
;
con_rec2:clr int_ex0_f
jb recever,$
mov a,s_bufer
clr c
ret
;----------------------------------------------------------
send_byte: mov s_bufer,a
acall delay_1ms
acall delay_1ms
clr et1
setb send
clr txd_p
mov s_r_cont,#9
mov tl1,s_data2_l
mov th1,s_data2_h
setb et1
mov tl_bufer,s_data2_l
mov th_bufer,s_data2_h
jb send,$
ret
;-----------------------------------------------------------
cal_baud: mov a,th0
clr c
rrc a
mov r2,a
mov a,tl0
rrc a
mov r3,a
mov a,r2
clr c
rrc a
mov r2,a
mov a,r3
rrc a
mov r3,a
jnc baud0
add a,#1
mov r3,a
mov a,r2
addc a,#0
mov r2,a
mov a,r3
baud0: ;
cpl a
add a,#11h
mov s_data0_l,a
mov a,r2
cpl a
addc a,#0
mov s_data0_h,a
mov a,r3
cpl a
add a,#8
mov s_data2_l,a
mov a,r2
cpl a
addc a,#0
mov s_data2_h,a
mov a,r2
clr c
rrc a
mov r4,a
mov a,r3
rrc a
add a,r3
mov r3,a
mov a,r2
addc a,r4
mov r2,a
mov a,r3
cpl a
add a,#1
mov s_data1_l,a
mov a,r2
cpl a
addc a,#0
mov s_data1_h,a
ret
;-------------------------------------------------------------------------
delay_200ms: push acc
mov int_cont,#0
cont_200:mov a,int_cont
cjne a,#200,cont_200
pop acc
ret
;-------------------------------------------------------------------------
delay_times: push acc
mov int_cont,#0
cont_t: mov a,int_cont
cjne a,t_count,cont_t
pop acc
ret
;-------------------------------------------------------------------------
;f=12.000MHZ "delay times 1ms"
delay_1ms: clr tf1
jnb tf1,$
ret
;---------------------------------------------------------------------
led_dcharacter: db 2,9eh,24h,0ch,98h,48h,40h,1eh ;0,1,2,3,4,5,6,7
db 0,8,10h,0c0h,62h,84h,60h,70h ;8,9,A,B,C,D,E,F
db 0e2h,82h,12h,62h,90h,0fch,0ffh ;L,U,N,C,H,-,_,
;---------------------------------------------------------------------
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -