-
 

  - >

,

 
31.10.2009, 22:21   #1
Filya44
Senior Member
 
  Filya44
 
: 21.09.2008
: 275
: 154/35
Filya44 has a spectacular aura aboutFilya44 has a spectacular aura about
 DS18B20

, DS18B20. -40 +40. , -40 . , .
Filya44   
31.10.2009, 23:58   #2
fol
Senior Member
 
  fol
 
: 04.05.2007
: 41
: 267
: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
 Re: DS18B20

1-Wire , , . , , , . AVR , , ...
PIC- . .
. )))

:


;        :   1Wire_SLAVE_1.asm
;
;        627    
;
;         :               1  2008 
;          :   11  2008    23:00
;
;
;
;  64   "1Wire_SLAVE_1":       17h 01h 07h 20h 08h 00h 01h 00h
;                                           (   )
;
;  64  (8 )   :  0Ch 86h FFh 00h 43h 5Ch 01h 05h
;                                         (   )
;
;
;
;
;   ()     
;  () ,  .    1Wire
;     ,   (  )
;
;
;   :
;  -------------------------------------------------------------------
;                0,    1 
;             ,     8     35 
;                0,    0 
;             ,     60    120 ,
;              120 ,     .
;                1    
;              -   400 ,  , 
;                  / 
;                  ROM (
;            64  )     ,  
;              [33h]  [BEh]  
;                 10    
;            .       
;              "WRITE_BUTE_7"   "READ_YES"
;
;
;   :  TMR0      "INT" (GP2)
;
;
;
;
;
;   :
; ----------------------------------------------
;      
; (),    .    
;   1Wire,      
;   .       
;      .     
;     , "1Wire_SLAVE" () 
;        
;      "DETECT_COMMAND".  
;        
;     1Wire . 
;      (      400 )
;      .
;           
;   (  RETFIE)    
;     ,    .
;   /   Buf_DATA_1 - Buf_DATA_8,
;        .
;    Buf_DATA_     
;   .
;
;  64         8 
;   : "SELECT_IN_CODE", "READ_CODE_TABLE", "READ_ROM_COMMAND"
;
;
;    "1Wire_SLAVE"    1Wire
;      "1Wire_SLAVE":
;
;      "1Wire_SLAVE"    1Wire :
;      [55h]       64 .  
;                "1Wire_SLAVE"   
;                   
;                    8 
;                  "1Wire_SLAVE" 
;             .  (  400)     "MODE_3"
;      [CCh]    (   )
;                  "1Wire_SLAVE" 
;             .  (  400)     "MODE_3"
;      [BEh]      (  )
;                 (   
;            400 )     ,
;             "1Wire_SLAVE"     
;                "Buf_DATA_", 
;                Buf_DATA_1
;      [33h]        64 . 
;                   
;             ,  "1Wire_SLAVE"     
;            64         8 
;
;
;
;
;
;
;  ===================   ========================
; 
;         -------------------------------------------------
;         ------- 1 ,     -------
;         -------------------------------------------------
;
;               
;
;   "Flag_1Wire" -     1Wire .
;    ,   1-Wire  ,
;       INT ( ),
;     "Flag_1Wire"  (Flag_1Wire = 00000000).
;     1-Wire  0,     ,
;   1Wire_SLAVE  TMR0   412 .   
;     1-Wire   (=0),   
;       (  ).
;      412    ,  
;     TMR0   412 ,    
;       0   412 .
;
;  Flag_1Wire = 00000001
;                1-Wire
;             400 
;
;   1-Wire   0.     
;    ,  ,     1.
;
;
;        : 
;                   INT
;
;  Flag_1Wire = 00000011
;                1-Wire  412 
;            .   .
;
;           
;
;  Flag_1Wire = 00000111
;              ( )
;              100 
;
;                    TMR0  100 
;               (   INT )
;                 GP,2  ,
;                   .
;                  (   )
;  
;                       100 :
;               GP,2  .
;                  (   )
;
;  Flag_1Wire = 00001111
;             ,  ,   
;              .  "1Wire_SLAVE" 
;               (  )  
;           ( ) = 100
;
;  :    "1Wire_SLAVE"  ,  
;                 .  
;               ,      
;            ,  "1Wire_SLAVE"     .
; 
;         1-Wire, 
;      ,  Flag_1Wire = 00001111
;           1Wire.
;            ( 
;  )   "DETECT_COMMAND".    
;   ,       1Wire,
;             .
;
;    "DETECT_COMMAND"        .
;
;    ,      ,     
;       "DETECT_COMMAND   
;      ,  
;
;
;
;
;
;         -------------------------------------------------
;         ------- 2    Flag_1Wire = 00001111    -------
;         -------------------------------------------------
;
;             
;            
;
;         "DETECT_COMMAND"   8
;  , (   1-Wire)    
;   "ANALIZ_COMMAND",   8  ()  
;         .
;
;                        [CCh] ( 1)
;                        [55h] ( 2)
;                        [33h] ( 3)
;
;
;
; MODE_2:
;
;
;
;
;      ---  1 -------------------------------------------
;      --    "1Wire_SLAVE"   ---------------
;
;                      Flag_1Wire = 00001111
; 
;                   "SKIP_ROM" [CCh] ( )
;                   Flag_1Wire = 00101111.
;  
;                                  MODE_3
;
;  
;
;
;
;      ---  2 -------------------------------------------
;      --    "1Wire_SLAVE"    ---
;
;                      Flag_1Wire = 00001111
;
;                   "MATCH_ROM" [55h] ( )
;                   Flag_1Wire = 00011111.
;
;                      64 
;
;                  64    "1Wire_SLAVE"
;                   Flag_1Wire = 00111111.
;  
;                                  MODE_3
;
;
;
;
;  
;      ---  3 -------------------------------------------
;      --    "1Wire_SLAVE"   ---------------
;
;                      Flag_1Wire = 00001111
; 
;                   "SKIP_ROM" [33h] ( )
;                    ( Flag_1Wire  )
;  
;                               READ_ROM_COMMAND
;   
;                    
;               64   
;                "1Wire_SLAVE"   
;              ,
;         ----------------------------------------------------
;         -----------      -----------------
;         ----------------------------------------------------
;
;
;
;
;
;
;
; MODE_3:
;  
;     1  2 
;          Flag_1Wire = 00111111  00101111
;
;            
;  "1Wire_SLAVE"       
;     Buf_DATA_.
;       , 
;     Flag_1Wire = 01111111. 
;     "1Wire_SLAVE"    ,
;       -   .
;         ----------------------------------------------------
;         -----------      -----------------
;         ----------------------------------------------------
;
;
;
;
;
;
;
;
;
;
;
;
;
;  *******************************************************************
;  **************  ()   *************
;                   DETECT_COMMAND:
;
;  
;        .     
;    . 
;          
;   GP,2    35 .        
;        "1",      .
;        ,    
;      90 .      
;        "0",      .
;         ,    
;      ,    
;    DETECT_COMMAND     "_1Wire_RESET"
;          ,  
;          .   
;           CONTROL_SPAD
;      .    
;      .      CONTROL_SPAD 
;    400          ( )
;    () _1Wire_SBROS,   
;        (    ).
;            
;            "CALL"
;   .         (8-10)
;      ( ).   
;    DETECT_COMMAND   ,     ,
;         
;    .


