www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

bascom - funkcije, subrutine

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Sre Avg 04, 2010 10:31 am    Naslov sporočila:  bascom - funkcije, subrutine Odgovori s citatom

Pozdravljeni, po enem letu sem se znova podal v programiranje AVR-jev v programu bascom.

Naletel sem na eno težavo, ki mi nikakor ni logična.

program:

dim a as bit
dim result as integer
declare function test(byval j as bit) as integer

reset a
'a = 1

print a
result = test(a)


function test(byval j as bit) as integer
test = 0
end function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

sporočilo napake je, "bit index out of range for supplied data type [1]"

Kako je lahko bit index izven območja? Printa ga lahko, nevem zakaj ga ne more podati kot argument, vse normalno funkcionira če dam namesto bit byte. Enako napako dobim, če uporabim sub (subrutiono) namesto function.

Hvala, LP

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jernej Š.
Član
Član



Pridružen-a: Pon 25 Jun 2007 23:33
Prispevkov: 83
Aktiv.: 0.38
Kraj: Primorska

PrispevekObjavljeno: Sre Avg 04, 2010 7:52 pm    Naslov sporočila:   Odgovori s citatom

Živjo!

Bacom mi je sicer španska vas, a vseeno mi pri tvoji kodi nekaj stvari ni jasnih. Če prav razumem, napako javi v funkciji test(). Ampak tvoja funkcija sploh ne uporablja argumenta ...

No, kakorkoli že - podatkovni tip bit ni smiseln v primerih, kot je tvoj. V AVR mikrokontrolerju se parametri prenašajo v enotah byte, zato s tipom bita ne pridobiš prav nič. Uporabi byte in problem je rešen.

Bit je večinoma uporaben le pri barnju/pisanju na 1 pin mikrokontrolerja ali morda pri kakem registru za konfiguriranje periferne enote. Povsod drugod se ga izogibaj.


Lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Sre Avg 04, 2010 10:47 pm    Naslov sporočila:   Odgovori s citatom

Zdravo, hvala za odgovor. Ja dal sem byte pa dela.

To sem dal le primer, ker celoten program je kar dolg. Napaka se pojavi v tej vrstici, ko pokličem funkcijo:
result = test(a)
funkcija ima argument a.
Zakaj bi imel bit - za branje enega pina (ali je stikalo sklenjeno ali ne), saj ima lahko le vrednost 0 in 1. Dela tudi z byte seveda, ampak se mi ga zdi malo škoda Smile

Sej jezik kot jezik se mi zdi še malo čuden, ker lahko kar gleda tudi globalne spremenljivke, ne da bi mu eksplicitno povedal, ter ne loči razlike med velikimi in malimi črkami, vendar se ga bom navadil, pravzaprav pred letom dni nisem znal še veliko programirati, zdaj znam pa malo več, sem pa o sami arhitekturi procesorja pozabil Smile (migracija elektro - računalništvo)

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 17.03
Kraj: Črnuče

PrispevekObjavljeno: Sre Avg 04, 2010 10:52 pm    Naslov sporočila:   Odgovori s citatom

Glede na to da ima procesor (verjetno) 8 bitne registre je tvoj pomislek odveč.
_________________
If at first you don't succeed, destroy all evidence that you tried.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
smatjaz
Član
Član



Pridružen-a: Pon 10 Nov 2003 16:33
Prispevkov: 846
Aktiv.: 3.57

PrispevekObjavljeno: Čet Avg 05, 2010 7:24 am    Naslov sporočila:   Odgovori s citatom

Za začetek spremeni:

declare function test(byval j as bit) as integer

v declare function test(byval j as byte) as integer

LP M.

_________________
Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jernej Š.
Član
Član



Pridružen-a: Pon 25 Jun 2007 23:33
Prispevkov: 83
Aktiv.: 0.38
Kraj: Primorska

PrispevekObjavljeno: Čet Avg 05, 2010 9:16 am    Naslov sporočila:   Odgovori s citatom

