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 

bascom procedure

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


Pridružen/-a: Ned Apr 2005 13:50
Prispevkov: 48

PrispevekObjavljeno: Čet Jun 16, 2005 2:02 pm    Naslov sporočila: bascom procedure Odgovori s citatom

Pozdrav, vec duze vrijeme programiram u delphi-u i sad kad vidim bascom cini mi se nefunkcionalnim. Problem je u tome sto neznam kako bih pozvao potprogram (subrutine), u helpu pise ovako, ali to nije tocno sto meni treba:


Dim A As Byte , Bb As Byte
Declare Sub Test(bb As Byte)
A = 65
Call Test(a) 'call test with parameter A
Test A 'alternative call
End

Sub Test(bb As Byte) 'use the same variable as the declared one
Lcd Bb 'put it on the LCD
Lowerline
Lcd Bcd(bb)
End Sub


.. ja bih to sto trebam u delphi-u napisao ovako:


.
.
.
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure program(a,b,c: integer); // naprimjer neka je ovo neka procedura koja ce paliti i gastiti dc motore..
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.program(a,b,c:integer);
begin
... // neki program
end;

.. ja ovu proceduru mogu pozvati u bilo kojem momentu!

// sta meni zapravo nije jasno kod basoma je kako da iz neke druge procedure, moze biti i do-loop petlja skocim na subrutine (nesto sa declare sub.. kako sam procitao i vratim se nazad kad je obavljeno

end.




primjer sta meni treba:

Call Motor_p(10 , 10 , 0)

Sub Motor_p(broj_koraka As Integer , Brzina As Integer , Lijevo As Bit)

.
.
.
end sub
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Profesionalec


Pridružen/-a: Tor Jan 2004 16:44
Prispevkov: 181
Kraj: Mozirje

PrispevekObjavljeno: Čet Jun 16, 2005 2:34 pm    Naslov sporočila: Odgovori s citatom

na začetku moraš deklarirat vsako rutino

declare Sub Motor_p(broj_koraka As Integer , Brzina As Integer , Lijevo As Bit)

vmes jo kličeš z
Call Motor_p(10 , 10 , 0)

nekje v kodi imaš pa še program definiran za rutino
Sub Motor_p(broj_koraka As Integer , Brzina As Integer , Lijevo As Bit)
..
..koda
..
end sub

_________________
Bad things happen to good people all the time for no reason!
Štrom: http://www.red-mamba.com & http://www.red-mamba.biz
Prosti čas: http://www.maddogs-clan.org
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Vlado
Profesionalec


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

PrispevekObjavljeno: Čet Jun 16, 2005 6:15 pm    Naslov sporočila: bascom Odgovori s citatom

Hrvoje!
V help-u Bascom-a poglej ukaze "GOSUB , GOTO"

Vlado
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jun 17, 2005 7:11 am    Naslov sporočila: Bascom je basic in ne nek višji programski jezik. Odgovori s citatom

Bascom je basic in ne nek višji programski jezik.

Pozna sicer gosub in call ukaze in podobno, a ne naredi tistega, kar ti ukazi narede v višjem programskem jeziku - ne narede substitucijo spremneljivk.
Če imaš recimo podprogram s tremi spremenljivkami
rutina ( x,y,z)

je ne moreš na različnih mestih klicati recimo

call rutina (a,b,c)

in na nekem drugem mestu v programu uporabiti isto rutino z

call rutina (d,e,f)

kar v višjih jezikih seveda gre.

vilko

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
bsuhel
Profesionalec


Pridružen/-a: Sre Jun 2004 9:49
Prispevkov: 68
Kraj: Laško

PrispevekObjavljeno: Pon Jan 16, 2006 9:34 pm    Naslov sporočila: Re: Tule se pa ne strinjam s tabo Odgovori s citatom

Omenjena substitucija v Bascomu seveda tudi deluje.

vilko je napisal/a:
Bascom je basic in ne nek višji programski jezik.

Pozna sicer gosub in call ukaze in podobno, a ne naredi tistega, kar ti ukazi narede v višjem programskem jeziku - ne narede substitucijo spremneljivk.
Če imaš recimo podprogram s tremi spremenljivkami
rutina ( x,y,z)

je ne moreš na različnih mestih klicati recimo

call rutina (a,b,c)

in na nekem drugem mestu v programu uporabiti isto rutino z

call rutina (d,e,f)

kar v višjih jezikih seveda gre.

vilko
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Tor Jan 17, 2006 1:30 pm    Naslov sporočila: Recimo, da imav prav vsak pol! Odgovori s citatom

Recimo, da imav prav vsak pol!

V dokaz sem na mojem BASCOM8051 (prav lahko, da je AVR boljši) naredil programček.

Deklariral sem sremenljivke in funkcijo:

Koda:
Dim Aa As Byte
Dim Ab As Byte
Dim Ac As Byte
Dim Xa As Byte
Dim Xb As Byte
Dim Xc As Byte

Declare Sub Sestej(xa As Byte , Xb As Byte , Xc As Byte )




Funkcija je preprosta, c = a + b:

Koda:
Sub Sestej(xa As Byte , Xb As Byte , Xc As Byte )
   Xc = Xa + Xb
End Sub


Spremenljivkam sem dal vrednosti in jih izpisal pred in po klicu funkcije:

Koda:
Aa = 21
Ab = 22
Ac = 23
Xa = 31
Xb = 32
Xc = 33


Print "Aji " ; Aa ; " " ; Ab ; " " ; Ac
Print "xI  " ; Xa ; " " ; Xb ; " " ; Xc
Print

Call Sestej(aa , Ab , Ac)

Print "Aji " ; Aa ; " " ; Ab ; " " ; Ac
Print "xI  " ; Xa ; " " ; Xb ; " " ; Xc
Print

End


Prevedel in pognal simulator.
Na njem sem dobil kar je videti v prilogi snap.jpg
( - zaradi posebnosti tega foruma je priloga preimenovana v snap.pdf, kajti samo .pdf priponke so dovoljene na tem forumu. Ko si jo pretocite k sebi seveda preimenujte snap.pdf nazaj v snap.jpg in si jo potem oglejte.)

No, pa da ne bo težav bom kar prepisal, kar sem dobil:

Citiram:
Aji 21 22 23
Xi 31 32 33 (to je pred klicem funkcije) in potem

Aj 21 22 23 (torej nobene spremembe !!)
Xi 21 22 43

kar pomeni, da so sicer xi prevzeli vrednosti od glavnega programa,
niso jo pa na koncu programa dali nazaj glavnemu progamu.

Tretju Aj bi moral biti 43!

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
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