Prostorovy termostat

Kosta kosta
Středa Březen 17 11:42:46 CET 2004


----- Původní zpráva -----
Od: <Kaspar@ceb.cz>
Komu: Multiple recipients of list <hw-news@list.gin.cz>
Odesláno: 7. října 1999 10:44
Předmět: RE: Prostorovy termostat


>Mam to vyreseno pomoci DS1820 a AT89C51. Meri mi to teplotu v rozvadecich
>strukturovane kabelaze. Vyhledove to chci pouzit i na topeni. Rele je primo
>na PCB a lze pouzit az dalsich 5 externe. Jinak celou konstrukci jsem
poslal
>do Konkurzu PE, treba to i nekdy vyjde. Protokol neni az tak komplikovany,
>ale narocnejsi na casovani.
>
>Zdravim
>
>Pavel
>Kaspar, kaspar@ceb.cz


Jednoducha rutinka pro '51 a Dallas DS1820, bez preruseni, pro xtal
11.0592Mhz

;===========================================================================
==
;
;                     RUTINA MERENI TEPLOTY POMOCI DS1820
;
;===========================================================================
==
Dalas:  call Rst                ;
        mov  A,#0CCH            ; Skip ROM command
        call Write              ;
        mov  A,#044H            ; Convert T
        call Write              ;


        mov  2FH,#0             ;
Da1:    mov  A,2FH              ;
        cjne A,#200,Da1         ;
        cpl  F0


        call Rst                ;
        mov  A,#0CCH            ; Skip ROM command
        call Write              ;

        mov  A,#0BEH            ; Read scratchpad
        call Write              ;

        call Read               ;
        mov  2AH,A              ; LSB Temp
        call Read               ;
        mov  2BH,A              ; MSB Temp

        call Rst                ;

        mov  A,2BH              ;
        jz   Plus               ;

Minus:  mov  A,2AH              ;
        cpl  A                  ;
        inc  A                  ;
        mov  33H,#11            ; minus
        jmp  Pis                ;

Plus:   mov  A,2AH              ;
        mov  33H,#12            ; nic

Pis:    clr  C                  ;
        rrc  A                  ;

        mov  B,#10              ;
        div  AB                 ;
        mov  31H,B              ; jednotky
        mov  B,#10              ;
        mov  32H,A
        mov  30H,#10            ; znak stupne

        jmp  Loop

;---------------------------------------------
Rst:    clr  IE.7               ;
        mov  R2,#0              ;
        clr  P3.1               ; 1
Rst1:   djnz R2,Rst1            ; 2*R2 cyklu -> 512
        setb P3.1               ;
Rst2:   jb   P3.1,Rst2          ;
Rst3:   jnb  P3.1,Rst3          ; cekame na potvzeni z DS1820
        setb IE.7               ;
        ret                     ;

;---------------------------------------------
Write:  clr  IE.7               ;
        mov  R3,#8              ; vysilame 8 bitu
Write1: clr  P3.1               ;
        rrc  A                  ;
        jc   Write3             ;
        mov  R2,#40             ; pri '0' cekame 80 mikrosekund
Write2: djnz R2,Write2          ; 2*R2 cyklu -> 10 nebo 80 mikrosekund
        mov  R2,5               ;
        sjmp Write5             ;

Write3: mov  R2,#5              ; pri '1' cekame 10 mikrosekund
Write4: djnz R2,Write4          ; 2*R2 cyklu -> 10 nebo 80 mikrosekund
        mov  R2,#35             ;

Write5: setb P3.1               ;
Write6: djnz R2,Write6          ; no a dopocitame do 90 mikrosekund
        djnz R3,Write1          ;
        setb IE.7               ;
        ret                     ;

;---------------------------------------------
Read:   clr  IE.7               ;
        mov  R3,#8              ; prijimame 8 bitu
        clr  A                  ;
Read1:  clr  P3.1               ; inicializujeme vysilani z DS1820
        nop                     ;
        setb P3.1               ; > 1 mikrosekunda
        mov  R2,#5              ;
Read2:  djnz R2,Read2           ;
        mov  C,P3.1             ;
        rrc  A                  ; C=0 <-> R2>5 -> >15 mikrosekund
        mov  R2,#25             ;
Read3:  djnz R2,Read3           ;
        djnz R3,Read1           ;
        setb IE.7               ;
        ret                     ;

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

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




kosta@iol.cz
-------------------------------------------
             Kosta
             P.O.Box 38
             Posta 41
141 00  Praha 4 - Sporilov
-------------------------------------------
0603 / 33 87 47
-------------------------------------------






Další informace o konferenci Hw-list