OT: Jak moderátor prichazi o nervy (BASCOM BASIC a C++)

Software pro železniční modelářství, simulátory, ovládání, plánování....

Moderátoři: Michal Dalecký, Jarda H.

OT: Jak moderátor prichazi o nervy (BASCOM BASIC a C++)

Příspěvekod belgarat » úte 23 říj, 2018 7:31 am

Edit (doplneno 24.10.2018): VAROVANI: cteni tohoto vlakna muze poskodit vase dusevni zdravi


Obdoceno z tematu "DCC nebo Analog" - viewtopic.php?f=6&t=11653&start=90

zdeno píše:ja programujem v BascomBAsic a je to lepsi nez jakekoliv C, C+ nebo Wiring,
protoze vystupni kod je srozumitelny a hlavne kratsi a rychlejis nez klony jazyka C, ktere si delaji co chteji a jsou vetsinou absolutne neodsledovatelne.
Proste nemam rad vyssi jazyky, ktere nemuzu skontrolovat, co vlastne delaji.


JOHNZ píše:No tak to C a C++ možno až tak dobre neovládaš. [...]

(plne zneni viewtopic.php?f=6&t=11653&p=244065#p244051)

zdeno píše:pekne napisane, hodne rychle si mne odsoudil aj popravil ;-)
ono ne vzdy vyhraje to lepsi a schopnejsi, prikladu z minulosti je spousta napriklad, VHS a Video2000 ;-)
---
proc si myslis, ze to co si opisal na C+, tak nema BascomBasic ?
Naposledy upravil belgarat dne stř 24 říj, 2018 2:31 pm, celkově upraveno 4
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: OT: BASCOM BASIC a C++

Příspěvekod belgarat » úte 23 říj, 2018 7:43 am

Muzeme zacit temi ++ v "C++". Ony jsou tam 2 plusy, ne jedno, jak pise Zdeno ("C+"). Oficialni zduvodneni je, ze jde o operator ++ (post inkrement), tedy o vylepsenou verzi C.

Zle jazyky tvrdi, ze C++ ve skutecnosti ma jen dve poradne zmeny a kazdou z nich reprezentuje jedno "+": jedno jsou sablonove typy a druhe "+" jsou objektove datove typy. Ony jsou i jazyky jako C--, D a podobne ;) ktere maji jine vlastnosti a nazvem si z C/C++ delaji tak trochu legraci.