;==========================================================================
;   ( ) .... 4000 
;
;==========================================================================



;            LIST      p=12F629     ;  / PIC12F629
            LIST      p=12F675     ;  / PIC12F675



;         12F629/12F675



             __CONFIG  3184        ;   .
                                   ; MCLR/GP3 -    
                                   ;    .  
                                   ;    
                                   ; WDT ()  
                                   ;   
                                   ;  GP4,GP5  
                                   ;  /







       ;----       -------

W_TEMP      equ        20h         ;
Status_TEMP equ        21h         ;


   ;=============  1-Wire  ==============

Buf_IN      equ        22h         ;    

Buf_DATA_1  equ        23h         ; 
Buf_DATA_2  equ        24h         ;     
Buf_DATA_3  equ        25h         ;    
Buf_DATA_4  equ        26h         ;   ()  
Buf_DATA_5  equ        27h         ;    
Buf_DATA_6  equ        28h         ;   
Buf_DATA_7  equ        29h         ;  1Wire 
Buf_DATA_8  equ        2Ah         ; 

Flag_1Wire  equ        2Bh         ;     1Wire 
Count_IN    equ        2Ch         ;    1-Wire 
Sec_1Wire1  equ        2Dh         ;    
Sec_1Wire2  equ        2Eh         ;     


   ;===========    ============

Sec0        equ        40h         ;   
Sec1        equ        41h         ;   
Sec2        equ        42h         ;   
Sec3        equ        43h         ;   
Flag_MODE   equ        44h         ;     -
Buf_L       equ        45h         ;   
Buf_M       equ        46h         ;   



;==========================================================================
;     .
;--------------------------------------------------------------------------
W           equ        0           ;    .
F           equ        1           ;    .

;==========================================================================
;   .
;--------------------------------------------------------------------------
C           equ        0           ;  -.
Z           equ        2           ;   .
RP0         equ        5           ;   .
RP1         equ        6           ;   .
GIE         equ        7           ;    .

;=========================================================================
;   EEPROM .     .
;     EEPROM    PIC12F629
;-------------------------------------------------------------------------
;
;            org   2100h            ;   EEPROM  .
;
;
;            DE    .0, .0           ;  
;                           
;
;        ;----    -------
;
;            DE    " 1Wire_SLAVE_1.asm  "
;
;
;            DE    "  fantastron @ rambler.ru  "
;
;
;



;**************************************************************************

            org        0           ;    
            goto       START_PROG  ;   START_PROG





;**************************************************************************

            ORG        4

            BCF        IntCon,7    ;   

      ;---     -------------

            movwf      W_TEMP      ;   W   W_TEMP

            movf       Status,w    ;    Status
            movwf      Status_TEMP ;   Status_TEMP


      ;---  -0,       ------------

            BCF        Status,RP0  ;   -0


      ;---    ,    ---------

      ;-   IntCon,2,    TMR0   ---
      ;-      .   -----
      ;-  IntCon,2  ,       ---
      ;-  TMR1,  ,     ------
      ;-   TMR0.  IntCon,2  


      ;---      INT  -----------------------
            BTFSC      IntCon,1    ;   1  IntCon = 1
            GOTO       INT_INT     ;       INT
                                   ;    GOTO INT_INT
                                   ;    INT,  


      ;---     TMR0   ----------------------------
            BTFSC      IntCon,2    ;   2  IntCon = 1
            GOTO       INT_TMR0    ;     TMR0
                                   ;    GOTO INT_TMR0
                                   ;    TMR0,  


            GOTO       EXIT_ORG4   ;   









;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;################                          #######################
;########################################################################


        ;===      64      ====
        ;===        ==
        ;===    ======================================= 

WRITE_PAD_TABLE:

            addwf      PC,F          ;  "PC"   "Count_IN"
            NOP                      ; .     
            GOTO       WRITE_BUTE_8 ;    
            GOTO       WRITE_BUTE_7 ;    
            GOTO       WRITE_BUTE_6 ;    
            GOTO       WRITE_BUTE_5 ;    
            GOTO       WRITE_BUTE_4 ;    
            GOTO       WRITE_BUTE_3 ;    
            GOTO       WRITE_BUTE_2 ;    
            GOTO       WRITE_BUTE_1 ;    
            ;----     255  --------


WRITE_BUTE_1:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_1
            RETURN
WRITE_BUTE_2:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_2
            RETURN
WRITE_BUTE_3:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_3
            RETURN
WRITE_BUTE_4:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_4
            RETURN
WRITE_BUTE_5:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_5
            RETURN
WRITE_BUTE_6:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_6
            RETURN
WRITE_BUTE_7:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_7
            RETURN
WRITE_BUTE_8:
        ;------  "Buf_IN"    ----------
            movf       Buf_IN,w
            movwf      Buf_DATA_8
            RETURN





        ;===      64   ====
        ;===  (    )  ====
        ;===        64  ==== 
        ;===  (          ====
        ;===    ) ==============================

SELECT_IN_CODE:   
            addwf      PC,F          ;  "PC"   "Count_IN"
            NOP                      ; .     
            GOTO       SELECT_BUTE_8 ;    
            GOTO       SELECT_BUTE_7 ;    
            GOTO       SELECT_BUTE_6 ;    
            GOTO       SELECT_BUTE_5 ;    
            GOTO       SELECT_BUTE_4 ;    
            GOTO       SELECT_BUTE_3 ;    
            GOTO       SELECT_BUTE_2 ;    
            GOTO       SELECT_BUTE_1 ;    
            ;----     255  --------


SELECT_BUTE_1:
        ;------   "Buf_IN"   ----------
            movlw      .23  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_2:
        ;------   "Buf_IN"   ----------
            movlw      .1  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_3:
        ;------   "Buf_IN"   ----------
            movlw      .7  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_4:
        ;------   "Buf_IN"   ----------
            movlw      .32  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_5:
        ;------   "Buf_IN"   ----------
            movlw      .8  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_6:
        ;------   "Buf_IN"   ----------
            movlw      .0  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_7:
        ;------   "Buf_IN"   ----------
            movlw      .1  
            XORWF      Buf_IN,1
            RETURN
SELECT_BUTE_8:
        ;------   "Buf_IN"   ----------
            movlw      .0  
            XORWF      Buf_IN,1
            RETURN







        ;========                  ====
        ;========  64         =====
        ;======== : 1      READ_ROM_COMMAND ==

