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

📄 v_audi.asm

📁 读取大众车系的汽车故障码的51程序,支持BOSCH协议
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                  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 + -