Ona zminena "+" (ani sablony, ani objekty) BASCOM BASIC nema (viz https://avrhelp.mcselec.com/index.html? ... entals.htm aj.) Zatimco C/C++ se s AVR assemblerem kombinuje docela dobre, jak je videt na knihovnach Arduina. Koncept uzivatelskych knihoven BASCOM BASIC take moc nema.

Naproti tomu BASCOM Basic (jako skoro zadny BASIC) se nezatezuje s blbostmi jako strukturovane typu (struct, union, class), ukazateli (referencemi) atd, ktere uzivatele matou a stejne je nikdo k nicemu nepotrebuje. Pristup do pameti se umoznuje primo (PEEK, POKE), coz je nazorne, a uzivatel to na rozdil od ukazatelove aritmetiky pouzit dokaze.

Jen takove upozorneni: OBA jazyky jsou kompletni, uplne. Neminim tvrdit "c je lepsi", "b je horsi". V BASICu (a koneckoncu i v assembleru) napisu totez, co v C++. Ale troufnu si rict, a za tim si stojim, ze C++ poskytuje nesrovnatelne vetsi komfort - pokud se umi pouzivat. Matlak napacha ve svatem nadseni nad moznym uzasne kratkym zapisem v C spoustu skody, protoze jeho kod je sice kompaktni, ale necitelny. Ale to napacha i v BASICu.

Odbocka: jako mentalni cviceni doporucuji jazyk Brainfuck, idealne v mutaci BrainDuino pro Arduino.
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » úte 23 říj, 2018 8:07 am

nevidim prispevky Belgarat, protoze je mezi ignorovanymi.
---
Kazdy jazyk ma svoje a kazdy ma neco, co ten druhy nema.
Tvrzeni, ze C++ je kratsi a rychlejsi je hoax, ktery sem davaji C++ priznivci, kteri neumeji oba vyssi jazyky.
Jedina rada, vyzkousejte a uvidite.
---
Ja davam prednost srozumitelnosti, prenositelnosti a rychlosti.
Objekty neskutecne zpomaluji beh programu a nic dulezite neprinesou.
Stejne musite perfektne ovladat datasheety daneho procesoru, protoze kazdy procesor je jiny.
Opravdu nejde slepo prenaset program treba z Atmega88 na Tiny25 !!
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod belgarat » úte 23 říj, 2018 8:18 am

zdeno píše:Ja davam prednost srozumitelnosti, prenositelnosti a rychlosti.
Objekty neskutecne zpomaluji beh programu a nic dulezite neprinesou.
Stejne musite perfektne ovladat datasheety daneho procesoru, protoze kazdy procesor je jiny.
Opravdu nejde slepo prenaset program treba z Atmega88 na Tiny25 !!

Zdeno zas matla hrusky s jabkama (to se stava, kdyz chybi zbytecna teorie).

Prenositelnost je prave vyhoda C/C++ ... kde je ten slavny BASCOM BASIC na ne-AVR architekture. Zatimco C/C++ muzu pouzit i na x86 nebo PIC. Ze prizpusobeni KONKRETNIMU hardware vyzaduje prizpusobeni CASTI programu je asi ocividne. Opet C/C++ s preprocesorem poskytuje siroke moznosti jak (napr, vymysleny priklad) read_usart zmenit pro konkretni chip (takze konkretni porty/bity/timery), bez toho aby se tim plevelil zbytek kodu.

Update: Ze "objekty zpomaluji" ... no jo ;) ona ta znovu pouzitelnost neco stoji, minimalne se musi navic pricist ukazatel na zacatek objektu. Ale optimalizer psali lide co tu zbytecnou teorii nejen cetli, ale i tvorili takze v prubehu volani samozrejme zustava "po ruce" v registru. Je to zpomaleni tak razantni ?

Proc by se vlastne objektovy kod mel vubec pouzivat pro neco co je z logiky navrhu jedinecne a jen jedno - to je prave otazka, kterou zacinajici C++ "umelec" preskoci. Pak rika, jak je to pomale, a ma v zasade pravdu. A pokud to "neco" jedinecne neni, mam toho vic kusu, tak co je lepsi: pamatovat si index a hrabat se v nekolika polich na "spravnem indexu", nebo vyuzit moznosti co NEdava BASIC ? Ne, pro kazdy kousek si zadefinuju novou sadu pojmenovanych promennych a rozkopiruju (jinak stejny) kod, ktery s nimi pracuje. (sarkasmus, ale videl jsem to mockrat).

Ve chvili kdy parametry nejake funkce obsahuji 5 pointeru na "callbacky" ... co je lepsi: predat 5x pointer, nebo 1 objekt s virtualnimi metodami ? Ale to se musi vedet jak virtualni metody funguji nebo spis, ze neco takoveho vubec existuje.
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: OT: BASCOM BASIC a C++

Příspěvekod JOHNZ » úte 23 říj, 2018 10:15 am

Zdeno: V DCC fóre som nechcel písať zbytočne programátorské pojmy. Ale teba fakt baví pracovať v jazyku, kde nie je možnosť nijak štruktúrovať dáta? Že keď potrebuješ niečo schovať do SUBky alebo do funkcie, tak si vždy na začiatku musíš ručne nahrabať údaje napr. o výhybke do registrov, potom to nezabudnúť prepísať do pamäte a milión réžie s tým spojenej? No, ako, keď chceš len údaj o jej aktuálnej polohe, tak je to asi fajn. Ale akonáhle sa rozhodneš ísť vyššie, a potrebuješ od výhybky informáciu o požadovanej polohe, o aktuálnej polohe zo spätného hlásenia, o tom či je na výhybke nejaký záver, nedajbože typ toho záveru a cestu od ktorej je výhybka zavretá, tak už si s BASICom tam kde Baťa s drevákmi (niekde najneskôr v tomto momente budem označený za počítača nitov). A keď chceš v štruktúre dát niečo zmeniť, pridávať dáta smieš do tej pamäte len na koniec a len ak si si niekde poznamenal do nejakej direktívy veľkosť pamäte pre jednu výhybku. Niečoho meniť veľkosť božechráň, to už musíš mať v direktívach aj indexy a vždy musíš nechať index počítať preprocesor a upíšeš sa. Keď si načítanie položky a zápis definuješ do SUBky/funkcie, pribudne ti tam réžia lezenia do podprogramu atď. Už v blbom Cčku si definuješ pole štruktúr cez ukazateľ a celé to skákanie za teba absolvuje kompilátor s optimalizátorom. Ty len pristupuješ cez index a všetko čo potrebuješ sú hranaté zátvorky. Ani ukazateľovú aritmetiku nemusíš. A C++ ide ešte ďalej. Stroj sa postrajá, že sa načíta len to, čo treba.

