;
;          "mlan.txt"    microLAN
;              CRC8
;
;     DS18...20   
;  
;
;------------------------------------------------------
;
; ------------  ------------
;
 dat_mlan  equ 4 ;    MLD
 tm20      equ 10
 tm26      equ 13
 tm46      equ 23
 tm80      equ 40
 tm86      equ 43
 tm400     equ 200
 tm480     equ 240     
 bloknot   equ 0x30 ;      
         ;       030-039
 port_mlan  equ P3 ;  
;
; ------------  ------------
;
  .DSEG
 cntp_mlan:    .ds 1 ;   
 cntb_mlan:    .ds 1 ;   / 
 cntt_mlan:    .ds 1 ;   (djnz cntt_mlan,$ = 2 )
;
; ------------  ------------
;
  .BSEG
 erd_mlan:   .dbit 1 ;   " mLAN  "
             ;    
 ecrc_mlan:  .dbit 1 ;     CRC   mLAN
             ;    
;
; -----   -----
;
  .CSEG
;
;----------------------------------------------------------
;
; DTTC -   reset    
; ""
 dttc:
   clr port_mlan.dat_mlan
   mov cntt_mlan,#tm480
   djnz cntt_mlan,$
   setb port_mlan.dat_mlan
;      
;   10      
;  
  mov cntb_mlan,#tm80 ;     
mlatw:
  mov cntt_mlan,#tm20
  djnz cntt_mlan,$ ; - 10
  mov c,port_mlan.dat_mlan ;    10   400 
  jnc mlatw1 ;  ""  
  djnz cntb_mlan,mlatw
  setb erd_mlan ;  "  "
  ret
mlatw1:
  mov c,port_mlan.dat_mlan
  jnc mlatw1 ;    
  ret
;
;----------------------------------------------------------
;
;      microLAN
;  acall rxb1
;       
 rxb1:
    mov cntb_mlan,#8
  loopr1:
     clr port_mlan.dat_mlan
     nop
     nop
     nop
     setb port_mlan.dat_mlan
     mov cntt_mlan,#tm26
     djnz cntt_mlan,$
     mov c,port_mlan.dat_mlan
     rrc a ;    
     mov cntt_mlan,#tm46
     djnz cntt_mlan,$
    djnz cntb_mlan,loopr1
   ret
;
;----------------------------------------------------------
;
;      microLAN
;       
;  acall txb1
 txb1:
    mov cntb_mlan,#8
  loopt1:
     clr port_mlan.dat_mlan
     nop
     nop
     nop
     rrc a
     mov port_mlan.dat_mlan,c
     mov cntt_mlan,#36
     djnz cntt_mlan,$
    djnz cntb_mlan,loopt1
   ret
;
;----------------------------------------------------------
;
; CRC - 
;      r30-r38 
;  R7,R5,R3,R2  R0   
 crck:
     clr ecrc_mlan
     clr a
     mov r7,a
     mov r0,#bloknot
     mov r2,#9
 crcl:
     mov a,@r0
     mov r5,a
     mov r3,#8
 crclp:
      xrl a,r7
      rrc a
      mov a,r7
      jnc zero_m
      xrl a,#0x18
 zero_m:
      rrc a
      mov r7,a
      mov a,r5
      rr a
      mov r5,a
     djnz r3,crclp
    inc r0
   djnz r2,crcl
   clr a
   adda,r7
   jz wcrc
   setb ecrc_mlan
 wcrc:
   ret
;
;----------------------------------------------------------
;