|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
TIBET Član
Pridružen-a: Čet 13 Sep 2007 23:39 Prispevkov: 163 Aktiv.: 0.81 Kraj: Metlika
|
Objavljeno: Čet Nov 24, 2016 10:30 pm Naslov sporočila: DHT11 |
|
|
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 |
|
|
|
|
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: 69 dni
Powered by phpBB © 2001, 2005 phpBB Group
|