A keby aj nie, čipy ako ESPRESSIF s 50 kB SRAM a 4MB flashky dnes idú do 70 Kč maloobchod aj s daňou...
JOHNZ
 
Příspěvky: 140
Registrován: sob 05 led, 2008 9:24 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » úte 23 říj, 2018 11:00 am

muzeme debatit ;-)
---
asi bude lepsi pouzivat priklady, to co si napisal je nesmysl a neodpovida realite.
Co si predstavujes pod pojmem strukturovani ? Mam dojem, ze to spis obkecavas !! ;-)
---
Procedury a funkce jsou soucasti Bascom a nemam problem je pouzivat.
Otazne je, ci je potrebujem ? Vetsinou si vystacim s GOSUB, teda volani podprogramu.
Nedelam tak slozite veci, abych potreboval lokalni promenne. A pouzivat je nasilu je hovadina.
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod belgarat » úte 23 říj, 2018 11:41 am

zdeno píše:muzeme debatit ;-)
asi bude lepsi pouzivat priklady, to co si napisal je nesmysl a neodpovida realite.
Co si predstavujes pod pojmem strukturovani ? Mam dojem, ze to spis obkecavas !! ;-)


Tak treba priklad 'strukturovanych dat' zaroven s optimalizaci. Strukturovane programovani je trochu neco jineho nez data.
Kód: Vybrat vše
struct Flags {
  boolen   enabled : 1;
  boolean  active : 1;
  int      counter : 5;
};

struct Servo {
  byte  left;
  byte  right;
  Flags flags;
};


Samozrejme ze muzu psat:
Kód: Vybrat vše
int servo0_left, servo1_left, ...., servo15_left;
int servo0_right, servo1_right, ...., servo15_right;
byte servo0_flags, servo1_flags, servo2_flags, servo3_flags, servo4_flags, ...., servo15_flags;

if ((servo3_flags & 0x03) == 0x03) {
  servo3_flags &= ~0x02;
  ....
}

Ti "lepsi" programatori si misto vyctu promennych udelaji i pole, jedno pro levou, druhe pro pravou a treti pro stavy - to jde i v BASICu. A nebo taky
Kód: Vybrat vše
Servo servos[32]; // jo, tady musim dopsat inicializaci vseho na 0

Servo& s = servos[3];
if (s.flags.enabled && s.flags.active) {
  s.flags.active = false;
  ...
}

Dela to to same. A kdyz pouziji bitfield, tak dokonce i C++ prelozi kod prakticky stejne jako bych se v bitech hrabal rucne. Proste take to koderske dristani hovadin.
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: OT: BASCOM BASIC a C++

Příspěvekod JOHNZ » úte 23 říj, 2018 12:23 pm

Myslím presne to, čo píše belgarat. Len kým som sa popri práci dostal k tomu to dopísať, predbehol ma. Ja som nemyslel štruktúrovanie programu, to má aj ten Bascom, preto tam schválne používam pojem SUBka, aby som rozlíšil, že to je chovanie Bascomu.

Ja myslím štruktúrovanie dát. Aby si si nemusel robiť trebárs výhybky tak, že máš pole na adresy, pole na polohy, pole na závery, pole na neviem čo, ale aby si si tú výhybku mohol popísať trebárs

Kód: Vybrat vše
enum TVyhybkaZaver={VZ_ZIADNY,VZ_NEROZLISENY,VZ_CESTA}
enum TVyhybkaStav={VS_PLUS,VS_MINUS,VS_NEZNAMA}

struct TVyhybkaRAM {
  Zaver: TZaver;
  ZaverCesta: TVlakCesta *;
  Poloha: TVyhybkaStav;
  Ohlas: TVyhybkaStav;
}

