Robinzon Kruso
Član broj: 41475 Poruke: 191 82.174.240.*
|
Danas su mi stigle komponente i odmah sam se bacio na posao da proverim...
Sto se tice DS1820 sa njim je sve uredu posto sasvim dobro radi na PIC16F877 i PIC16F877A. Kada isti program ubacim u PIC16F887 dobijem na display-u broj 69 ili 02 koji se ne menja...
Evo programa koji radi na PIC16F877: Da li neko moze da mi kaze sta mi treba da bi ovaj program radio na PIC16F887. Unapred Hvala....
symbol DQ = PORTE.2 ' Dq linija je povez. na pin RE2
temperatura Var Word ' Promen.za cuvanje izmer. temp.
count_remain Var Byte ' Ostatak takta
count_per_c Var Byte ' Takt po stepenu C
ADCON1 = 7 ' PORTA i PORTE su digitalni
Cifra var byte ' Vrednost broja koji se prikazuje
Maska var byte ' Maska broja koji se prikazuje
W var byte ' Pomocna promenljiva
LEDDis1 var PORTA.1 ' Tranzistor cifre jedinica
LEDDis2 var PORTA.0 ' Tranzistor cifre desetica
TRISA=%00000000 ' svi pinovi porta A su izlazni
TRISB=%00000000 ' svi pinovi porta B su izlazni
LEDDis1=0 ' cifra jedinica iskljucena na pocetku
LEDDis2=0
k var byte ' Pomocna promenljiva
Main:
OWOut DQ, 1, [$CC, $44] ' Start merenja temperature
Cekaj: OWIn DQ, 4, [count_remain] ' Provera da li jos traje
GOSUB Prikazi
If count_remain = 0 Then Cekaj
OWOut DQ, 1, [$CC, $BE] ' Procitaj izmerenu temperaturu
OWIn DQ, 0, [temperatura.LOWBYTE, temperatura.HIGHBYTE, Skip 4, count_remain, count_per_c]
temperatura = (((temperatura >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c)
GOSUB Prikazi
Goto Main:
end
Prikazi:
W=temperatura / 100
Cifra=W dig 1 ' Desetice u prom. Cifra
Lookup Cifra,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6f],Maska
PORTB=Maska ' Postavi maski cifre na port B
LEDDis2=1 ' prikazi cifru desetica
pause 1 ' zadrzi prikaz 1 ms
LEDDis2=0 ' iskljuci cifru desetica
Cifra=W dig 0 ' Jedinice u prom. Cifra
Lookup Cifra,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6f],Maska
PORTB=Maska
LEDDis1=1 ' prikazi cifru jedinica
pause 1 ' zadrzi prikaz 1 ms
LEDDis1=0 ' iskljuci cifru jedinica
return
|