www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 
Sponsored by SiOL

DHT11

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
TIBET
Član
Član



Pridružen-a: Čet 13 Sep 2007 23:39
Prispevkov: 163
Aktiv.: 1.31
Kraj: Metlika

PrispevekObjavljeno: Čet Nov 24, 2016 10:30 pm    Naslov sporočila:  DHT11 Odgovori s citatom

Mi lahko gdo pomaga pri oživljanju omenjenega senzorja.
Koda:
pBeriDHT  ; podatki iz dht senzorja
 ;decfsz stevecDHT, f
; return ; ni še 0, zato leti ven brez branja senzorja
 ;movlw .X;  (X * pavze) mora biti več kot 2 sekundi.
; movwf stevecDHT;
 ;nop
    mDHTout ;BANKSEL     TRISC
    BCF         DHTpin ;TRISC,0                 ;RC6 as output
   ; BANKSEL     PORTC
    BCF         DHTpin ;PORTC,0                 ;RC6 low
    CALL        Delay_20ms              ;RC6 low for 20ms
    BSF         DHTpin ;PORTC,0                 ;RC6 high
    CALL        Delay_30us              ;RC6 high for 30us
    mDHTin;BANKSEL     TRISC
    BSF         DHTpin ;TRISC,0                 ;RC6 as input
  ;  BANKSEL     PORTC
    CALL        Delay_160us             ;Wait for DHT11 response signal


Read_Integer_RH
    CALL        Read_BYTE
    MOVF        BYTE,W
    MOVWF       Integer_RH              ;Move BYTE to Integer_RH

Read_Decimal_RH
    CALL        Read_BYTE
    MOVF        BYTE,W
    MOVWF       Decimal_RH              ;Move BYTE to Decimal_RH

Read_Integer_T
    CALL        Read_BYTE
    MOVF        BYTE,W
    MOVWF       Integer_T              ;Move BYTE to Integer_T

Read_Decimal_T
    CALL        Read_BYTE
    MOVF        BYTE,W
    MOVWF       Decimal_T              ;Move BYTE to Decimal_T

Read_Checksum
    CALL        Read_BYTE
    MOVF        BYTE,W
    MOVWF       Checksum              ;Move BYTE to Checksum
 ; return
;============================================================
; ======================= PREVERI VELJAVNOST
;; prebranih je bilo 5 spremenljivk
 ;movf Integer_RH,W ; prvo v W
; addwf Decimal_RH,W ; doda drugo v W
 ;addwf Integer_T,W ; doda tretjo v W
; addwf Decimal_T,W ; doda četrto v W
; subwf Checksum,W ; odšteje peto
; btfss STATUS,Z ; je 0 ?
; return ; NE, vrne se brez osvežitve
; ======================= PREVERI VELJAVNOST
; JA, osveži za izpis
 movf  Integer_RH,W ; prvo v W
 movwf vlagaZG;
 movf  Decimal_RH, W ;
 movwf vlagaSP ;
 movf  Integer_T,W ;
 movwf temperaturaZG;
 movf  Decimal_T, W
 movwf temperaturaSP ;
 return ; vrne se s svežimi veljavnimi spremenljivkami
;============================================================
Read_BYTE
    CLRF        BYTE                    ;BYTE=00000000
    MOVLW       d'7'                    ;Check_bit 8 times, each time rotating left and updating the LSB
    MOVWF       Counter
    RLF         BYTE,f
    CALL        Check_bit
    DECFSZ      Counter,f
    GOTO        $-3
    RETURN

Check_bit
    CLRF        TMR2
    BTFSS       DHTpin ;PORTC,0                 ;Tests until RC0 is pulled high
    GOTO        $-1
    BSF         T2CON,2                 ;Starts TMR2
    BTFSC       DHTpin ;PORTC,0                 ;Tests until RC0 is pulled low
    GOTO        $-1
    BCF         T2CON,2                 ;Stops TMR2

    MOVF        TMR2,W                  ;if TMR2>40, bit=1
    SUBLW       d'40'
    BTFSC       STATUS,C                ;if TMR2>40, STATUS,C will be set
    BSF         BYTE,0                  ;sets BYTE,0 to 1 if STATUS,C=1
    BCF         STATUS,C                ;clears STATUS,C
    RETURN
;============================================================================

_________________
LP. Aleš
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 1968 dni


Powered by phpBB © 2001, 2005 phpBB Group