struct TVyhybkaFlash {
  Adresa: Word;
  PocPoloha: TVyhybkaStav;
}


A potom si makrom niekde na Flashke definovať int8 poc_vyhybiek a TVyhybkaFlash *vyhybkyFlash a TVyhybkaRAM *vyhybkyRAM a potom namiesto zložitého načítania z jednotlivých polí, a pamätania si, že keď chcem načítať adresu výhybky musím použiť CPEEK lebo ju mám na Flashke a nie v RAMke inak sa to poserie, jednoucho zabezpečil vyhodnotenie podmienok na prehodenie výhybky štýlom

Kód: Vybrat vše
if(vyhybkyRAM[adresa].Zaver=VZ_ZIADNY && vyhybkyRAM[adresa].Poloha!=VS_NEZNAMA) { prehod vyhybku}


a všetko načítanie za mňa urobí prekladač, načíta len to čo je potreba a keby som chcel náhodou polohu výhybky načítať z vyhybkyRAM tak namiesto pádu programu vypíše prekladač chybu a ja si ju môžem hneď opraviť.
Naposledy upravil JOHNZ dne úte 23 říj, 2018 12:29 pm, celkově upraveno 1
JOHNZ
 
Příspěvky: 140
Registrován: sob 05 led, 2008 9:24 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod JOHNZ » úte 23 říj, 2018 12:27 pm

A ešte jedna bokom, náhodou som narazil na jeden kus tvojho programu, konkrétne na tento: https://www.railnet.sk/view.php?cisloclanku=2018020001

Kód: Vybrat vše
 'ziskani adresy pro paket B2 z portB.0 až B.7 a D.6 do formatu Loconet
 'je to pomerne slozite, vsak norma Loconet je taky pekne sprasena
 'napisane v ASM, protože na toto je Bascom prilis ukecany.
  clr r21
  in  r20,pinb                          'Adr 3 az A11
  com r20
  in  r22,pind                          'Adr 2
  ... pár ďalších riadkov assembleru


Skúmal som to asi 5 sekúnd, tak som si neni istý, ale nie je náplňou toho assembleru, na ktorý je údajne Bascom príliš ukecaný, urobenie niečoho takéhoto:

Kód: Vybrat vše
t_sprava[0]+((t_sprava[1] & $0F) << 7)+1;


Komentár o sprasenosti normy Loconetu je od teba vo vlastnom kóde potom skôr úsmevná záležitosť.
JOHNZ
 
Příspěvky: 140
Registrován: sob 05 led, 2008 9:24 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » úte 23 říj, 2018 1:18 pm

a potom se divis tomu, ze strojovy kod programu je delsi nez pisany text ;-)
---
t_sprava[0]+((t_sprava[1] & $0F) << 7)+1;
je hovadina, protoze nepoznas syntax Loconetu. Kde tam mas negaci portu B a D ?
Jinak toto je podraz, protoze to neni Bascom, ale ASM !!
Usmevne je spis to, ze to pouzivas jako argument.
---
Staveni vlakovych a posunovych cest :
Ja tam mam dve promenne a to zamek vlakove cesty. A to proto, ze pres zhlavi stavim jen jednu vlakovou cestu.
A druha je zamek na te koleji, kam stavim tuto cestu.
Takze zkontrolujem dva zamky a rovnou posilam pakety na nastaveni te cesty.
....
if zamek.0 = 0 then 'kontrola obsazeni zhlavi
if obsaz.0 = 0 then 'kontrola obsazeni 1 koleje
Do
'posilam pakety na stavbu cesty B0
'kontrola paketu B1
Loop
'pokud jsou vsechna hlaseni legalni, nastavim navestidlo
end if
end if
....
Takze jakou na toto potrebujes strukturu ?


PS, stav vyhybky mne nezajima, protoze zakladni stav je vsechno "cervena" a stav vyhybek neni dulezity
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod belgarat » úte 23 říj, 2018 1:35 pm

JOHNZ: je to marny. I ja psal to svoje spis pro ostatni nez pro Zdena. Ten zmatla pokazde vsechno dohromady, vubec se nesoustredi na to podstatne a je nadseny ze utahl prispevatele na chybne zapsanych par znaku. Nejde o to pochopit (a poucit se), ale ukazat ego. A nezapomen: to co zrovna ted nepotrebuje je nepodstatne, naprd a navic to jde na tloustku.
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: OT: BASCOM BASIC a C++