READ_CODE_TABLE:
            addwf      PC,F        ;  "PC"   "Count_IN"
            NOP                    ; .     
            NOP                    ; .  1 
            GOTO       R_BUTE_8    ;    
            GOTO       R_BUTE_7    ;    
            GOTO       R_BUTE_6    ;    
            GOTO       R_BUTE_5    ;    
            GOTO       R_BUTE_4    ;    
            GOTO       R_BUTE_3    ;    
            GOTO       R_BUTE_2    ;    
            ;----     255  --------

R_BUTE_2:
            movlw       .1         ;     ()
            movwf      Buf_IN      ;   
            RETURN
R_BUTE_3:
            movlw       .7         ;     ()
            movwf      Buf_IN      ;   
            RETURN
R_BUTE_4:
            movlw       .32        ;     ()
            movwf      Buf_IN      ;   
            RETURN
R_BUTE_5:
            movlw       .8         ;     ()
            movwf      Buf_IN      ;   
            RETURN
R_BUTE_6:
            movlw       .0         ;     ()
            movwf      Buf_IN      ;   
            RETURN
R_BUTE_7:
            movlw       .1         ;     ()
            movwf      Buf_IN      ;   
            RETURN
R_BUTE_8:
            movlw       .0         ;     ()
            movwf      Buf_IN      ;   
            RETURN





        ;=====           =======
        ;=====   8     =======
        ;-- (  Buf_DATA_1   READ_PAD_COMMAND)-

READ_PAD_TABLE:
            addwf      PC,F        ;  "PC"   "Count_IN"
            NOP                    ; .     
            NOP                    ; .  1 
            GOTO       WR_DATA_8   ;    
            GOTO       WR_DATA_7   ;    
            GOTO       WR_DATA_6   ;    
            GOTO       WR_DATA_5   ;    
            GOTO       WR_DATA_4   ;    
            GOTO       WR_DATA_3   ;    
            GOTO       WR_DATA_2   ;    
            ;----     255  --------

WR_DATA_2:
        ;------        ----------
            movf       Buf_DATA_2,w 
            movwf      Buf_IN
            RETURN
WR_DATA_3:
        ;------        ----------
            movf       Buf_DATA_3,w 
            movwf      Buf_IN
            RETURN
WR_DATA_4:
        ;------        ----------
            movf       Buf_DATA_4,w 
            movwf      Buf_IN
            RETURN
WR_DATA_5:
        ;------        ----------
            movf       Buf_DATA_5,w 
            movwf      Buf_IN
            RETURN
WR_DATA_6:
        ;------        ----------
            movf       Buf_DATA_6,w 
            movwf      Buf_IN
            RETURN
WR_DATA_7:
        ;------        ----------
            movf       Buf_DATA_7,w 
            movwf      Buf_IN
            RETURN
WR_DATA_8:
        ;------        ----------
            movf       Buf_DATA_8,w 
            movwf      Buf_IN
            RETURN




;########################################################################
;################                          #######################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
;########################################################################
















;==========================================================================
;      
;--------------------------------------------------------------------------

START_PROG:

       ;====    ============================
       ;----     --------------------

            BCF        Status,RP0  ;   0

            movlw      b'00000000' ; 
            movwf      PortGPIO    ;   

            BSF        Status,RP0  ;   1

            movlw      b'00000100' ;  ( GP2)  .  
            movwf      TrisGPIO    ;  GP3    

            BCF        Status,RP0  ;   0
       ;==========================================================




       ;==============     =====================
       ;==========     ================

            BCF        Status,RP0  ;   0

            movlw      b'00000111' ; 
            movwf      CMCON       ;    

            movlw      b'00000000' ;
            movwf      T1CON       ;  TMR1

            BSF        Status,RP0  ;   1


        ;---    OPTION ---
            movlw      b'10000000' ;  .
            movwf      OptionR     ;      INT
                                   ;    TMR0
                                   ;   TMR0
                                   ;   1:2

            movlw      b'00000000' ;       
            movwf      ANSEL       ;   /
            movlw      b'00000000' ; ,   PIC12F6275   
            movwf      ADCON0      ; PIC12F629  ,  

            movlw      b'00000000' ;
            movwf      VRCON       ;    


         ;---   . ----------------
         ;---    ,   
         ;---  ,       --

            movlw      .103       ; 
	    movwf      OSCCAL      ;   

            BCF        Status,RP0  ;   0

         ;=============================================================


      ;------  .      -----------


      ;---    ---
	    clrf       Flag_1Wire
	    clrf       Flag_MODE
	    clrf       Count_IN


            movlw      b'11010000' ;      INT
	    movwf      IntCon	   ;    
                                   ;   


            GOTO       CENTRAL_MODULE ;      








      ;***************************************************************
      ;***************************************************************
      ;***************************************************************
      ;***************************************************************
      ;***************************************************************
      ;************                ******************
      ;***************************************************************

CENTRAL_MODULE:

        ;---    ---
            movlw      .12        ;  0Ch
            movwf      Buf_DATA_1
            movlw      .134       ;  86h
            movwf      Buf_DATA_2
            movlw      .255       ;  FFh
            movwf      Buf_DATA_3
            movlw      .0         ;  00h
            movwf      Buf_DATA_4
            movlw      .67        ;  43h
            movwf      Buf_DATA_5
            movlw      .92        ;  5Ch
            movwf      Buf_DATA_6
            movlw      .1         ;  01h
            movwf      Buf_DATA_7
            movlw      .5         ;  05h
            movwf      Buf_DATA_8


CENTRAL_MODULE_2:

            NOP
            NOP
            NOP


            GOTO       CENTRAL_MODULE_2

      ;***************************************************************
      ;************                ******************
      ;***************************************************************
      ;***************************************************************
      ;***************************************************************
      ;***************************************************************
      ;***************************************************************




















;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;########                                                  ############
;########              1-Wire            ############
;########     !!!     !!!      ############
;########       INT   TMR0    ############
;########                                                  ############
;######################################################################
;
;  :   , ,   1Wire 
;          
;######################################################################


      ;******************************************************************
      ;***********     INT  ****************
      ;******************************************************************

INT_INT:

        ;--   ,      1-Wire ---
        ;--      .   --
            BTFSC      Flag_1Wire,3   ;  Flag_1Wire,3 = 0  
            GOTO       DETECT_COMMAND ;  Flag_1Wire,3 = 1  GOTO
        ;---------------------------------------------------------------


        ;------      1-Wire   --------------
            BTFSS      PortGPIO,2  ;  GP,2   GOTO   LINE_LOW
            GOTO       LINE_LOW    ;  GP,2   GOTO  LINE_HIGH
            GOTO       LINE_HIGH



      ;================   1-Wire   ===============
LINE_HIGH:

      ;-------------------------------------------------------------
            BTFSS      Flag_1Wire,0 ;  Flag_1Wire,0 = 0  GOTO
            GOTO       _1Wire_SBROS ;  Flag_1Wire,0 = 1  
      ;-------------------------------------------------------------

      ;---  ,     / ---
      ;--- 1-Wire .        ---

      ;---      ,   1-Wire --
      ;---   ,    ---------

            BSF        Flag_1Wire,1 ;  ,   

            GOTO       OTKLIK       ;   



      ;================   1-Wire   ===============
