Fórum témák

» Több friss téma
Fórum » Nightpic
 
Témaindító: Ksanyi, idő: Jan 20, 2008
Témakörök:
Lapozás: OK   1 / 2
(#) Ksanyi hozzászólása Jan 20, 2008 /
 
Sziasztok!
Nem találtam ilyen témát,ha van töröljetek.
Nightpic basic ben irtam egy programot,(16F877)ami 4 A/D-t olvas és kiirja egy 2X20-as LCD-re Voltban.
A gondom a következő:az A/D 0,6V alatt nem lát semmit mert a lábakon van dióda,tehát csak ez fölött
olvas be értéket. Próbáltam óvatosan -ref-et adni,de nem segitett. A felbontást 10 bitesre állitottam, igy
"0" és 5V között a felbontást 0,005-re tudja kiirni,
amit elég görcsösen sikerült meg oldani.
Használ-e valaki Nightpic-et és hogy oldjátok
meg a REF-et

(#) czinka válasza Ksanyi hozzászólására (») Jan 20, 2008 /
 
Szia! Nekem nem egyértelmű a kérdés, pontosabban miben kérsz segítséget ? A basic programozásban vagy a hardver kiépítésben.
Egy kicsit egyértelműbben teszed fel a kérdést szivesen segítek ! üdv.
(#) Medve válasza Ksanyi hozzászólására (») Jan 20, 2008 /
 
Rajzold le a kapcsolást...a diódáknak általában az a feladatuk, hogy a bemenetet a testnél negatívabb, illetve a pozitív tápnál nagyobb feszültségektől védje.
(#) proli007 válasza Ksanyi hozzászólására (») Jan 20, 2008 /
 
Csatlakozom az előttem szólóhoz!

Idézet:
„A gondom a következő:az A/D 0,6V alatt nem lát semmit mert a lábakon van dióda,tehát csak ez fölött olvas be értéket.”


Milyen dióda? és holvan? Jól néznénk ki, ha ez így lenne. 10bites felbontás, meg egy dióda? Hát ez nem lehet.

A PIC referenciája, lehet a Vdd-Vss (5V), vagy az AN3-Vss, vagy az AN2-AN3 lábra adott referencia. Az A/D mindig a két referencia közötti pontot bontja fel 10bitre. Persze a referencia nem lehet akármekkora értékű (adatlap)
Ha pontosabb referenciát akarsz használni, ajánlom a TL431-et, az 2,5V.

Én használtam (van) a progit, de az AD-t ASM rutinnal kazeltem. Elég kevés ismeret van a Vörös úr progijához.
Ha konkrét kérdésed lesz, akkor esetleg megnézem vele.

üdv! proli007
(#) Ksanyi hozzászólása Jan 20, 2008 /
 
Gyorsak vagytok!
Konkrétan arról van szó,hogy az analóg bemenetre kö-
töttem egy potit,meg persze egy műszert.A poti osztóként volt kötve VDD-VSS közé és a középső láb
a bemenetre.Nagyon finoman 0-ról felfelé tekerve akkor mutatott a kijelzőn 0,001-et amikor a műszer 0,6V-ot.Egyébként a diófát csak azért emlitettem mert a 877-es gépkönyv 141.-ik oldalán a bemenet igy is van lerajzolva, mármint a bemenetten egy-egy dióda van kötve a földre és a tápra is.
Amúgy jól műxik csak ez a bajom vele.
A programmal nincs bajom,kivéve azt ,hogy Vörös úr
3-4 hete meg igérte,hogy leirja a deklarációkat,de persze nem tette meg.Azóta amire szükségem volt megoldottam.
A hardver egy próbapanel, amit én csináltam,az jól műxik.
Ja próbáltam a külső ref-et is AN3-AN2 ,de ezen ez nem segitett.


(#) kissi válasza Ksanyi hozzászólására (») Jan 20, 2008 /
 
Szia!
Emlékeim szerint a PIC AD-ja alapból 10 bites, csak Tőled függ, hogyan olvasod ki az infót! Nem lehet, hogy rossz regisztert olvasol (az adat 2 regiszterben van, balra, vagy jobbra igazítva a beállítástól függően!).?

Először az eredményedet jelezd ki LED soron, hogy biztosan jó legyen az AD, mert lehet, hogy a kiírásnál rontod el!

Jó munkát!

Steve
(#) Ksanyi hozzászólása Jan 21, 2008 /
 
Remélem sikerül bemásolni az A-port lábának kapcs.raj-
zát(dióda) és a nonlinearitást mutató görbe sereget,
amelyen látszik,hogy egy görbe sem éri el a 0-át.
Hogy mértek meg pl. 0,3V-ot?

AN_port.rtf
    
(#) Lucifer válasza Ksanyi hozzászólására (») Jan 21, 2008 /
 
A nonlinearitás az nem azt jelenti, hogy nem tudsz mérni egy bizonyos tartomány alatt, hanem azt hogy míg 0.1 volt 100 egység, addig 0.2 volt nem 200 hanem 205. Ezt lehet megtudni a görbéből.
(#) kissi válasza Ksanyi hozzászólására (») Jan 21, 2008 /
 
Az ábrából látszik, hogy 5 V-nál kb. 0,5 LSB lehet a hiba ( azt jelenti, hogy a tényleges érték és a mért érték között max. ennyi lehet a hiba!).
Ha 10 bites felbontást használsz --> 1024 lépcső --> 5 V / 1024 ~ 5mV egy lépcső. Ennek a fele lehet a hiba, tehát pl. 300 mV: 300mV / 5 V *1024 --> 61,44 +/- 0,5 --> lehet, hogy 60 vagy 62- ess kódot ad vissza.
Szerintem ez a pontosság általában megfelelő, hacsak nem valami precíziós eszközt készítesz!
(#) kobold válasza Ksanyi hozzászólására (») Jan 21, 2008 /
 
Az addig kerek, hogy a rajz az analóg vonalra mutat egy diódát, de ez belül van, a prociban. Kívülről a szaggatottal bekeretezett rész csatlakozik, vagyis a forrás, és a soros impedancia, amit max. 10 kOhm-ra jelöl az adatlap, a valóságban inkább kisebb szokott lenni (2.2 ... 3.3 kOhm értékekkel szépen szalad). Előfordulhat, hogy túl nagyértékű potit tettél a bemenetre.
A két rajzi dióda épp záróirányban van bekötve, a védelmen kívül egyéb szerepe nincs. A bemenetre esetleg egy Zener-diódát szoktak kötni, értelemszerűen záróirányban, hogy a maximális bemenőfeszültséget korlátozza.
Mivel a PIC az analóg értéket a Vref-, Vref+ közti tartományban értelmezi, ahol Vref+ - Vref- minimum 2V (a pontosság tartásához), továbbá a referenciák programból konfigurálhatók, pontosabb segítséghez a bemeneti ellenállás, valamint az AD programbeli konfigurációja sem ártana.
(#) Ksanyi hozzászólása Jan 21, 2008 /
 
Köszönet a válaszokért!
Az adatlapban nem találtam meg a külső +és - REF
határadatait,lehet nem voltam elég türelmes.
Tehát ha jól értem,akkor ha a+ref 2.5V a -REF GND
akkor 0-2.5V között a felbontás 1024.
ami azt is jekenti,hogy a küső osztónak 2.5V az-az a
+REF-re kell osztania?

device 16f877
config LVP_OFF, BODEN_ON, PWRTE_ON, DEBUG_Off, WDT_OFF, XT_OSC
dim a,b,c,d,e as byte
dim y,x as word
declare xt_osc4
declare LCD_TYPE 0
declare LCD_DTPIN PORTb.4
declare LCD_ENPIN PORTb.0
declare LCD_RSPIN PORTb.1
declare LCD_INTERFACE 4
declare LCD_LINES 2
cls
cursor 1,1:print "C1 0,000V"
cursor 1,11:print "C2 0,000V"
cursor 2,1:print "C3 0,000V"
cursor 2,11:print "C4 0,000V"
ADCON1=%10000001

start:
ADCON1=%10000001
ADCON0=%01000001
gosub get1
delayms 10
ADCON1=%10000001
ADCON0=%01001001
gosub get2
delayms 10
ADCON1=%10000001
ADCON0=%01010001
gosub get3
delayms 10
ADCON1=%10000001
ADCON0=%01100001
gosub get4
delayms 10
goto start
dat:
ADCON0.2=1
ADCON0.0=1
delayus 50
ADCON0.0=0
return
get1:
gosub dat
x=(ADRESL+(ADRESH*256))*(100/20)
a=dig x,0
b=dig x,1
c=dig x,2
d=dig x,3
cursor 1,4:print dec d
cursor 1,5:print ","
cursor 1,6:print dec c
cursor 1,7:print dec b
cursor 1,8:print dec a
cursor 1,9:print "V"
return
get2:
gosub dat
x=(ADRESL+(ADRESH*256))*(100/20)
a=dig x,0
b=dig x,1
c=dig x,2
d=dig x,3
cursor 1,14:print dec d
cursor 1,15:print ","
cursor 1,16:print dec c
cursor 1,17:print dec b
cursor 1,18:print dec a
cursor 1,19:print "V"
return

get3:
gosub dat
x=(ADRESL+(ADRESH*256))*(100/20)
a=dig x,0
b=dig x,1
c=dig x,2
d=dig x,3
cursor 2,4:print dec d
cursor 2,5:print ","
cursor 2,6:print dec c
cursor 2,7:print dec b
cursor 2,8:print dec a
cursor 2,9:print "V"
return
get4:
gosub dat
x=(ADRESL+(ADRESH*256))*(100/20)
a=dig x,0
b=dig x,1
c=dig x,2
d=dig x,3
cursor 2,14:print dec d
cursor 2,15:print ","
cursor 2,16:print dec c
cursor 2,17:print dec b
cursor 2,18:print dec a
cursor 2,19:print "V"
return

Nem irtam még rá megszakitást,igy eléggé pattog a kijelző,csak ki akartam próbálni az A/D-t.
Egyébként tőltőben gondoltam felhasználni,ceruza aksikhoz.
Kérnék infót a referenciák programozásáról,ha lehet.
Sziasztok!


(#) kobold válasza Ksanyi hozzászólására (») Jan 21, 2008 /
 
A progi szerint a pozitív referenciád az RA3, a negatív a GND (Vss). Ha az RA3-ra 5V-ot kapcsolsz, akkor a 0 ... 5V-os tartományt osztja 1024 részre, ha 2.5V-ot adsz neki, akkor pedig azt. A referenciák kiválaztását az ADCON1 regiszter PCFG3...PCFG0 bitjei határozzák meg, adatlapban megtalálod.
Viszont, nekem nem tetszik a mintavétel menete: bekapcsolod az AD-modult, beállítod a GO bitet, majd időzítve kikapcsolod az AD-t. Ezt úgy szokás, hogy AD be, GO be, aztán vagy interrupt-on át (ADIE=1 esetén ADIF okozza) figyelik a GO bitet, vagy pedig pollingozzák; a konverzió akkor ért véget, ha a GO bit törlődik, ezt az AD-modul intézi. Lehet, hogy félbeszakítod, ha te modult kapcsolgatsz közben.
(#) proli007 válasza Ksanyi hozzászólására (») Jan 21, 2008 /
 
Szia!

- Teljesen feleslegesen cseszegeted az AD-t.
- Az AD-t nem kell ki-be kapcsolgatni. Amikor mérsz előtte bekapcsolod, majd amikor az egésszel végeztél, kikapcsolhatod, de ez is csak telepspórolás miatt kell.
- Ha az ADCON1-et a start előtt beállítottad, azt nem kell újraírogatni. Minek? Közben változott valami?

- Viszont, ha csatornát váltasz az ADCON0 5:3-al, azután várni kell, 50usec időt, az adatgyűjtésre (fel kell, hogy töltődjenek a belső és szórt kondik az új értékre, tipikus idő 40usec, de számítani kell)
- Ezután be kell állítani a GO bitet.
- Várakorni, míg a GO alacsony szintű nem lesz. Ez az AD "end conversio" jelzése!!! Ezt lehet megzakításból várni, vagy pooling-al (ahogy Kobold is írta)
- Most kell kiolvasni az új értéket.
- Jöhet a következő csatorna jele. (MPX : ADCON0 5:3)

A DS30292C doksi 11. fejezetében (113.oldal) pontról-pontra le van írva, hogyan kell a konverziót végrehajtani. Ezt kövesd!

ui. Az A portát, annak ellenére, hogy a Reset beállítja, illik bemnetként deklarálni. Ha nem a bitszámokat írnád, hanem a SFR bitjeinek nevét, sokkal olvashatóbb lenne, még számodra is a program.
Az AD/ referencia feszültség bementeinek,bele kell férni a tápfeszbe, de a ref- és ref- közötti érték minimuma 2V.

Kobold! Elnézted, nem kikapcsolja az AD-t, hanem újra be, csak feleslegesen.

üdv! proli007
(#) Ksanyi hozzászólása Jan 21, 2008 /
 
Szia kobold!
Tök igazad van a mintavétellel kapcsolatban, nem akartam görcsölni az óra modullal,a pollingozás az gyorsan ment volna,de csupán látni akartam az A/D-t
működni+LCD modul kiirás,mert az igazság az ,hogy
ez a harmadik progi amit karcoltam 16F877-be.
Előtte egy órát csináltam, meg persze sok futófényt.
Egyébként az ADCON1-et amint látod használom, és
a konverziónak is le kell futnia,mert a két adatregiszter
a kölön számolgatás nélkül kiirta a 1023-at +5V-nál.
A bemeneten (AN0) egy 5,1 K-os poti van,a többi 3 használt bemenetre kötöttem 1-1 ceruza akkut.
A +REF-el be lehetett állitani a pontos értéket.
A többi modulját a 877-nek majd csak ez után fogom megismerni(ha igaz)
(#) kobold válasza proli007 hozzászólására (») Jan 21, 2008 /
 
Hm... Minden feldolgozó (get) rutin a gosub dat hívással kezdődik; ott meg BSF ADCON0, GO; BSF ADCON0, ADON; delay 50usec; BCF ADCON0, ADON utasítások hajtódnak végre, szerintem. Az első hívásnál valóban csak újra bekapcsolja az ADON-t, de utána már mindig ki-be.
(#) kobold válasza Ksanyi hozzászólására (») Jan 21, 2008 /
 
Én erre csak annyit mondanék, hogy akár kiírta az 1023-at 5V mellett, akár nem, ha az áramkör nem a várt eredményt hozza, akkor az a minimum, hogy követjük az adatlap meg a segédletek ajánlásait...
A Proli007 által írt DS-t feltétlenül nézd meg, és szerintem kicsit gondold át a progidat. Végül is egy polling vagy interrupt megírása nem a világvége, pár perc pluszmunkáért lehet, hogy hibátlan eszközöd lesz.
(#) Ksanyi hozzászólása Jan 21, 2008 /
 
Progi javítva!
No kapcs össze-vissza,pollingozok,a bitek nevét még
nem dakaráltam,de még hosszú a nap.
Köszi a kritikákat,tanulok belőlük,de csak eddig jutottam 2 hét alatt.
(#) Ksanyi hozzászólása Jan 21, 2008 /
 
Köszönet midenkinek a segítségért és a kritikáért is .
No kapcsi össze-vissza,pollenezek,a vezérlő biteket
deklarálni fogom igérem .
Az eredmény: 0V-nál mind a 4 csatorna 1-2 között
ugrizik, az LCD-n a kijezés nyugodtabb,viszont nem pontos a képletem ezen még dolgoznom kell,ettől
függetlenűl Qvára örülök
Az integert hiányolom,de majd megoldom vhogy.
Én nyertem volna az 5-öst most kapnátok 3-3 vödör
PIC-et .
Majd még jövök.
(#) Ksanyi hozzászólása Jan 22, 2008 /
 
Na! most próbálok harmadszor irni,nem jelenik meg!
Köszönöm a tanácsokat és a kritikákat is,tekintve,hogy
ez a 3. ik prg-m 877-re nem volt olyan xar.
No nincs ki-be kapcsi,kezelem a GO bitet,már majdnem
jó! .Most 0V-nál 0-át ir ki a 4 csatorna azLCD-re,bár
nem pontos a képletem(nemtom ez milyen basic nem tud bármivel bármit osztani)!
Deklarálom a biteket is igérem,de vége a napnak
Köszi mindenkinek maj' még jövök!

most meg látomamit előzőleg irtam,na mindegy.
Cső!
(#) proli007 válasza kobold hozzászólására (») Jan 22, 2008 /
 
Bocs, teljesen igazad van!
Ezek szerint, csak odáig jutottam el, hogy bekapcsolja, és vár 50mikrót.

Amúgy az ASM-e sokkal jobban ráál a kezem. Meg attól, hogy nem a bit neveket írják, hanem a bitszámokat, mindig "berágok". Más gondolkodásmódját, egyébként is nehéz átvenni, és akkor még nehezítve van azzal, hogy előkell vennem az adatlapot, hogy megnézzem a biteket. Amúgy ha egy-két szavas megjegyzést is hozzáfűznének a programsorhoz-rutinhoz (hogy mi a cél vele), akkor mindenki sok hibát deríthetne fel vele saját maga is.
Hát ezt csak úgy magam elé mondtam.


üdv! proli007
(#) Ksanyi hozzászólása Jan 28, 2008 /
 
Sziasztok!
Egy konkrét NIGHTPIC-es kérdésem van képlettel kapcsolatban.
Van egy A/D-re kötött poti 0-5V között ami 0-1023
között ad ki kódot.Ebből akarom a PWM kitöltési tényezőjét 1-99% között változtatni,és ezt kiiratni kijelzőre.
Ami egyszer 1023/255=4.011
és 1023/99=10.33 lenne én konkrétan ezt irtam:
X=(ADRESL+(ADRESH*256))/4,011
Az x-et irnám be a CCPR1L-be
Aképletet a forditó elfogadja,de nem ezt hajtja végre
Segitsetek légyszi!
Üdv
(#) kobold válasza Ksanyi hozzászólására (») Jan 28, 2008 /
 
Sosem láttam még Nightpic felületet, de csak van benne debug mód, és lépésenként meg lehetne nézni, mi van a változókban...
Nem lehet, hogy a számítást még megcsinálja, de lebegőpontos a végeredmény, nincs automatikus konverzió a CCPR1L-be íráskor (aminek a tartalma meg ugye csak egész szám lehet), és ezért nem csinálja meg?

proli007: a múltkor csak magamban adtam neked igazat, az asm használatával kapcsolatban, és lám... akármilyen nyelven utasítjuk, a procinak úgyis asm lesz, csak valami magasszintű nyelvnél ezt már elrejtik előlünk, így olykor fogalmunk sincs, miért nem megy
(#) Ksanyi hozzászólása Jan 28, 2008 /
 
A PIC Simulátor IDE-t használom,van benne lépésenkénti végrehajtás,abban meg tudom nézni
(fél nap lessz)
Ezek szerint nem a képlet rossz.
(#) kobold válasza Ksanyi hozzászólására (») Jan 28, 2008 /
 
Nem mondtam, hogy a képlet jó...
Miért fél nap? Elsőnek ez a sor kell:
X=(ADRESL+(ADRESH*256))/4,011
Tegyél a sorra egy töréspontot, futtasd a progit, nem tarthat sokáig, mire becsapódik oda a végrehajtás. Onnan kell csak lépegetni.
Végrehajtás előtt az ADRESH, ADRESL értéke, végrehajtás után az X.
Utána abból a sorból, ahol a CCPR1L-nek értéket adsz, kell a regiszter értéke a végrehajtás előtt, illetve után.
Ne mondd, hogy ez fél nap...
(#) proli007 válasza proli007 hozzászólására (») Jan 28, 2008 /
 
Sziasztok!

Kivételesen NightPic programnál, van egy kis kerülőút.
Ez a progi, kompiler. Tehát először ASM-re fordítja a programot, csak azt nem látni.
Viszont, az Mpaswin-t használja fordítóként. (Van is baj az opciózással, ha jól emlékszem) Az Mpaswin fordító, ott van a könyvtárában valahol. Nos, ha ezt a programot szépen előbb átnevezed, (mondjuk a kiterjesztését) akkor fordításkor a NigthPic nem találja, és hibával leáll.
Persze ez, úgy mint a hibaüzenet nem látszik. De ha ikonra becsukod ilyenkor a szerkesztő ablakát, akkor ott a hibaüzenet. Most ezt az üzenetet, nem szabad okézni, viszont az intézővel, most megtalálod a soronként fordított programot. Így meg lehet nézni, és akár el is menteni, amit fordított.
Nem véletlen, hogy az ablakot nem lehet méretezni!
(A progi eleje, a lapozásokk miatt tele van "szeméttel" azzal nem kell foglalkozni, viszont basic soronként ott van a fordítás. Előbb próbáld ki.)

Aztán ha bezárod a hibaüzenetet akkor törli az ASM programot. Ezt persze akkor is megteszi, ha kész a HEX-re fordítás.

A PWM-el nem érdemes annyit vacakolni. A potit, úgy sem tudod 1/1024 pontosan állítani. Ha az AD-t ballra igazítod, akkor a ADRESH-ban ott a 8bites adat, és ezt bevágod a CCPR1L-be, már kint is van a PWM jel. A potit, így is 256 állapotban tudod beolvasni.

Remélem nem írtam marhaságokat! (rég volt)

üdv! proli007
(#) Ksanyi hozzászólása Jan 28, 2008 /
 
köszönöm mindenkinek,meg fogom nézni mindkét
megoldást!
Üdv!
(#) Ksanyi hozzászólása Jan 29, 2008 /
 
Nos az előbbi képlet-gondot megoldottam:
x=(ADRESH*100)/257 erre 0-99 között ir ki az LCD
Viszont ahogy tanulom új gondok merülnek fel:

declare LCD_TYPE 0 ; alfanumerikus lcd
declare LCD_DTPIN PORTb.4 ; LCD adat portb-n 4,5,6,7
declare LCD_ENPIN PORTb.0 ; E=portb.0
declare LCD_RSPIN PORTb.1 ;RS=portb.1
declare LCD_INTERFACE 4 ;4 bites interface
declare LCD_LINES 2; 2 soros LCD
cls
NIGHTPIC-éknél ez az LCD konfigja,idáig jól is működött
csak ebből nem lehet tudni milyen időzitéseket használ.
Az R/W-t nem használja csak kivár valamennyit.
Ez 4.0 Mhz-ig jól működött,de 20 Mhz-nél már nincs ideje kiirni normálisan semmit.
Van ötlete valakinek mi a megoldás?
Köszi!
Sziasztok!
(#) kobold válasza Ksanyi hozzászólására (») Jan 29, 2008 / 4
 
a. Keress a progi header, include vagy hasonló állományai között olyat, ami az LCD-re vonatkozik, böngészd át, hátha van valami ilyen deklaráció valahol, esetleg a program beállításai, opciói között is lehet kijelzős rész

b. Írd át a programodat assembly kódba, és rögtön te döntöd el az időzítést

c. Tedd vissza a 4 MHz-es kvarcot
(#) Ksanyi hozzászólása Jan 29, 2008 /
 
Kössz!
Egyenlőre a \"c\" marad.
(#) proli007 válasza Ksanyi hozzászólására (») Jan 30, 2008 /
 
Eltűnt a kasszából tízezer forint! Mit tegyek Rabbi?
Tedd vissza fiam!

Hát igen!

Amióta a Basic-et ismerem (C64) azonos problémával küzd. Először az ember örül, hogy "print" és már kész is a program. Aztán azzal harcol, hogy miért így teszi, miért nem úgy... aztán, a basic-ben kerülgeti meg a problémákat, hogy mégis úgy működjön, ahogy szeretné. Erre a program már hosszabb és szövevényesebb, mint előtte. A végén elvész az a tíz soros értelmes rész, ami a közvetlen feladat megoldására kell.

Nos a NigtPic is teljesen hasonló felépítés és ez természetes is. Modulokkal dolgozik, és ha valamire hivatkozol, akkor azt beépíti. Persze ezek univerzálisak, tehát kapásból nem minden paraméterére van szükség, amire meg igen az nem módosítható.
A közös ezekben, hogy nem igen publikálják a működéseket és a határokat. Ráadásul meglehetősen erőforrás igényesek. Szóval ilyen progikat alkalmazni, csak megkötöttségek elfogadásával lehetséges.

Amikor az ember ASM-et ír, akkor ott a leg „gépközelibb" megoldásokat keresi. Hozzá illeszti a memória szükségletet a tényleges és minimális igényeihez. Hozzá illeszti a mért értékeket, tárolt mennyiségeket a kettes számrendszer adottságaihoz. Ezzel rengeteg felesleges számítást tud megspórolni.
Ha a Basic programot írjuk, akkor is érdemes megfontolni ezeket a dolgokat. Ha megnézed a fordítást, láthatod az eredményen. Ha például 4-elosztunk valamit, akkor az csak eltolja jobbra kétszer a számot, és nem kell a matematikai algoritmust használnia. Ettől persze szerencsés esetben, sokkal gyorsabb is lesz, a program.

Néha érdemes "csalni" egy kicsit. Ha azt akarod kiírni, hogy 0..99, akkor lehet azt limitálni. (if x>99 then x=99) Ezt a progi kb. 3 sorban lerendezi és az 1% hibát, a kutya nem veszi észre, mert a potidnak az elején és végén, van bevezető sáv, ahol a karakterisztika, minden csak nem lineáris. Persze ez csak egy buta példa, csak a gondolkodásmódot szerettem volna bemutatni vele.

A hálón, rengeteg ASM mintaprogram, math modul meg miegymás van. Érdemes ezek működését átnézni, kipróbálni és módosítani szükségleteink szerint. Aztán egy laza mozdulattal, beillesztjük a Basic-be, mint ASM modult. Ami jó, hogy ezeket a megírt "függvényeket" már ugyan olyan egyszerűen hívhatjuk meg, mint a Basic utasításokat. LCD esetében is meg lehet ezt tenni.

Amúgy, az LCD kezelésénél, a WR jelet ha nem akarsz visszaolvasni belőle, nem szükséges kezelni. Viszont így a bizi ellenőrzését, figyelmen kívül hagyják, és inkább megvárják a végrehajtási időt. Az eredmény, a programodban látható.
üdv! proli007
Következő: »»   1 / 2
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem