Elektronika.lt
 2025 m. liepos 18 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 07 18, 13:43. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » CodevisionAVR funkcija
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 17:09 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Prireikė man programoje pamatyti baitą atskirais bitais. Atrodytų, užduotis visai paprasta, tačiau... Štai funkcija, kuri gauna baitą ir grąžina 8 bitus. Veikia keistai. Pabandžius paduoti paeiliui kelis baitus paaiškėja, kad pirmų keturių rezultatas teisingas, toliau prasideda nesąmonės. Rezultate gaunu bet ką, tik ne tai, ką turėčiau gauti. Dar po keletos baitų - vėl rezultatas teisingas. Kame klaida? Įtariu čia su pointeriais kažkas ne taip, bet kas - neįsikertu.

char * byte_to_bin(char x)
{
char n, *binstr;
for(n=0; n<8; n++) {
if((x & 0x80) !=0)
binstr[n]='1';
else
binstr[n]='0';
x<<=1;
}
return binstr;
}
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 17:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
O negeriau butu is anksto susikurt apibresto dydzio masyva ir perduot rodykle i ji? char * byte_to_bin(char x) tai isvis nelabai supratau kam ta rodykle.
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 18:22 Pranešti apie taisyklių pažeidimą Atsakyti su citata
centronic
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kodas:

char binstr[9];
void byte_to_bin(char x){
  char n;
  for(n=0; n<8; n++){
    if((x & 0x80) !=0)
      binstr[n]='1';
    else
      binstr[n]='0';
    x<<=1;
  }
}
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 18:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
centronic rašo:
Kodas:

char binstr[9];
void byte_to_bin(char x){
  char n;
  for(n=0; n<8; n++){
    if((x & 0x80) !=0)
      binstr[n]='1';
    else
      binstr[n]='0';
    x<<=1;
  }
}


Pala... Klausimas koks buvo? Apie funkciją. O tavo kode kur funkcija? Žinoma, taip, kaip tu pasiūlei, veikia, tačiau aš klausiau ne to.

char * byte_to_bin(char x) - kam toks pointeris? Tam, kad C kalboje tik taip funkcija gali grąžinti stringą. Bent jau taip atradau skaitinėdamas aprašymus internete. Taigi, kokie dar būtų pasiūlymai?

Beje, jei pvz. Delphi parašyti tokią funkciją man juokų darbas, tai C pasirodė grynas hemarojus. Smile
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 19:16 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kazka jau maisai, tas pointeris siuo atveju isvis neaisku kaip veikia. Centronic atveju funkcija tai cia void byte_to_bin(char x) Smile
C kalboja tau nieko grazint nereikia, arba darai kaip Centronic dare, arba darai zmoniskai, su masyvo pointerio padavimu funkcijai.
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 21:15 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Centronic parašė procedūrą kuri keičia globalų kintamąjį. Galima ir taip, tačiau čia ne funkcija. Ir matosi, kad išvengė pointerių. Smile Aš irgi jų vengiu, nes iki galo taip ir nesuprantu...
"C kalboje nieko grąžinti nereikia" - įdomi mintis, tačiau gal yra kitų nuomonių? Smile O tai mano nuomonė apie C dar labiau pablogės. Smile

Kaip padaryt masyvo pointerį? C kalboje masyvas irgi toks keistokas dalykas. Ypač jei tai string'as.

Galima klausimą performuluot kitaip. Reikia parašyt normalią funkciją, kuri grąžintų string'ą. Bet kokią.
Sakykim perduodam funkcijai "labas", o ji grąžina "labas rytas". Paprasta?
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 21:28 Pranešti apie taisyklių pažeidimą Atsakyti su citata
centronic
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
greiciausiai kompiliatorius koki s... sumala. Pas mane abi f-jos gerai veikia.
Funkcija char * byte_to_bin(char x) ne stringa grazina, o adresa binstr masyvo. Pvz.: jei tame masyve irasyta "Labas" tai grazins pirmos raides "L" adresa
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 21:35 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
centronic rašo:
greiciausiai kompiliatorius koki s... sumala. Pas mane abi f-jos gerai veikia.
Funkcija char * byte_to_bin(char x) ne stringa grazina, o adresa binstr masyvo. Pvz.: jei tame masyve irasyta "Labas" tai grazins pirmos raides "L" adresa


Taip, ne stringą, o nuorodą į stringo pradžią. Visiškai teisingai. Bet, kiek aš žinau, kitaip stringo gauti neišeina?
Man atrodo, kad ta funkcija teisinga, bet veikia, kažkodėl, ne visada teisingai.
Vienas iš variantų, kad kompiliatorius š... mala. Gali būt.
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 21:40 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
C kalboj tokiu dalyku kaip proceduros nelabai ir yra, cia ne paskalis ar delfi. O parasytos normalios funkcijos.

