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 09 05, 23:58. Visos datos yra GMT + 2 valandos.
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
mokinaus kazkada php bet ji atsibodo ir mikrokontroleriu su ja nepaprogramuosi. tai gal voju reiktu ant ko kito pereiti. taigi kas butu lengviausia arba geriausia mokytis?
apie C kalba aprasymu turbut ir indenu kalba rastum. bet daugiausia zinoma angliskai viskas kas geriausia.
siaip tai mokutis galima ir ant PC kompiliuojant, c kalba tinka betkam, galima programa parasyti savo staliniam kompiuteriui ir paskui ja paleisti ant atmega16 procesoriaus.
c++ tai neverta naudoti, ten visi tie papildymai neturi vertes kai programos mazos. C kalba tai beveik tas pats kas asambleris o C++ tai jau aukstesnio lygio kalba, ji tinka kai programos super dideles.
dar mikorosoftas sugalvojo pazengti dar toliau ir padare C# tai kiek supratau ten beveik jau beisikas, ant 2ghz procesoriaus veikia kaip ant 20mhz.
Reikėtų pradėt mokytis būtent nuo ASM, nes:
1. To net negalėčiau pavadinti kažkokia atskira kalba. Visa sintaksė labai aiškiai pateikta mikrovaldiklio datašyte.
2. Pradėdamas nuo ASM tu suprasi kaip veikia procesorius, kaip dirbama su atminti ir t.t.
3. Visiškai nemokant C nuo jo pradėti nesiūlyčiau, nes yra gan daug sintaksės niuansų, kurių ASM iš vis nėra.
Kalbos pasirinkimas labai priklauso nuo mikrovaldiklio. PIC ir AVR - ASM. ARM - C. Ir tai ARM kode dažnai tenka įterpti ASM gabaliukus, kad užtikrinti reikiamą veikimo spartą. Pradėjęs nuo C to padaryti negalėsi, nes tiesiog nežinosi kaip, net neįsivaizduosi kaip realiai procesoriuje vyksta aritmetiniai veiksmai, kur atmintyje guli kintamieji ir panašiai.
Pats pradėjau nuo ASM ir niekada nesigailėsiu. Išmokau gal per porą dienų. C nuo nulio per tokį laiką tikrai neišmoktum.
Tai niekam ir nereikia to asamblerio moketi, as kazkada naudojau pic ir asambleri, dabar gailiuosi, paskui nuspirkau AVR, ir padariau pirma programa isvis net datasheeto neskaites. iki dabar nezinau daugelio jos asamblerio komandu ir jos man visai nerupi. (zinoma programu optimizavimui kelias ismokau)
kam rupi kur kokie kintamieji sudeti atmintyje sudeti? byent tai ir yra pagrindinis C parivalumas kad naudoji nors 32 bit kintamuosius ir net nesirupini visa ta aritometika. o su asamblerio bet kokiam naujokui ir profesionalui bus labai sunku net 16bitu kintamuosius panaudoti.
C sintakse labai elementari, daug paprastesne uz paskalio, kiekvienos eilutes gale reikia ";" visa kita elementaru
C daug lengvesne uz asambleri, be to jei nori C kalba be problemu ir asambleri sukompiluos. uz tai nereikes vargti kazkokiams niekasi kaip kintamuju skirstymu po atminti
OK, jei tu kažkiek moki php, gal tau ir lengviau bus nuo C - tavo teisė rinktis.
Digix, jei tu taip sakai, kad ASM žinios nereikalingos ir visiškai dzin kas ten kur vyksta, tai prašau pasakyk trumpiausią kelią su C tokiam darbui atlikti:
Yra unsigned int kintamasis (du baitai), reikia išgauti abu baitus (unsigned char) atskirai. Kaip tai padarysi su C ir kiek tam reikės procesoriaus ciklų? Su ASM - dviejų.
OK, jei tu kažkiek moki php, gal tau ir lengviau bus nuo C - tavo teisė rinktis.
Digix, jei tu taip sakai, kad ASM žinios nereikalingos ir visiškai dzin kas ten kur vyksta, tai prašau pasakyk trumpiausią kelią su C tokiam darbui atlikti:
Yra unsigned int kintamasis (du baitai), reikia išgauti abu baitus (unsigned char) atskirai. Kaip tai padarysi su C ir kiek tam reikės procesoriaus ciklų? Su ASM - dviejų.
nekarta ta teko daryti, bet tiklaii neatsimenu. klausimas gana keistas, nes int kintamasis jsu yra is 2 baitu todel jokiu komandu atlikineti jo padalinimui nereikia.
padalinsime kintamji z
char *x[2]
x= &z
viena puse yra *x[0]
kita puse *x[1]
jei reikia didesnio greicio galima tai optimizuoti, arba nurodyti kompiliatoriuo kintamuosius uzdeti viena ant kito i ta pacia atminties vieta.
bet toks pagretinimas mazina programos suderinamuma.
jei nera kur skubeti tai geraisu daryti normaliai