Příspěvekod JOHNZ » úte 23 říj, 2018 1:59 pm

Díval som sa na to z rýchlika a prehliadol som sa, ten kód čo som dal ja je z prijímania a to tvoje je vysielanie, takže niečo podobné tomuto (toto je teda z vysielania B0).
Kód: Vybrat vše
    buf[2]=((p_adresa >> 7) & 0x0F) | ((nahodeny & 0x01) << 5) | 0x10;


Pozri, na to, že nepoznám syntax Loconetu mi tá Loconetom ovládaná Nemšová funguje podozrivo dobre. Sám si ju videl a zrovna minulý týždeň jazdila 3 dni 8)

Podraz to nie je, pretože to síce je ASM, ale Ty sám riadok nad tým píšeš, že aj ten ASM je lepši ako predpis v Bascome. Takže podrážaš sám seba ešte sa tomu smeješ. Ale áno, sebakritika je dobrá vlastnosť :wink:

A len jedna vlaková cesta ti nepríde málo? Uvedom si, že svojim zariadením napodobňuješ releovku. A tá to väčšinou zvláda. A nepotrebuješ k tomu ani dvojkoľajku, stačí odbočná trať, vlečka, alebo obyčajný šturc. A zvláda ešte fúru ďalších vecí, výluka protismerných ciest, rozlíšenie na vlakové a posunové cesty, rušenie volieb, združená voľba ciest,... Mňa stav výhybiek zaujíma, lebo ho potrebujem poslať na vykreslenie. Ostatne, to bolo aj zmyslom toho môjho pôvodného odkazu pre tondakladno, že keď sa do toho pustí s Basicom, časom sám príde na to, že mu to prestáva stačiť, že keď to prenesiem, že zistí, že dva zámky sú mu málo. Ja by som si to tvoje riešenie nevedel obhájiť ani sám pred sebou, nieto aby som sa ním chválil :roll:

Ale možno som len zdeformovaný tým, že väčšinu dňa riešim podobné zariadenia pre vláčiky v mierke 1:1.
JOHNZ
 
Příspěvky: 140
Registrován: sob 05 led, 2008 9:24 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » úte 23 říj, 2018 2:18 pm

aj tak je to spatne, ale to mne netrapi ;-)
proste mam na haku drobnosti, ktere nejsi povinen ovladat.
Tvuj problem, ze se zhazujes vecmi, ktere neumis na 100%.
---
Ja jsem nikde nebyl, teda nejakou Nemsovou jsem nemohl videt !!
---
Otazne je, ci je treba vic jak jedna vlakova cesta ?
Ja delam modulovku a tam tech vlaku moc nejezdi.
Proste jsem si to tak zadefinoval a komu to vadi, nech si to udela jinak.
---
Ale zpatky k Bascomu, je to strukturovany a ne objektovy jazyk. Teda na bezne veci, uplna spokojenost.
A to ze je to rychlejsi a prehlednejsi je jen ceresnicka na pomyslnem dortu.
Pokud chces delat veci slozite, je to tvuj problem.
---
zrovna nedavno jsem resil mapovani funkci na ovladaci Oto.
Je tam dost velky problem, testovat priradeni urciteho tlacitka na tu kterou funkci.
Teda jak resit stisknuti F0, aby se zapla funkce F4, napriklad ?
Nebo uplne jina !
Jak by si to resil v C++ ?


PS: ASM je vubec nejlepsi, jen ta prehlednost je naprosto zoufala.
Ale jsou momenty, kdy se bez nej neda pracovat.
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod JOHNZ » úte 23 říj, 2018 2:51 pm

zdeno:
Nie je to zle, len to nie je generovanie B2 ale B0. A dekodéry takéto B0 zatiaľ berú tak to nebol dôvod riešiť.

Videl si ju v Považskej Bystrici. Keď ti tam chalani tie nohy na modul popílili, čo si vzhľadom k ich stavu mysleli, že to je nejaký odpad... A ešte (a to ti teda nevyčítam, mal si iné starosti) naposledy si od nej stál meter a pol v Prievidzi.