LINE_LOW:

            CALL       START_INT_01 ;   INT0   

            CALL       START_TMR0_412mcs ;  TMR0  412 

            GOTO       EXIT_ORG4   ;     
      ;****************************************************************







      ;****************************************************************
      ;****************    TMR0 ******************
      ;****************************************************************

INT_TMR0:

            BCF        IntCon,2    ;      TMR0

      ;-------------------------------------------------------------
            BTFSC      Flag_1Wire,3 ;  Flag_1Wire,3 = 0  
            GOTO       _1Wire_RESET ;  Flag_1Wire,3 = 1  GOTO
      ;-------------------------------------------------------------

      ;---        --------
            BTFSC      Flag_1Wire,1 ;  Flag_1Wire,1 = 0  
            GOTO       OTKLIK       ;  Flag_1Wire,1 = 1  GOTO
      ;-------------------------------------------------------------

      ;-------------------------------------------------------------
            BTFSC      Flag_1Wire,0 ;  Flag_1Wire,0 = 0  
            GOTO       _1Wire_SBROS ;  Flag_1Wire,0 = 1  GOTO
      ;-------------------------------------------------------------

      ;---       1-Wire  412  ---
      ;---   ,       -----
      ;---         ---
      ;---   ,    -----------------------

            BSF        Flag_1Wire,0 ;  

            CALL       STOP_TMR0  ;     TMR0

            GOTO       EXIT_ORG4    ;   
      ;****************************************************************








      ;****************************************************************
      ;*********    ********************
      ;*********    100    ****************
      ;****************************************************************

OTKLIK:

      ;-------------------------------------------------------------
            BTFSC      Flag_1Wire,2 ;  Flag_1Wire,2 = 0  
            GOTO       OTKLIK_STOP  ;  Flag_1Wire,2 = 1  GOTO
      ;-------------------------------------------------------------

      ;---         ---

            BSF        Flag_1Wire,2 ;  

            CALL       STOP_INT     ;     INT0

            CALL       START_TMR0_100mcs ;  TMR0  100 


      ;----    GP2   -------------------

            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

            BCF        PortGPIO,2  ;  0   GP2

            GOTO       EXIT_ORG4   ;   


OTKLIK_STOP:

      ;----    GP2   -------------------

            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;----        ---------

            BSF        Flag_1Wire,3 ;  

            CALL       STOP_TMR0  ;     TMR0

            CALL       START_INT_10 ;   INT0   

            GOTO       EXIT_ORG4   ;   
      ;****************************************************************






      ;******************************************************************
      ;***            ***
      ;        
      ;   1Wire   .    
      ;    .     .
      ;    .      
      ; .    .     .
      ;    ,      
      ;  ,     .
      ;****************************************************************


DETECT_COMMAND:

        ;*********     0   ****************
        ;---       "Sec_1Wire1" ----------
        ;---          ---
        ;---        30   --------
        ;---      (  ) ----------

            CALL       CONTROL_SPAD ;       

            movlw       .4         ;   4  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 23
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,0    ;  1    
            GOTO       WRITE_BIT_1

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,0     ;  "0"    
        ;=================================================================
        ;*****************************************************************



WRITE_BIT_1:
        ;*********     1   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,1    ;  1    
            GOTO       WRITE_BIT_2

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,1     ;  "0"    
        ;=================================================================
        ;*****************************************************************



WRITE_BIT_2:
        ;*********     2   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,2    ;  1    
            GOTO       WRITE_BIT_3

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,2     ;  "0"    
        ;=================================================================
        ;*****************************************************************




WRITE_BIT_3:
        ;*********     3   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,3    ;  1    
            GOTO       WRITE_BIT_4

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,3     ;  "0"    
        ;=================================================================
        ;*****************************************************************




WRITE_BIT_4:
        ;*********     4   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,4    ;  1    
            GOTO       WRITE_BIT_5

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,4     ;  "0"    
        ;=================================================================
        ;*****************************************************************



WRITE_BIT_5:
        ;*********     5   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,5    ;  1    
            GOTO       WRITE_BIT_6

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,5     ;  "0"    
        ;=================================================================
        ;*****************************************************************



WRITE_BIT_6:
        ;*********     6   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,6    ;  1    
            GOTO       WRITE_BIT_7

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,6     ;  "0"    
        ;=================================================================
        ;*****************************************************************



WRITE_BIT_7:
        ;*********     7   ****************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

            movlw       .6         ;   6  
            movwf      Sec_1Wire1  ;   Sec_1Wire1 = 35
            movlw       .15        ;   15  
            movwf      Sec_1Wire2  ;   Sec_1Wire2 = 90

       ;===========       ===============
            BTFSS      PortGPIO,2  ;   GP2    GOTO
            GOTO       $+3         ;   GP2    

            BSF        Buf_IN,7    ;  1    
            GOTO       EX_WRITE_BIT 

            decfsz     Sec_1Wire1,1     
            GOTO       $-5

            BTFSC      PortGPIO,2    ;   GP2    
            GOTO       $+4           ;   GP2    GOTO

            decfsz     Sec_1Wire2,1     
            GOTO       $-3
            GOTO       _1Wire_RESET ; 1Wire   
                                    ;     
                                    ;    

            BCF        Buf_IN,7     ;  "0"    


EX_WRITE_BIT:

            BCF        IntCon,1    ;      

        ;=================================================================
        ;*****************************************************************


        ;---  8       Buf_IN -------------
        ;---   ,     ----------------


      ;---         [CCh]  ----
      ;---    64    --------
            BTFSC      Flag_1Wire,5 ;  Flag_1Wire,5 = 0  
            GOTO       MODE_3       ;  Flag_1Wire,5 = 1  GOTO
      ;-------------------------------------------------------------
      ;---         [55h]  ----
      ;---     64   -------------
            BTFSC      Flag_1Wire,4 ;  Flag_1Wire,4 = 0  
            GOTO       MATCH_ROM    ;  Flag_1Wire,4 = 1  GOTO
      ;-------------------------------------------------------------


;MODE_2:

      ;-----------      ----------

      ;---     8   -----
      ;---      Buf_INPUT_1 ------------
      ;-------- ,    ----------------

           BCF         Status,2         ; 

         ;------------------------------
           movlw       .204             ; 
           XORWF       Buf_IN,w         ;   Buf_IN = CCh
           BTFSC       Status,2         ;    GOTO
           GOTO        SKIP_ROM_COMMAND ;     
         ;------------------------------
         ;------------------------------
           movlw       .85              ; 
           XORWF       Buf_IN,w         ;   Buf_IN = 55h
           BTFSC       Status,2         ;    GOTO
           GOTO        MATCH_ROM_COMMAND ;     
         ;------------------------------
         ;------------------------------
           movlw       .51              ; 
           XORWF       Buf_IN,w         ;   Buf_IN = 33h
           BTFSC       Status,2         ;    GOTO
           GOTO        READ_ROM_COMMAND ;     
         ;------------------------------

           GOTO        _1Wire_SBROS ;  .  .





SKIP_ROM_COMMAND:
   ;******************************************************************
      ;-------   "SKIP ROM" [CCh] ( ) ----
      ;-        "SKIP_ROM" [CCh] -

            BSF        Flag_1Wire,5   ;  

            GOTO       DETECT_COMMAND ;     8 






MATCH_ROM_COMMAND:
   ;******************************************************************
   ;--------   "MATCH ROM" [55h] ( ) ----------
   ;-        "MATCH_ROM" [55h] -
   ;-        64   -
   ;-   -----------------------------------------

            BSF        Flag_1Wire,4   ;  

            movlw      .8          ;  -
            movwf      Count_IN   ;  

            GOTO       DETECT_COMMAND ;     8 

MATCH_ROM:
        ;---      64   
        ;---        ---------
        ;--- 64      ,   ------------

            movf       Count_IN,W     ;  Count_Bute  W 

            BCF        Status,2       ;   "Z"

            CALL       SELECT_IN_CODE ;   
                                      ;   

            BTFSS      Status,2       ;    = 
            GOTO       _1Wire_SBROS   ;   

            decfsz     Count_IN,f     ;  

            GOTO       DETECT_COMMAND ;     8 

        ;----        -----

            BSF        Flag_1Wire,5   ;   .  


            GOTO       DETECT_COMMAND ;     8 










MODE_3:

      ;********************************************************************
      ;---      64   ------
      ;--- (    ),   -----------
      ;---     (     ) ---
      ;---         -----------
      ;---         ----------
      ;---         ----------

      ;----------------------------   Flag_1Wire = 00111111  00101111
      ;---      ----------------------------
      ;---     -------------------------------------
      ;********************************************************************


      ;---         [4Eh]  ----
      ;---     64    
            BTFSC      Flag_1Wire,6 ;  Flag_1Wire,6 = 0  
            GOTO       WRITE_PAD    ;  Flag_1Wire,6 = 1  GOTO
      ;-------------------------------------------------------------


      ;-------- ,    ----------------

           BCF         Status,2         ; 

         ;------------------------------
           movlw       .190             ; 
           XORWF       Buf_IN,w         ;   Buf_IN = [BEh]
           BTFSC       Status,2         ;    GOTO
           GOTO        READ_PAD_COMMAND ;   
         ;------------------------------

         ;------------------------------
           movlw       .78               ; 
           XORWF       Buf_IN,w          ;   Buf_IN = [4Eh]
           BTFSC       Status,2          ;    GOTO
           GOTO        WRITE_PAD_COMMAND ;   
         ;------------------------------

            GOTO       _1Wire_SBROS ;   








WRITE_PAD_COMMAND:

      ;----------------- "WRITE_PAD" [4Eh] (  ) ----------
      ;-        ----------------------
      ;-     (  8)    ----
      ;-    -       ----
      ;-          ------
      ;- Buf_DATA_1,   Buf_DATA_2    -------------------

            BSF        Flag_1Wire,6 ;  

            movlw      .8           ;  -
            movwf      Count_IN     ;  

            GOTO       DETECT_COMMAND ;     8 


WRITE_PAD:
        ;---      64   
        ;---        ---------
        ;--- 64      ,   ------------

            movf       Count_IN,W     ;  Count_Bute  W 

            CALL       WRITE_PAD_TABLE ;   
                                       ;  

            decfsz     Count_IN,f     ;  

            GOTO       DETECT_COMMAND ;     8 

        ;----        -----

            GOTO       _1Wire_SBROS ;   












READ_PAD_COMMAND:

   ;******************************************************************
   ;-------    [BEh] (  ) --------
   ;---         -
   ;---    ( Buf_DATA_)  -
   ;---    "1Wire_SLAVE"   ----------
   ;---        ------------
   ;--- -    --------------------------
   ;******************************************************************

            movlw      .8          ;  - 
            movwf      Count_IN    ;   

            movf       Buf_DATA_1,w ;     ()
            movwf      Buf_IN       ;   

            GOTO       READ_YES    ;    





READ_ROM_COMMAND:
   ;******************************************************************
   ;-------    [33h] ( ) ----------------------
   ;---         -
   ;---   64    ------------
   ;---    "1Wire_SLAVE"   ----------
   ;---        ------------
   ;--- -    --------------------------
   ;******************************************************************


            movlw      .8          ;  - 
            movwf      Count_IN    ;   

            movlw       .23        ;     ()
            movwf      Buf_IN      ;   


READ_YES:
      ;------------                   ----------------
      ;------------       ----------------
            movlw       .80        ; 
            movwf      Sec_1Wire1  ;   Sec_1Wire1

        ;--  (  400)    1Wire  --
        ;------     1-Wire   -----------------
            BTFSC      IntCon,1    ;  IntCon,1    
            GOTO       $+4         ;  IntCon,1   GOTO

            decfsz     Sec_1Wire1,f  
            GOTO       $-3
            GOTO       _1Wire_SBROS ;    1Wire 
                                    ;     

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,0    ;  Buf_IN,0 = 0  
            GOTO       $+3         ;  Buf_IN,0 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,1    ;  Buf_IN,1 = 0  
            GOTO       $+3         ;  Buf_IN,1 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,2    ;  Buf_IN,2 = 0  
            GOTO       $+3         ;  Buf_IN,2 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,3    ;  Buf_IN,3 = 0  
            GOTO       $+3         ;  Buf_IN,3 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,4    ;  Buf_IN,4 = 0  
            GOTO       $+3         ;  Buf_IN,4 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,5    ;  Buf_IN,5 = 0  
            GOTO       $+3         ;  Buf_IN,5 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,6    ;  Buf_IN,6 = 0  
            GOTO       $+3         ;  Buf_IN,6 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            CALL       CONTROL_SPAD ;       

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BCF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

      ;-------------------------------------------------------------
            BTFSC      Buf_IN,7    ;  Buf_IN,7 = 0  
            GOTO       $+3         ;  Buf_IN,7 = 1  GOTO
      ;-------------------------------------------------------------
            BCF        PortGPIO,2  ;   0
            GOTO       $+2
            BSF        PortGPIO,2  ;   1

            CALL       T_28_mcsec  ;  

      ;----     ---------------------
            BSF        Status,RP0  ;   1
            BSF        TrisGPIO,2  ;   GP2   
            BCF        Status,RP0  ;   0

;************************************************

            BCF        IntCon,1    ;      

            movf       Count_IN,W   ;  Count_IN  W 


      ;---         [CCh]  ----
      ;---         ------
      ;---     (   ) -
            BTFSC      Flag_1Wire,5 ;  Flag_1Wire,5 = 0  
            GOTO       $+5          ;  Flag_1Wire,5 = 1  GOTO
      ;-------------------------------------------------------------


            CALL       READ_CODE_TABLE ;    64 . 
            decfsz     Count_IN,f      ;  
            GOTO       READ_YES        ;  
        ;------    64    -------
            GOTO       _1Wire_SBROS    ;    1Wire 
                                       ;     


            CALL       READ_PAD_TABLE ;     . 
            decfsz     Count_IN,f     ;  
            GOTO       READ_YES       ;  
        ;------    64    -------
            GOTO       _1Wire_SBROS   ;    1Wire 
                                      ;     














      ;********************************************************************
      ;******       ************
      ;********************************************************************


_1Wire_SBROS:
        ;---------   1Wire .    ---------
        ;---------      ---------------

            clrf       Flag_1Wire  ;  
            clrf       Count_IN    ; 
            clrf       Buf_IN      ; 
            CALL       STOP_TMR0   ;     TMR0
            CALL       START_INT_10 ;   INT0   

            GOTO       EXIT_ORG4   ;   




_1Wire_RESET:
        ;---------     ----------
        ;---------      ---------------

            movlw      b'00000001' ;     
            movwf      Flag_1Wire  ;       

            clrf       Count_IN    ;  
            clrf       Buf_IN      ; 
            CALL       STOP_TMR0   ;     TMR0
            CALL       START_INT_01 ;   INT0   

            GOTO       EXIT_ORG4   ;   



EXIT_ORG4:

      ;-------     ----------

            movf       Status_TEMP,w ;   
            movwf      Status        ;  Status

            movf       W_TEMP,w      ;   W

            RETFIE                   ;   




        ;**********************************************************
        ;********        ****************
        ;********       400   ****************
        ;**********************************************************
CONTROL_SPAD:
            movlw       .80        ; 
            movwf      Sec_1Wire1  ;   Sec_1Wire1

        ;--  (  400)    1Wire  --
        ;------     1-Wire   -----------------
            BTFSC      IntCon,1    ;  IntCon,1    
            RETURN                 ;  IntCon,1   RETURN

            decfsz     Sec_1Wire1,f  
            GOTO       $-3
            GOTO       _1Wire_SBROS ;    1Wire 
                                    ;     
        ;**********************************************************



T_28_mcsec:  
         ;---  28  -------
	    movlw      .8          ; 
	    movwf      Sec1	   ; 
            decfsz     Sec1,f      ;
	    GOTO       $-1         ;
            GOTO       $+1
            NOP
            RETURN



;######################################################################
;########              1-Wire            ############
;########     !!!     !!!      ############
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################

















;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;########                         ############
;########                              ############
;######################################################################


         ;************************************************************
         ;************     TMR0  ******************
         ;************************************************************

START_TMR0_100mcs:   

         ;---    TMR0   100  ----

         ;--------------------------------------------------------------
            movlw      .205        ;
            movwf      Tmr0        ;   
         ;--------------------------------------------------------------

         ;--   IntCon       -----
         ;--       -----------------

            BCF        IntCon,2    ;     TMR0
            BSF        IntCon,5    ;    TMR0
            BSF        IntCon,6    ;    
;            BSF        IntCon,7    ;   
         ;--------------------------------------------------------------

            RETURN


START_TMR0_412mcs:   

         ;---    TMR0   412  ----

         ;--------------------------------------------------------------
            movlw      .50         ; 
            movwf      Tmr0        ;   
         ;--------------------------------------------------------------

         ;--   IntCon       -----
         ;--       -----------------

            BCF        IntCon,2    ;     TMR0
            BSF        IntCon,5    ;    TMR0
            BSF        IntCon,6    ;    
;            BSF        IntCon,7    ;   
         ;--------------------------------------------------------------

            RETURN



STOP_TMR0:

            BCF        IntCon,2    ;     TMR0
            BCF        IntCon,5    ;    TMR0

            RETURN




         ;************************************************************
         ;**      GP2 (INT)  *****
         ;************************************************************

START_INT_10:
        ;-------   INT    --------

            BSF        Status,RP0  ;   1
            BCF        OptionR,6   ;     GP2   (INT)
            BCF        Status,RP0  ;   0

            BCF        IntCon,1    ;     INT
            BSF        IntCon,4    ;      GP2 (INT)

            RETURN


START_INT_01:
        ;-------   INT    --------

            BSF        Status,RP0  ;   1
            BSF        OptionR,6   ;     GP2   (INT)
            BCF        Status,RP0  ;   0

            BCF        IntCon,1    ;     INT
            BSF        IntCon,4    ;      GP2 (INT)

            RETURN


STOP_INT:
        ;---------     INT -------------

            BCF        IntCon,1    ;     INT
            BCF        IntCon,4    ;      GP2 (INT)

            RETURN


;######################################################################
;########                         ############
;########                              ############
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################
;######################################################################




;============================================
            end
fol   
01.11.2009, 00:40   #3
fol
Senior Member
 
  fol
 
: 04.05.2007
: 41
: 267
: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
 Re: DS18B20