Živjo!

englishman je napisal/a:
Zdravo, hvala za odgovor. Ja dal sem byte pa dela.

Zakaj bi imel bit - za branje enega pina (ali je stikalo sklenjeno ali ne), saj ima lahko le vrednost 0 in 1. Dela tudi z byte seveda, ampak se mi ga zdi malo škoda Smile



Tudi če bi uporabil bit (in če to prevajalnik dopusti), bo generirana koda še vedno uporabila cel bajt. Preprosto zato, ker procesor ne zna delati s spremenljivkami, manjšimi od 8 bitov. Prepričan sem, da danes ni procesorja, ki bi znal delati s spremenljivkami velikosti 1 bit. Torej kar brez strahu - tako ne boš privarčeval prav nič.

Če te skrbi prostor, lahko softversko urediš, da imaš v enem bajtu spravljenih do 8 t. i. zastavic ("flags"). Te lahko uporabljaš kot statusne bite pri raznih pogojnih stavkih ali kaj podobnega. Vendar še vedno bo register zastavic velik vsaj 8 bitov, branje in pisanje zastavic pa moraš sam implementirati z logičnimi AND/OR funkcijami.


Lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
milan62
Član
Član



Pridružen-a: Ned 04 Jan 2004 23:19
Prispevkov: 2391
Aktiv.: 10.09
Kraj: Kranj

PrispevekObjavljeno: Čet Avg 05, 2010 9:27 am    Naslov sporočila:   Odgovori s citatom

Jernej Š. je napisal/a:
Prepričan sem, da danes ni procesorja, ki bi znal delati s spremenljivkami velikosti 1 bit.


Živiš v zmoti !


LP

_________________
Wasting time online since 1999
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jernej Š.
Član
Član



Pridružen-a: Pon 25 Jun 2007 23:33
Prispevkov: 83
Aktiv.: 0.38
Kraj: Primorska

PrispevekObjavljeno: Čet Avg 05, 2010 9:29 am    Naslov sporočila:   Odgovori s citatom

mi747 je napisal/a:
Jernej Š. je napisal/a:
Prepričan sem, da danes ni procesorja, ki bi znal delati s spremenljivkami velikosti 1 bit.




Možno ... vsega se ne da vedeti Wink. Kateri procesorji pa so to?


Lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Čet Avg 05, 2010 10:09 am    Naslov sporočila:   Odgovori s citatom

Ok, hvala za odgovore, torej je najmanjša dolžina, ki jo lahko uporabim byte.
_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
milan62
Član
Član



Pridružen-a: Ned 04 Jan 2004 23:19
Prispevkov: 2391
Aktiv.: 10.09
Kraj: Kranj

PrispevekObjavljeno: Čet Avg 05, 2010 12:14 pm    Naslov sporočila:   Odgovori s citatom

Odgovor za Jerneja:

npr.: Intel 8051 in vsi njegovi kasnejši derivati

iz Wikipedie:
A particularly useful feature of the 8051 core is the inclusion of a boolean processing engine which allows bit-level boolean logic operations to be carried out directly and efficiently on internal registers and RAM.

LP

_________________
Wasting time online since 1999
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jernej Š.
Član
Član



Pridružen-a: Pon 25 Jun 2007 23:33
Prispevkov: 83
Aktiv.: 0.38
Kraj: Primorska

PrispevekObjavljeno: Čet Avg 05, 2010 6:32 pm    Naslov sporočila:   Odgovori s citatom

Za mi747:

Aha, pa res ima 8051 direktno naslavljanje bitov. Sicer le na tistih 200 pa nekaj bitih, a ima ga Laughing. Hvala za informacijo!


Lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Čet Sep 09, 2010 1:39 pm    Naslov sporočila:   Odgovori s citatom

Tukaj sem dobil točen odgovor na moje vprašanje:

Type of the variable(s) and of the result. Byte,Word, Integer, Long, Single or String. Bits are not supported.

help resnično pomaga Smile

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni č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
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group