( bucko | 2017. 01. 16., h – 02:10 )

:)
Most látszik milyen öreg róka vagyok! És bocsánat az öndícséretért.
Szóval 20 év c rendszerprogramozói tapasztalat után eldöntöttem, hogy ezek a c fordítók csak annak jók, akik képtelenek assemblerben programozni. Most már ott tartok, hogy az assembler program is alig fér el, pedig - legalábbis ebben a dologban nem vagyok szószátyár. Ilyenkor meg a legfontosabb, - bár a nagy-nagy guruk által primitívnek tűnhet, hogy relokálható assemblert sem írok. Maximum Intel Isis-II rendszeren, mert az még tudott relokálni. ;)

Bár nem ezt kérdezted, de leírom hogyan tudsz eredményt elérni. Ide jönne: már ha tudsz assemblerben programozni. Már pedig tudsz, így ez a járható út.

A Mikroelektronika usb stack szinte fogyasztható asm (c->asm) forrása elérhető a pic18f2550-re. Pl. itt a siglabfw.asm. Ezt (nem pont ezt, csak hasonlót) dolgoztam át több lépesben:
- Fordítható forrás előállítása.
- Konstansok és definíciók.
- "Relokálható" forrás előállítása. Ez csak annyit jelent, hogy a hivatkozásokat is meghatároztam. Utána tetszőleges helyre elhelyezhető a kódrészlet.
- A c hívási konvenciónak megfelelő szoftveres stack kezelés eltávolítása.
- A kettős és hármas bufferelés eltávolítása, mivel nem operációs rendszerből hívogatom.
- Index regiszterek fixálása - így nem kell mentegetni feleslegesen.
- A bankselect kiirtása. (Egy programban csak egy bankot használok, mert abban+access mindig elférnek a változók. A többi memóríát, vagy ha nem férnek el a változók indexregiszterrel használom.)

Visszaellenőrzéshez ezt használtam. Majdnem teljesen megegyezik a Mikroelektronika kódjával.

Ezek után már csak át kell írnod 16-osra.

Ha meg igazán profi hőmérő szeretnél, akkor nézd meg a BME280-at! Ugyan beforrasztani nem tudod, de ebay-n megkapod beforrasztva annyiért, amibe a csip kerülne. Ráadásul olyanja is van, hogyaszongya: Gaming Mode. Ezzel a szörnyeket lehet jól levadászni! ;) Először én is arra gondoltam, hogy gyenge volt a pálinka...