Tiež robím modulovku. A zrovna v tej Prievidzi, jak si tam stál vedľa toho stál, som mal v grafikone 4x súbežný vjazd manipuláku od Chrenovca a osobáku od Radošiny. A navyše, keby som v okamihu postavenia vlakovej cesty od Chrenovca na 2. staničnú nemohol posunovať v nepárnej skupine, veru zle by sa mi tam žilo. Stačí, že sa v grafikone nejaká stanica trochu zaťaží a pri takomto obmedzení už zrazu celý grafikon fičí za tými Baťovými drevákmi.

C je tiež štruktúrovaný, nie objektový jazyk (akurát vie štruktúrovať aj dáta). Nehovoril tu niekto o zhadzovaní sa nie-100% znalosťami?

Mne teda nepríde rýchlejší a o jeho priehľadnosti krásne svedčí už len to, že si pri pomerne jednoduchom probléme, naviac vôbec nesúvisiacom s časovaním ani I/O (a teda niečím, čo by z princípu malo byť napísané v čo najvyššom jazyku, práve kvôli tej tebou omieľanej prenositeľnosti) ty sám na celý Bascom rezignoval a napísal to v ASM.
---
Potrebuješ naozaj len nejak prehádzať funkcie medzi tlačítkami, alebo chceš aby sa na stlačenie jednoho tlačítka vydalo viac funkcí alebo niečo podobné? Lebo to prvé je predsa niečo tak jednoduché, že by to šlo bez problémov zvládnuť aj v tom Bascome :shock:

Kód: Vybrat vše
uint8 mapa_funkcii *; //ukazatel na pole, kde mám skutočné hodnoty pre dané tlačítka
uint8 max_funkcii; //keď som paranoidný, uložím si tu aj maximálny počet funkcii (napr. 28) pre kontrolu, ak to mám inde alebo si verím, nemusím to vôbec použiť

init(mapa_funkcii,max_funkcii) //to pole treba nejak naplniť, buď tam strčím odkaz na Flashku alebo do RAMky, postup je v zásade podobný ako sa to robí v Bascome.

uint8 namapuj(uint8 p_tlacitko)
{
  ifp_tlacitko<max_funkcii) return mapa_funkcii[p_tlacitko]);
  else return 0xFF //ošetrenie chyby, môže vyzerať inak
}


P.S.: Áno, bez ASM sa niekedy pracovať nedá. Ale musí byť strčený niekde v samostatnom súbore s veľkým nápisom TU_JE_ASSEMBLER, aby sa v okamihu, keď chcem všetko preniesť na nejaký iný typ procesora, nemusel hľadať po všetkých zdrojákoch, ale rýchlo preklepal potrebné inštrukcie, preložil zbytok a pokračoval v krasojazde...
JOHNZ
 
Příspěvky: 140
Registrován: sob 05 led, 2008 9:24 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » úte 23 říj, 2018 3:38 pm

vis, ze existuji stanice, kde je dovolen jen jeden pohyb na zhlavi ??
Proste kraceni provozniho casu a problematicky grafikon nemuze byt duvod porusovat pravidla.
Neni problem to opravit, ale nechcem. ;-)
---
To mapovani funkci neni az tak jednoduche, protoze treba funkce F0 az F8 jsou prepinaci a funkce F9 az F28 jsou tlacitka.
Teda nestaci jen najit funkci, ale ji i spracovat. Teda je nutne mit nekde zalohu a tu porovnavat s novym stavem.
Dalsi problem je v tom, ze funkce jsou rozdelene do 5 ruznych balicku a kazdy ten balicek je jinde.
Navic se to musi ukladat do EEPROM.
Asi nebylo spravne na tebe takto vybafnout, nemuzes vedet vsechny souvislosti a nuance.
---
Jinak ja ASM pouzivam bezne, tam kde se mi to hodi a libi. Pouzivam jen AVR Atmely a tam je prenositelnost vynikajici,
pokud je nejaka zrada v portech, tak na to prekladac upozorni a jinde to nevadi.
---
Jinak spolupracujem s Polakmi, kde je Bascom omnoho vice rozsireny. Dokonce ma i polskou lokalizaci.
Proto mi tady celkem nevadi, ze ho malokdo umi.
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Další

Zpět na Software

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 7 návštevníků