Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

ne znam

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
ata
Profesionalec


Pridružen/-a: Pon Apr 2004 9:26
Prispevkov: 110

PrispevekObjavljeno: Sob Nov 22, 2014 12:58 pm    Naslov sporočila: ne znam Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
ata
Profesionalec


Pridružen/-a: Pon Apr 2004 9:26
Prispevkov: 110

PrispevekObjavljeno: Sob Nov 22, 2014 2:41 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2132
Kraj: Ljubljana

PrispevekObjavljeno: Sob Nov 22, 2014 11:14 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
igo
Profesionalec


Pridružen/-a: Sre Okt 2006 17:57
Prispevkov: 85
Kraj: Krško

PrispevekObjavljeno: Pet Nov 28, 2014 1:40 pm    Naslov sporočila: Odgovori s citatom

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 Smile , 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
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ata
Profesionalec


Pridružen/-a: Pon Apr 2004 9:26
Prispevkov: 110

PrispevekObjavljeno: Sob Nov 29, 2014 10:48 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Profesionalec


Pridružen/-a: Sre Okt 2006 17:57
Prispevkov: 85
Kraj: Krško

PrispevekObjavljeno: Sob Nov 29, 2014 3:39 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ata
Profesionalec


Pridružen/-a: Pon Apr 2004 9:26
Prispevkov: 110

PrispevekObjavljeno: Ned Nov 30, 2014 7:18 pm    Naslov sporočila: Odgovori s citatom

na noben način ne morem pripeti pravilnega programa
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Profesionalec


Pridružen/-a: Sre Okt 2006 17:57
Prispevkov: 85
Kraj: Krško

PrispevekObjavljeno: Pon Dec 01, 2014 1:17 pm    Naslov sporočila: Odgovori s citatom

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š Smile , 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
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Pon Dec 01, 2014 9:14 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2132
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 02, 2014 8:27 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 02, 2014 10:24 am    Naslov sporočila: Odgovori s citatom

Če v programu ni definiran procesor, (je definiran v Bascom-u), dodaj še podatke o procesorju.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
ata
Profesionalec


Pridružen/-a: Pon Apr 2004 9:26
Prispevkov: 110

PrispevekObjavljeno: Tor Dec 02, 2014 4:26 pm    Naslov sporočila: Odgovori s citatom

Jure hvala-14dni nimam kaj dosti časa-ko bom naredil bom sporočil na forum
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski č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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group