to zavolas pre spustenie prevodu
call KOM_S_C_1 ; meranie teploty
toto pre nacitanie nameranej hodnoty
call namerane
pricom teplota data budu v TEMP_LSB a TEMP_MSB
inak niekde je verzia thto presne pre Bckove cidlo toto je robene pre Skove v podstate by mali ist aj na B.
Skontrolovat slucky ci tu nieje nejaka navyse
[code];******************************************************
KOM_S_C_1
movlw b’00101000’ ; zakazane všechna přerušení a od přetečení TMR0
movwf INTCON
CALL A0_RESET_C ;PROCEDURA RESET
MOVLW 0xCC ;PRIKAZ ROM - SKIPROM
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
MOVLW 0x44 ;PRIKAZ ROM - prevod teploty
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
return
;******************************************************
; TEST UKONČENÍ PŘEVODU *
;*************************
; Pro zjisteni ukonceni prevodu teploty se musi vyslat “cteci casovy usek” (pekne blbej výraz
)
; toto cteni se musi provadet pokazde, kdy chceme cist stav sbernice, protoze cidlo odpovi pouze jednou na
; otazku, zda probiha prevod, takze cekaci smycka se vraci o 10 radku nahoru na nove vyslani
; cteciho casoveho useku. 
namerane
g MOVLW 0X03 ;POMOCNE ZBRZDENI
MOVWF TMP2
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA0 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK - PRIPRAVA NA START CTENI
BCF ds ;LOG.0 NA TCK - START CTECIHO CASOVAHO USEKU
nop
;-------------------------------
BSF STATUS,RP0 ;BANKA1
BSF TRISA,4 ;PIN RA0 JAKO VSTUP
BCF STATUS,RP0 ;BANKA0
DECFSZ TMP2,F ;DOBRZDENI NA 13us
GOTO $-1
BTFSC ds ;TEST UROVNE SBERNICE - VYSLANI BITU Z CIDLA
GOTO KOM_S_C ;CIDLO POSLALO LOG.1 ukonceny prevod
CALL BR_60us ;BRZDA 60us
goto g
;******************************************************
KOM_S_C ; TEST KOMUNIKACE (z cidla musi byt nactena hodnota +85st.C. (0550h A PO UPRAVE V TEMP_MSB bit0 =0 A V TEMP_LSB=0xAA));
;******************************************************
CALL A0_RESET_C ;PROCEDURA RESET
MOVLW 0xCC ;PRIKAZ ROM - SKIPROM
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
MOVLW 0xBE ;FUNKCNI PRIKAZ - READ SCRATCHPAD
CALL A0_WR_DO_C ;ZAPIS PRIKAZU DO CIDLA
CALL A0_CTI_Z_C ;CTENI DAT Z CIDLA - NACTENA DATA JSOU V TMP0 reg.
MOVF TMP0,W
MOVWF TEMP_LSB
CALL A0_CTI_Z_C ;CTENI DAT Z CIDLA - NACTENA DATA JSOU V TMP0 reg.
MOVF TMP0,W
MOVWF TEMP_MSB
;movlw b'10101000' ; povolena všechna přerušení a od přetečení TMR0
;movwf INTCON
RETURN
;******************************************************
; Ovladaci ROUTINE pro cidlo DS18B20
; Casovani je pro pouziti krystalu 4MHz
; Casova smycka je 10us, 25us, 60us, 100us, 160us, 490us
; Cidlo je napajeno pres Ucc pin
;…
;PRSENTACNI CAST;
A0_RESET_C
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA4 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK
BCF ds ;LOG.0 NA TCK
CALL BR_490us ;CEKEJ CCA 490us
BSF STATUS,RP0 ;BANKA1
BSF TRISA,4 ;PIN RA0 JAKO VSTUP
BCF STATUS,RP0 ;BANKA0
CALL BR_100us ;CEKEJ CCA 100us
BTFSC ds ;TEST PRESENTACNIHO PULSU OD CIDLA
chyba goto chyba; call chyba
CALL BR_490us ;CEKEJ CCA 490us
RETURN
;------------------------------------------------------
;TEST KOMUNIKACE (z cidla musi byt nactena hodnota +85st.C. (0550h));
;------------------------------------------------------
;VYSLANI 8BITU DO CIDLA (DATA NEBO PRIKAZ)
;ODESILANA DATA (1 BAJT) MUSI BYT V W REGISTRU
A0_WR_DO_C
MOVWF TMP0
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA0 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK
MOVLW 0X08 ;POCET BITU DO CIDLA (8)
MOVWF TMP1
A0_ZAPISS
BTFSS TMP0,0 ;TEST BITU 0 REG. TMP0
GOTO A0_ZAPIS0
GOTO A0_ZAPIS1
;-------------------------------
A0_ZAPIS0 ;TAKTO ZAPISUJE LOG.0
BSF ds ;LOG.1 NA TCK
BCF ds ;LOG.0 NA TCK
CALL BR_100us ;BRZDA 100us
BSF ds ;LOG.1 NA TCK
GOTO A0_POSUNN
;-------------------------------
A0_ZAPIS1 ;TAKTO ZAPISUJE LOG.1
BSF ds ;LOG.1 NA TCK
BCF ds ;LOG.0 NA TCK
CALL BR_10us ;BRZDA 10us
BSF ds ;LOG.1 NA TCK
CALL BR_100us ;BRZDA 100us
GOTO A0_POSUNN
;------------------------------------------------------
A0_POSUNN
RRF TMP0,F ;POSUN OBSAHU REGISTRU O JEDEN BIT DOPRAVA
DECFSZ TMP1,F ;TEST POCTU ODESLANYCH BITU
GOTO A0_ZAPISS ;JESTE NEBYLO ODESLANO 8BITU
RETURN ;ODESLANO 8BITU - VYSTUP Z PODPROGRAMU
;------------------------------------------------------
; PRIJMUTI 8BITU Z CIDLA
; (DATA Z CIDLA JSOU V REG.TMP0)
A0_CTI_Z_C
BCF STATUS,RP0 ;BANKA0
MOVLW 0X08 ;POCET BITU PRO PRIKAZ (8)
MOVWF TMP1
CLRF TMP0
A0_CTI_Z_C1
bcf status,C
RRF TMP0,F
MOVLW 0X03 ;POMOCNE ZBRZDENI
MOVWF TMP2
BSF ds
BSF STATUS,RP0 ;BANKA1
BCF TRISA,4 ;PIN RA0 JAKO VYSTUP
BCF STATUS,RP0 ;BANKA0
BSF ds ;LOG.1 NA TCK - PRIPRAVA NA START CTENI
BCF ds ;LOG.0 NA TCK - START CTECIHO CASOVAHO USEKU
nop
;-------------------------------
BSF STATUS,RP0 ;BANKA1
BSF TRISA,4 ;PIN RA0 JAKO VSTUP
BCF STATUS,RP0 ;BANKA0
DECFSZ TMP2,F ;DOBRZDENI NA 13us
GOTO $-1
BTFSS ds ;TEST UROVNE SBERNICE - VYSLANI BITU Z CIDLA
GOTO A0_CTI_0 ;CIDLO POSLALO LOG.0
GOTO A0_CTI_1 ;CIDLO POSLALO LOG.1
;-------------------------------
A0_CTI_0
BCF TMP0,7 ;NASTAV BIT7 REG.TMP0 DO LOG.0
CALL BR_60us ;BRZDA 60us
DECFSZ TMP1,F ;TEST POCTU ODESLANYCH BITU
GOTO A0_CTI_Z_C1 ;JESTE NEBYLO ODESLANO/PRIJMUTO 8BITU
RETURN ;ODESLANO 8BITU - VYSTUP Z PODPROGRAMU
;-------------------------------
A0_CTI_1
BSF TMP0,7 ;NASTAV BIT7 REG.TMP0 DO LOG.0
CALL BR_60us ;BRZDA 60us
DECFSZ TMP1,F ;TEST POCTU ODESLANYCH BITU
GOTO A0_CTI_Z_C1 ;JESTE NEBYLO ODESLANO/PRIJMUTO 8BITU
RETURN ;ODESLANO 8BITU - VYSTUP Z PODPROGRAMU
;------------------------------------------------------
;******************************************************
;CASOVA SMYCKA PRO 4MHz
BR_10us
MOVLW 0X02 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
DECFSZ SM_AD1,F ;ODECTI 1 OD CISLA V PAMETI SM_AD1
GOTO $-1
return
;-------------------------------
BR_25us
MOVLW 0X05 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_60us
MOVLW 0X11 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_100us
MOVLW 0X1E ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_160us
MOVLW 0X32 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_490us
MOVLW 0XA0 ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0X01
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
GOTO BRZDA2
;-------------------------------
BR_MAX
MOVLW 0XFF ;NASTAV W REGISTR NA HODNOTU CAS1
MOVWF SM_AD1 ;PRESUN OBSAH W DO PAMETI SM_AD1
MOVLW 0XFF
MOVWF SM_AD2 ;PRESUN OBSAH W DO PAMETI SM_AD2
MOVLW 0X07
MOVWF SM_AD3
DECFSZ SM_AD3,F ;ODECTI 1 OD CISLA V PAMETI SM_AD1
GOTO $+2 ;POKUD JE VYSLEDEK 0,TOTO PRESKOC, JINAK SE VRAT NA BRZDA1
return
call BRZDA2
GOTO $-4
;----------------------------------
;-------------------------------
BRZDA2
DECFSZ SM_AD1,F ;ODECTI 1 OD CISLA V PAMETI SM_AD1
GOTO BRZDA2 ;POKUD JE VYSLEDEK 0,TOTO PRESKOC, JINAK SE VRAT NA BRZDA1
DECFSZ SM_AD2,F ;ODECTI 1 OD CISLA V PAMETI SM_AD2
GOTO BRZDA2 ;POKUD JE VYSLEDEK 0,TOTO PRESKOC, JINAK SE VRAT NA BRZDA1
RETURN
;******************************************************[/code]
administrator: příspěvek byl upraven