-(
.
1wire.JPG  
fol   
01.11.2009, 02:24   #4
Barmaley67
Senior Member
 
: 16.01.2009
: 560
: 258/37
Barmaley67 is a jewel in the roughBarmaley67 is a jewel in the roughBarmaley67 is a jewel in the rough
 Re: DS18B20

:
Filya44
, DS18B20. -40 +40. , -40 . , .
. ? DS18B20, ? .
Barmaley67   
01.11.2009, 09:34   #5
timday
Senior Member
 
: 07.03.2007
:
: 37
: 385
: 308/43
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
 Re: DS18B20

-
timday   
01.11.2009, 09:59   #6
Filya44
Senior Member
 
  Filya44
 
: 21.09.2008
: 275
: 154/35
Filya44 has a spectacular aura aboutFilya44 has a spectacular aura about
 Re: DS18B20

. , , . , , -
Filya44   
01.11.2009, 10:07   #7
Filya44
Senior Member
 
  Filya44
 
: 21.09.2008
: 275
: 154/35
Filya44 has a spectacular aura aboutFilya44 has a spectacular aura about
 Re: DS18B20

FOL ! - , .
Filya44   
01.11.2009, 14:33   #8
Barmaley67
Senior Member
 
: 16.01.2009
: 560
: 258/37
Barmaley67 is a jewel in the roughBarmaley67 is a jewel in the roughBarmaley67 is a jewel in the rough
 Re: DS18B20

, .
Barmaley67   
01.11.2009, 15:26   #9
Filya44
Senior Member
 
  Filya44
 
: 21.09.2008
: 275
: 154/35
Filya44 has a spectacular aura aboutFilya44 has a spectacular aura about
 Re: DS18B20

. .
PHP :
;*********************************************************
;
  DS18B20   PIC16F84A

;********************************************************* 

    
__CONFIG _CP_ON _WDT_OFF _XT_OSC

 
       
LIST p=16F84a
#include <p16f84a.inc>

  PIC16C84  
#include <p1684.inc>

;-----------------------------------------------------------
;-----------------------------------------------------------
 
;
 p pp


;  PORTA
PIT    EQU 00h        
; PORTA0
PER    EQU 01h     
;

;  PORTB

RB0            EQU    00h

 
CBLOCK  0CH

TEMP
TMP
COUN
Reg_1        
Reg_2        
Reg_3
        
ENDC

 


        ORG     0h
GOTO    Start

 
;============================================================
       
    
ORG    5h ;

CALL     delay_500mks
BSF    STATUS
,RP0     ;  1
BCF    TRISB
,0        ; RB0  
BCF    STATUS
,RP0     ;  0
CALL     delay_60mks
BCF    PORTB
,0
CALL     delay_60mks
CALL     delay_100mks
CALL     delay_60mks
BSF    PORTB
,0        ; 
CALL     delay_60mks
BCF    PORTB
,0
CALL     delay_500mks
CALL     delay_500mks
CALL     delay_750ms
CALL     delay_500mks
BSF    PORTB
,0        ; 
CALL     delay_60mks
CALL     delay_60mks
BCF    PORTB
,0
CALL     delay_60mks
CALL     delay_60mks
CALL     delay_500mks
CALL     delay_500mks

MOVFW    PORTA         
;
MOVWF     TEMP         
; .
BTFSC     TEMP,PER     ;    "0"
GOTO     LL           
MOVLW    
B'01000000'    ; 40
CALL    POSIL
MOVLW    
B'11111001'
CALL    POSIL
GOTO    LLL

LL
MOVLW    
B'10000000'    ;
CALL    POSIL
MOVLW    
B'00000010'
CALL    POSIL

LLL
BSF    STATUS
,RP0     ;  1
BSF    TRISB
,0        ; RB0  
BCF    STATUS
,RP0     ;  0

BCF    INTCON
,INTF                
RETFIE
;============================================================

Start

BSF    STATUS
,RP0     ;  1
BCF    TRISA
,PIT    ; RA,PIT  
BSF    TRISA
,PER    ; RA,PER  
BSF    TRISB
,RB0    ; RB0  
BCF    OPTION
,INTEDG    ;  RB0   
BCF    STATUS
,RP0    ;  0
BSF    PORTA
,PIT    
BSF    INTCON
,GIE    ;  

;============================================================
BUBU
BCF    INTCON
,INTE
MOVFW     PORTB         
;
MOVWF     TEMP         
; .
BTFSS     TEMP,0         ;    "1"
GOTO     BUBU          
BSF    INTCON
,INTE    ;   RB0
CALL     delay_500mks
GOTO    BUBU

;============================================================
;  
 
;============================================================
POSIL
MOVWF TEMP         
;     .
MOVLW H'08'         ;  .
MOVWF COUN ;
;--------------------------------------------------
POSI
RRF TEMP
,0         ;  .
BTFSS STATUS,0         ;  ,
GOTO    
W0         ;   ,
GOTO    
W1         ;  .
;--------------------------------------------------
POS
DECFSZ COUN
,F         ; .
GOTO 
POSI
RETURN
;--------------------------------------------------
W0
BCF    PORTB
,0     ;   .
CALL delay_60mks     60 .
BSF    PORTB,0     ;   .
GOTO 
POS         ;  .
;--------------------------------------------------
W1

BCF    PORTB
,0     ;    .
NOP
NOP
BSF    PORTB
,0     ;   .
CALL delay_60mks     60 .
GOTO 
POS         ;  .


;======================================================================
;                

;======================================================================

    
;=== 
 =========
        
    

;-------------------------------------
delay_500mks
            movlw       .166
            movwf       Reg_1
wr6          decfsz      Reg_1
F
            
goto        wr6
            nop
            
return
;-------------------------------------
delay_60mks
       movlw       .19
            movwf       Reg_1
wr7          decfsz      Reg_1
F
            
goto        wr7
            nop
            nop
            
return
;-------------------------------------
delay_750ms
            movlw       .1
            movwf       Reg_1
            movlw       .207
            movwf       Reg_2
            movlw       .4
            movwf       Reg_3
wr8          decfsz      Reg_1
F
            
goto        wr8
            decfsz      Reg_2
F
            
goto        wr8
            decfsz      Reg_3
F
            
goto        wr8
            nop
            nop
            
return
 
 ;-------------------------------------

delay_100mks
            movlw       .33
            movwf       Reg_1
wr12        decfsz      Reg_1
F
            
goto        wr12
            
return



;-------------------------------------
END 
Filya44   
08.03.2012, 15:07   #10
Ig_B
Senior Member
 
: 25.02.2007
: 184
: 100/39
Ig_B will become famous soon enoughIg_B will become famous soon enough
 Re: DS18B20

?
?
DS18B20.
Ig_B   
08.03.2012, 22:16   #11
russo turisto
Senior Member
 
: 25.03.2009
: KZ
: 129
: 164/32
russo turisto has a spectacular aura aboutrusso turisto has a spectacular aura about
 Re: DS18B20

12509 , .

http://ct.kz/topic/394324-programmir...t__p__18050802
russo turisto   
09.03.2012, 16:17   #12
viael
Member
 
: 28.02.2007
: ,
: 38
: 96
: 100/38
viael will become famous soon enoughviael will become famous soon enough
 Re: DS18B20

. .

:
#include <pic.h>
#include <stdio.h>
#include "1w_slave_util.h"
#include "1w_slave_def.h"
#include "util.h"

#define EXT_VREF

__CONFIG(FCMDIS&IESODIS&SBOREN&PROTECT&MCLRDIS&PWRTEN&WDTEN&HS);


volatile unsigned char SCRATCHPAD[9]={
0,//Temperature LSB
0,//Temperature MSB
0,//TH Register or User Byte 1*
0,//TL Register or User Byte 2*
0,//Configuration Register*
0xFF,//Reserved (FFh)
0x0C,//Reserved (0Ch)
0x00,//Reserved (10h)
0//CRC*
};
unsigned char IDCode[8],MyID[9]=__TIME__;
volatile unsigned char State=0,SearchcState=0;
unsigned char DataIn=0;
unsigned char BitCnt=0;
unsigned char ByteCnt=0;
volatile unsigned char CurrScratcpadBit,CurrMyIDBit,TmpBit,TmpBit2,i,crc = 0;
bit DevSelected=0;
bit GoToWork=0;
bit calcCRC=0;

unsigned int tmp;


    
void main ( void )
{    
//OSCCON=0b01110001;//select intRC 8MHz

// 
ANSEL=0b10010000;//AN7 AN4 as analog input
#ifdef EXT_VREF
ADCON0=0b11100001;//Right justified,VREF pin,A/D converter module is operating
#else
ADCON0=0b10100001;//Right justified,VDD pin,A/D converter module is operating
#endif
ADCON1=0b00100000;//32Tosc=1.6 ?s



_1W_PIN_DIR=1;//ra2 input
_1W_PIN=0;
TRISC2=0;//led out
CMCON0=7;//comparatof off
OPTION=0b00000100;//TMR0 Clk=5/16=1,6uS


//get 0 bit from scratchpad
if((SCRATCHPAD[0]&1)==1)CurrScratcpadBit=1;
else CurrScratcpadBit=0;

//get 0 bit from myID
if((MyID[0]&1)==1)CurrMyIDBit=1;
else CurrMyIDBit=0;

SCRATCHPAD[8] =  CalcCRC();

State=WEIT_RESET;
DevSelected=0;
GeneratePresensePulse();

T0IF=0;
INTF=0;
INTE=1;
GIE=1;

while(1)
{
    CLRWDT();
    
    if(calcCRC)
    {
    SCRATCHPAD[8] =  CalcCRC();
    calcCRC=0;
    }
    
    if(DevSelected)
    {
        
        if(GoToWork)
        {
            
        ACT_LED=1;
            tmp=Get16bitADCResult(4);
            SCRATCHPAD[0]=(unsigned char)(tmp&0xFF);//0x48;
            SCRATCHPAD[1]=(unsigned char)(tmp>>8);//0x2b;
            tmp=Get16bitADCResult(7);
            SCRATCHPAD[2]=(unsigned char)(tmp&0xFF);
            SCRATCHPAD[3]=(unsigned char)(tmp>>8);
            SCRATCHPAD[8] =  CalcCRC();    
        GoToWork=0;
        ACT_LED=0;
        }
        

    }

}

}

void interrupt my ( void )
{
TMR0=0;//T0IF=0;
    

switch(State)
{
case WEIT_COMMAND://read 1w commad 
            
          delay_30us();        
        DataIn=DataIn>>1;
        if(_1W_PIN==1){DataIn=(DataIn|0x80);}
        BitCnt++; 
        if(BitCnt>7)
            {
            

                       
                            switch(DataIn)
                            {
                            case SKIP_ROM:DevSelected=1;break;//I'm selected
                            case CONVERT_T:GoToWork=1;break;
                            case READ_SCRATCHPAD:
                            BitCnt=0;
                            CurrScratcpadBit=GetScratcpadBit(0);
                            State=2;
                            break;
                            case SEARCH_ROM:State=3;break;
                            case MATCH_ROM:State=4;break; 
                            case WRITE_SCRATCHPAD:State=5;break; 
                            case COPY_SCRATCHPAD:
                            //Edata[0]=SCRATCHPAD[2];
                            //Edata[1]=SCRATCHPAD[3];
                            //Edata[2]=SCRATCHPAD[4];
                            State=WEIT_RESET;
                            break;
                            default :State=WEIT_RESET;break;
                            } 
                    ByteCnt=0;              
            DataIn=0;
            BitCnt=0;  
            }
     
                    
break;                        
case 2://read 1w SCRATCHPAD

        if(DevSelected)
        {    
            if(CurrScratcpadBit==0)PulseLow();                        
            CurrScratcpadBit=GetScratcpadBit(++BitCnt);
            if(BitCnt==72)State=WEIT_RESET;
        }
        else State=WEIT_RESET;
break;                 

case 3://search My ID 
        switch(SearchcState)
        {
        case 0:
            //    TmpBit=GetMyIDBit(BitCnt);
                if(CurrMyIDBit==0)PulseLow();
                CurrMyIDBit=GetMyIDBit(++BitCnt);//????????????
                TmpBit=CurrMyIDBit^1;
                SearchcState++;
        break;
        case 1:
                if(TmpBit==0)PulseLow();
                SearchcState++;
        break;
        case 2:
                delay_30us();
                TmpBit2=_1W_PIN;
                if(TmpBit2==(TmpBit^1))
                        {
                        SearchcState=0;
                        if((BitCnt)>=63)State=WEIT_RESET;                
                        }
                else State=WEIT_RESET;        
        break;    
            }

break;

case 4:// ID      
          delay_30us();        
        DataIn=DataIn>>1;
        if(_1W_PIN==1){DataIn=(DataIn|0x80);}
        BitCnt++; 
        if(BitCnt>7)
            {
            IDCode[ByteCnt++]=DataIn;

                if(ByteCnt>7){
                                if(IdCompare()){DevSelected=1;State=WEIT_COMMAND;}//ACT_LED=1;
                                else {DevSelected=0;State=WEIT_RESET;ACT_LED=0;}
                                ByteCnt=0;
                                }
            DataIn=0;
            BitCnt=0;  
            }


break;

case 5:
          delay_30us();        
        DataIn=DataIn>>1;
        if(_1W_PIN==1){DataIn=(DataIn|0x80);}
        BitCnt++; 
        if(BitCnt>7)
            {
            SCRATCHPAD[2+(ByteCnt++)]=DataIn;

                if(ByteCnt>2)
                {  
                calcCRC=1;
                DevSelected=0;State=WEIT_RESET;
                ByteCnt=0;ACT_LED=0;
                }
            DataIn=0;
            BitCnt=0;  
            }
break;  
    
}

T0IF=0;
while(_1W_PIN==0)
{
CLRWDT();
if(T0IF){asm("goto 0");}
};//

            if((TMR0>50))//>320uS||(T0IF)
            {//this is reset pulse

                if((MyID[0]&1)==1)CurrMyIDBit=1;
                else CurrMyIDBit=0;
                    
                State=WEIT_COMMAND;    
                DataIn=0;
                BitCnt=0;  
                DevSelected=0;
                GoToWork=0;
                ACT_LED=0;

                GeneratePresensePulse_i();    
            }

INTF=0;
}
 : rar 1wire_slave.rar (98.8 , 62 )
viael   
10.03.2012, 11:41   #13
Ig_B
Senior Member
 
: 25.02.2007
: 184
: 100/39
Ig_B will become famous soon enoughIg_B will become famous soon enough
 Re: DS18B20

, .
? ?
Ig_B   
10.03.2012, 17:43   #14
viael
Member
 
: 28.02.2007
: ,
: 38
: 96
: 100/38
viael will become famous soon enoughviael will become famous soon enough
 Re: DS18B20

:
Ig_B
, .
? ?
. DS18B20 . SCRACHPAD[0],[1] DS18B20. 16 . . , DS18B20, . ..
16f684.gif  

viael; 10.03.2012 17:50.
viael   
12.03.2012, 17:39   #15
Ig_B
Senior Member
 
: 25.02.2007
: 184
: 100/39
Ig_B will become famous soon enoughIg_B will become famous soon enough
 Re: DS18B20

.
Ig_B   

« | »

: 1 (: 0 , : 1)
 


.
HTML .



DS18B20 VS CRC-8 SkyProc 42 06.07.2014 14:03
DS18B20, Berkytxt 12 08.10.2010 22:45
DS18B20 0x33 0xBE , 0x44 . Stoun 10 13.03.2009 22:57
DS18B20 Sergey232 2 30.12.2008 10:21
DS18B20 Alarm MICROCHIP 6 29.03.2008 23:13


GMT +3, : 17:32.

- -

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. : zCarot