|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Sob Nov 22, 2014 12:58 pm Naslov sporočila: ne znam |
|
|
pri izvajanju programa se zmeraj začne in zaključi v tem delu programa-prosim za pomoč:
If Ta > 8 Then
End If
If T > 33 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 15 Then
P3.4 = 1
Reset Minute
End If
drugega stolpca ne upošteva :
If Ta <8> 36 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 15 Then
P3.4 = 1
Reset Minute
End If
to je celotni program:
$large
Declare Sub Read1820
Declare Sub Temperature
Declare Sub Srno1
Declare Sub Srno2
Dim T2 As Integer , T4 As Integer
Dim Bd(9) As Byte
Dim I As Integer ,
Dim T As Integer , T1 As Integer , Voda As Byte , Zrak As Byte , Ta As Byte
Dim Clock As Byte , Clock1 As Byte
Dim Sekunde As Byte , Minute As Byte , Minute1 As Byte , Ure As Byte , Tmp As Byte
Dim Ar(8) As Byte
Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Timer_0_int
Load Timer0 , 250
Priority Set Timer0
Enable Interrupts
Enable Timer0
Config Lcd = 16 * 2
Config 1wire = P3.0
Cursor Off Noblink
Cls
Clock = 0
Clock1 = 0
Sekunde = 0
Minute = 0
Ure = 0
Start Timer0
If Sekunde > 59 Then
Incr Minute
Sekunde = 0
End If
Do
Srno1
Temperature
Locate 1 , 1 : Lcd "dvizni vod "
Voda = T4
Lcd T
Lcd Chr(46)
Lcd T1
T = Voda
If Ta > 8 Then
End If
If T > 33 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 15 Then
P3.4 = 1
Reset Minute
End If
If Ta <8> 36 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 15 Then
P3.4 = 1
Reset Minute
End If
Srno2
Temperature
Locate 2 , 1 : Lcd "zunanja t "
Zrak = T4
Lcd Ta
Lcd Chr(46)
Lcd T1
'--------------------------------------------------------------------
Loop
End
'----------------------------------------------------------------------------------
Rem ////////////////////////////////////////////////////////////////////////////
' read address 1
Sub Srno1
For I = 0 To 7
Ar(i) = Lookup(i , Dta1)
Next
End Sub
Rem /////////////////////////
' read address 2
Sub Srno2 'branje adrese 1
For I = 0 To 7
Ar(i) = Lookup(i , Dta2)
Next
End Sub
Rem /////////////////////////
Dta1:
Data 16 , 148 , 162 , 208 , 1 , 8 , 0 , 250
Dta2:
Data 16 , 73 , 76 , 180 , 1 , 8 , 0 , 146
'----------------------------------------------------------------------
Sub Temperature 'merjenje temperature
1wreset
1wwrite &H55
1wwrite Ar(0) , 8 '1Wire ukaz
1wwrite &H44
Waitms 255
Waitms 255
Waitms 250
Read1820 'read 9 bytes
End Sub
Sub Read1820
Stop Timer0 'bere senzor 'T za 0.1 C
1wreset 'reset
1wwrite &H55 '1Wire ukaz
1wwrite Ar(0) , 8
1wwrite &HBE
Bd(1) = 1wread(9)
1wreset
Start Timer0
Tmp = Bd(1) And 1 '0.1C natancnost
If Tmp = 1 Then
Decr Bd(1)
End If
T = Makeint(bd(1) , Bd(2))
T4 = T / 2 'T4 lahko uporabimo, ce zelimo temp. kot celo stevilo
T = T * 50 : T = T - 25 : T1 = Bd(8) - Bd(7) : T1 = T1 * 100
T1 = T1 / Bd(8) : T = T + T1 : T = T / 10
T1 = T
T = T / 10
T2 = T * 10
T1 = T1 - T2
T1 = Abs(t1)
End Sub
'//////////////////////////////////////////////////////////////////////////////
Timer_0_int:
Incr Clock
If Clock > 99 Then
Clock = 0
Incr Clock1
End If
If Clock1 > 39 Then
Clock1 = 0
Incr Sekunde
End If
Return
'----------------------------------------- |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Sob Nov 22, 2014 2:41 pm Naslov sporočila: |
|
|
If Ta <8> 36 Then
tu je napaka je manj kot 8 brez 36 -pozabil sem kako se pripne original program
End If
Set Minute
vmes manjka
if t>36 then
ali moram uporabiti podprograme (gosub) |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Sob Nov 22, 2014 11:14 pm Naslov sporočila: |
|
|
Ata,
sem tvoj program dal v Bascom se vidi, da ti manjka nekaj dvopilčij za oznako subrutin.
Recimo v vrstici 64 in 65 je tole:
Srno1
Temperature
brez npr gosub Srno1 je že "sumljivo".
CPU ni definiran na začetku programa.
Set Minute ukaz je nenavaden, saj je spremenljivka Minute byte. Set ukaz deluje na Bitnih spremenljivki
Ta ukaz se mi zdi nenavaden: If Ta <8> 36 Then
Moral bi napisati: If Ta <8 or if Ta> 36 Then
Predlagam, da program simuliraš in si ogledaš, kako program deluje/skače iz vrsice v vrstico,
Lp
Jure |
|
Nazaj na vrh |
|
|
igo Profesionalec
Pridružen/-a: Sre Okt 2006 17:57 Prispevkov: 85 Kraj: Krško
|
Objavljeno: Pet Nov 28, 2014 1:40 pm Naslov sporočila: |
|
|
Vmesnik za vpisovanje besedila si nekatera zaporedja znakov razlaga precej po svoje, tudi pri citiranju (Quote) ali pripetju kode (Code).
Če iz : in ) nastane smeško , je še najmanjši problem. Včasih del besedila kar izgine, ali povsem spremeni obliko.
In potem tudi pravilen program deluje čudno.
Najbolje, da cel program priložiš v .txt priponki.
Koda: |
Do
Srno1
Temperature
Locate 1 , 1 : Lcd "dvizni vod "
Voda = T4
Lcd T
Lcd Chr(46)
Lcd T1
T = Voda
If Ta > 8 Then ' Then what ??? Torej, kaj potem??? Pred End If manjka vsaj ena vrstica.
End If
If T > 33 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 15 Then
P3.4 = 1
Reset Minute
End If
If Ta <8> 36 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 15 Then
P3.4 = 1
Reset Minute
End If
Srno2
Temperature
Locate 2 , 1 : Lcd "zunanja t "
Zrak = T4
Lcd Ta
Lcd Chr(46)
Lcd T1
'--------------------------------------------------------------------
Loop
End
|
Kaj naredi ukaz "set Minute" ali "reset Minute" z 8-bitno (byte) spremenljivko "Minute"?
In kako se rezultat primerja z 8, 15 in 36? _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001) |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Sob Nov 29, 2014 10:48 am Naslov sporočila: |
|
|
ta del se izvaja če je pa tz manjša ali večja pa ne-program zmeraj uporabi prvi stolpec
If Tz > 11 Then
End If
If Tn > 34 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 6 Then
P3.4 = 1
Reset Minute
End If
če je tz manjša tn pa večja pa nr
$large
Declare Sub Read1820
Declare Sub Temperature
Declare Sub Srno1
Declare Sub Srno2
Dim T2 As Integer , T4 As Integer
Dim Bd(9) As Byte
Dim I As Integer ,
Dim T As Integer , T1 As Integer , Tz As Byte , Tn As Byte
Dim Clock As Byte , Clock1 As Byte
Dim Sekunde As Byte , Minute As Byte , Minute1 As Byte , Ure As Byte , Tmp As Byte
Dim Ar(8) As Byte
Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Timer_0_int
Load Timer0 , 250
Priority Set Timer0
Enable Interrupts
Enable Timer0
Config Lcd = 16 * 2
Config 1wire = P3.0
Cursor Off Noblink
Cls
Clock = 0
Clock1 = 0
Sekunde = 0
Minute = 0
Ure = 0
Do
Start Timer0
If Sekunde > 59 Then
Incr Minute
Sekunde = 0
End If
Srno1
Temperature
Locate 1 , 1 : Lcd "dvizni vod "
Tn = T4
Lcd T
Lcd Chr(46)
Lcd T1
Srno2
Temperature
Locate 2 , 1 : Lcd "zunanja t "
Tz = T4
Lcd T
Lcd Chr(46)
Lcd T1
'--------------------------------------------------------------------
If Tz > 11 Then
End If
If Tn > 34 Then
P3.4 = 0
Minute = 0
End If
Set Minute
If Minute > 6 Then
P3.4 = 1
Reset Minute
End If
'spodnji stolpec je tak kot zgornji samo tz in tn sta drugačni
If Tz <7> 37 Then
P3.4 = 0
Minute = 0 napaka
End If
Set Minute
If Minute > 6 Then
P3.4 = 1
Reset Minute
End If
Loop
End
'----------------------------------------------------------------------------------
Rem ////////////////////////////////////////////////////////////////////////////
' read address 1
Sub Srno1
For I = 0 To 7
Ar(i) = Lookup(i , Dta1)
Next
End Sub
Rem /////////////////////////
' read address 2
Sub Srno2 'branje adrese 1
For I = 0 To 7
Ar(i) = Lookup(i , Dta2)
Next
End Sub
Rem /////////////////////////
Rem /////////////////////////
Dta1:
Data 16 , 148 , 162 , 208 , 1 , 8 , 0 , 250
Dta2: 'naslov 1 Dallasa
Data 16 , 73 , 76 , 180 , 1 , 8 , 0 , 146
'----------------------------------------------------------------------
Sub Temperature 'merjenje temperature
1wreset
1wwrite &H55
1wwrite Ar(0) , 8 '1Wire ukaz
1wwrite &H44
Waitms 255
Waitms 255
Waitms 250
Read1820 'read 9 bytes
End Sub
Sub Read1820
Stop Timer0 'bere senzor 'T za 0.1 C
1wreset 'reset
1wwrite &H55 '1Wire ukaz
1wwrite Ar(0) , 8
1wwrite &HBE
Bd(1) = 1wread(9)
1wreset
Start Timer0
Tmp = Bd(1) And 1 '0.1C natancnost
If Tmp = 1 Then
Decr Bd(1)
End If
T = Makeint(bd(1) , Bd(2))
T4 = T / 2 'T4 lahko uporabimo, ce zelimo temp. kot celo stevilo
T = T * 50 : T = T - 25 : T1 = Bd(8) - Bd(7) : T1 = T1 * 100
T1 = T1 / Bd(8) : T = T + T1 : T = T / 10
T1 = T
T = T / 10
T2 = T * 10
T1 = T1 - T2
T1 = Abs(t1)
End Sub
'//////////////////////////////////////////////////////////////////////////////
Timer_0_int:
Incr Clock
If Clock > 99 Then
Clock = 0
Incr Clock1
End If
If Clock1 > 39 Then
Clock1 = 0
Incr Sekunde
End If
Return
'----------------------------------------- |
|
Nazaj na vrh |
|
|
igo Profesionalec
Pridružen/-a: Sre Okt 2006 17:57 Prispevkov: 85 Kraj: Krško
|
Objavljeno: Sob Nov 29, 2014 3:39 pm Naslov sporočila: |
|
|
Koda: | If Tz > 11 Then
' Še vedno trdim, da tukaj nekaj manjka !!!
End If
| Ne more biti kar If /pogoj/ Then /-prazno-/ End If.
In kako je z VELIKIMI/malimi črkami? Koda: | For I = 0 To 7
Ar(i) = Lookup(i , Dta1)
Next
| Je vseeno, če je "I" ali "i" ?
Program pripni na forum kot priponko - pod oknom za vnos besedila je gumbek [Add an Attachment ]. Če forum ne dovoli pripeti .bas končnice, shrani končnico v .txt (odpri original datoteko z Beležnico, jo shrani na Namizje in nato pripni sem). _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001) |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Ned Nov 30, 2014 7:18 pm Naslov sporočila: |
|
|
na noben način ne morem pripeti pravilnega programa |
|
Nazaj na vrh |
|
|
igo Profesionalec
Pridružen/-a: Sre Okt 2006 17:57 Prispevkov: 85 Kraj: Krško
|
Objavljeno: Pon Dec 01, 2014 1:17 pm Naslov sporočila: |
|
|
Namizje
DesniMisGumb
Nov dokument z besedilom
- ga odpreš
- odpreš še datoteko s tvojim programom
- označiš vse (Ctrl + a)
- kopiraš (Ctrl + c)
- vstaviš v Beležnico (Ctrl + v)
- shraniš (Ctrl + c)
- nato odpreš odgovor na to temo
- pod oknom za vnos besedila klikni gumb [Add an Attachment] za dodajanje priponk
- pobrskaš [Browse] do priponke in jo dodaš
- v okno z besedilom dodaš , ker forum ne dovoli oddajanja sporočila samo s priponko
- oddaš
Brez celega programa je nemogoče najti napako. _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001) |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Pon Dec 01, 2014 9:14 pm Naslov sporočila: |
|
|
Igo je napisal:
Citiram: | Je vseeno, če je "I" ali "i" ? |
ja čisto vseeno je.
Ata,
Kaj naj bi naredil ta ukaz:
If Ta <8> 36 Then
IF Ta<8 or Ta>36 then ' bi mogoče bilo pravilno
Tako dolgega programa ne bo nobeden analiziral. Sam tako dolge programe testiram po delih, ali jih pišem kot include fajle.
LP |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Tor Dec 02, 2014 8:27 am Naslov sporočila: |
|
|
Ata,
na moj mail mi pošlji program, da ga bom jaz prilepil na forum.
Piši na stik@svet-el.si
Lp
Jure |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Tor Dec 02, 2014 10:24 am Naslov sporočila: |
|
|
Če v programu ni definiran procesor, (je definiran v Bascom-u), dodaj še podatke o procesorju. |
|
Nazaj na vrh |
|
|
ata Profesionalec
Pridružen/-a: Pon Apr 2004 9:26 Prispevkov: 110
|
Objavljeno: Tor Dec 02, 2014 4:26 pm Naslov sporočila: |
|
|
Jure hvala-14dni nimam kaj dosti časa-ko bom naredil bom sporočil na forum |
|
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 You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|