Kodas:

char binstr[9];

void byte_to_bin(char x, char *bin){
  char n;
  for(n=0; n<8; n++){
    if((x & 0x80) !=0)
      bin[n]='1';
    else
      bin[n]='0';
    x<<=1;
  }
}

byte_to_bin(x, binstr)
 
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 21, 21:48 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Va čia jau panašu... Kažkaip nepagalvojau apie tokį variantą.
Visgi kiek aš susipažinęs su C, ten funkcijos yra. Turiu omenyje tokias kur rezultatas gaunamas taip:
x=kazkokiafunkcija(y);
Procedūra tas pats, tik jokio rezultato negrąžina:
void kazkokiaprocedura(y);
Gali ir neperduoti nieko:
void kazkokiaprocedura (void);
Lyg tai taip, bet galiu ir klysti, C nelabai mėgstu. Smile
 Re: CodevisionAVR funkcija
PranešimasParašytas: 2010 02 27, 22:31 Pranešti apie taisyklių pažeidimą Atsakyti su citata
p12
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
ReM rašo:
Prireikė man programoje pamatyti baitą atskirais bitais. Atrodytų, užduotis visai paprasta, tačiau... Štai funkcija, kuri gauna baitą ir grąžina 8 bitus. Veikia keistai. Pabandžius paduoti paeiliui kelis baitus paaiškėja, kad pirmų keturių rezultatas teisingas, toliau prasideda nesąmonės. Rezultate gaunu bet ką, tik ne tai, ką turėčiau gauti. Dar po keletos baitų - vėl rezultatas teisingas. Kame klaida? Įtariu čia su pointeriais kažkas ne taip, bet kas - neįsikertu.
Kodas:

char * byte_to_bin(char x)
{
  char n, *binstr;
   for(n=0; n<8; n++) {
      if((x & 0x80) !=0)
        binstr[n]='1';
      else
        binstr[n]='0';
      x<<=1;
   }
   return binstr;
}



tas binstr šitam kode 'rodo' į niekur. T.y. reiktų tik džaiugtis, kad programa išvis veikia nenulūždama.

reiktų daryti taip
Kodas:

char *binstr;
binstr = malloc (9);


kadangi, spėju, rašai mikrokontroleriui, ten malloc kažin ar bus. todėl kiti pasiūlyti variantai kaip
Kodas:

char binstr[9];

void byte_to_bin(char x, char *bin){
  char n;
  for(n=0; n<8; n++){
    if((x & 0x80) !=0)
      bin[n]='1';
    else
      bin[n]='0';
    x<<=1;
  }
}

byte_to_bin(x, binstr) ;


arba
Kodas:

char binstr[9];
void byte_to_bin(char x){
  char n;
  for(n=0; n<8; n++){
    if((x & 0x80) !=0)
      binstr[n]='1';
    else
      binstr[n]='0';
    x<<=1;
  }
}

yra geriau, nes išvengiam pointeriu.
pointeriai mikrokontrolerių programose yra blogis.
nebent ten jau mikroprocesorius.
 CodevisionAVR funkcija
PranešimasParašytas: 2010 02 27, 22:35 Pranešti apie taisyklių pažeidimą Atsakyti su citata
p12
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
beje c iš galimų alternatyvų yra pati geriausia. Geriau yra tik c++, arba, jei svarbu ne programos, o programavimo greitis, python'as
 CodevisionAVR funkcija
PranešimasParašytas: 2010 03 11, 14:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Aiškintis kokia kalba geriausia - neverta. Nebus iš to jokių rezultatų. Kiekvienam savo.

Dar vienas klausimėlis apie C string'us.

Aprašom kintamąjį:
char *ss; arba char ss[], arba char ss[20]. Visi variantai veikia.
Dabar bandom jam priskirti kažkokią eilutę tiesiogiai:
ss="hello world";
Negalima taip pasirodo. Tipų neatitikimas. Bet kokia eilutė kabutėse skaitoma flash char tipu. Kas šiaip jau gal ir logiška. Bet man ją modifikuot reikia. Kintamojo aprašymo metu taip priskirti galima. Pvz.: char *ss="hello world"; Bet vėliau jau negalima. Po vieną simbolį tokiems string'ams priskyrinėt galima.
O man reikia būtent taip: ss="hello world";
Ką daryt? Smile
 CodevisionAVR funkcija
PranešimasParašytas: 2010 03 11, 14:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Tiksliai nepamenu bet taip gal reik.
ss[]="hello world"
 CodevisionAVR funkcija
PranešimasParašytas: 2010 03 11, 14:30 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Ne, taip negalima.
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
VAT calculator
VAT number check, What is VAT, How much is VAT
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Football Training Kit
Football Training Equipment, Football Skills, Football Training
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama