Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   9 / 1319
(#) MaSTeRFoXX hozzászólása Dec 3, 2006 /
 
Sziasztok!
Hogy lehetne megoldani a legegyszerűbben PIC-ben egy bájt tartalmát (0-99-ig) 2 karakteres hétszegmenses kijelzőre kiíratni? Eddig úgy csináltam hogy megnéztem hogy nagyobb-e mint 90 aztán kírattam egy 9-est ha igen aztán, levontam belóle 90-et, aztán megnéztem hogy 9-e, ha igen akkor kiraktam egy kilencest az egyesek helyére. Ugyanezt eljátszottam a a többi számmal. ...
Ennél van egyszerűbb megoldás, kultúráltabb?
(#) potyo válasza MaSTeRFoXX hozzászólására (») Dec 3, 2006 /
 
Mondjuk A-ben van a számod. Csinálsz egy kis ciklust, ami 10-el csökkenti az A-t, amíg nem keletkezik alulcsordulás, és közben növeli egy másik változó értékét. Valahogy így:

clrf B
ciklus
movlw d'10'
subwf A
skpnc
goto ciklus_vege
incf B, F
goto ciklus

ciklus_vege
movlw d'10'
addwf A, F

Ezután a B értéke a tizesek helyén álló számjegy lesz, az A értéke pedig az egyesek helyén álló számjegy.
A kódot fejből írtam, elvileg jó, de azért nem garantálom. Kb. annyira kultúrált, mint a tiéd, de talán egy kicsit áttekinthetőbb. Jobb módszerről nem tudok.
(#) Tomee válasza MaSTeRFoXX hozzászólására (») Dec 3, 2006 /
 
Ime itt a példa.
Én csináltam (nem az egészet) és szerintem jól mükődik.

szam_bont.asm
    
(#) cyberjani hozzászólása Dec 4, 2006 /
 
Sziasztok!

Van egy kis problémám, remélem ti tudtok segíteni.
16f877a első analóg csatornáján szeretnék feszültséget mérni. Külső referenciát használok ami egy REF191 tipusu 2,048 V-os IC. A mérendő feszültség kb 100 mV. Van egy hőelem ami egy AD621 IC-re van kötve. Az AD621 egy erősitő ami 100x -os erősitésre van beállítva. Ez eddig jó is. A problémám az, hogy a 100 mV -ot multiméterrel mérve rendben találom, de a PIC valamiért össze-vissza ugrál 30-40 mV-ot. Próbáltam hidegitő kondikat berakni de nem segített. Az ADCON0 = $5, ADCON1 = $85.
Nem tudom mi lehet a baj. Van ötletetek?

Köszi:

cyberjani
(#) Tomee válasza cyberjani hozzászólására (») Dec 4, 2006 /
 
Én igy csináltam és nekem nagyon satbilan azt méri amit kell.
Próbálj meg tőbb mérés átlagát venni.
Én próbáltam 16 és 32 mérés átlagával is és nem sok külőnbség volt. Néha-néha becsúszik egy kicsi hiba.

névtelen.jpg
    
(#) Norberto válasza cyberjani hozzászólására (») Dec 4, 2006 /
 
Szerintem az is megoldás lehet (de legalább pozitívum), ha a kellő időnél is többet vársz a mérések között, magyarul lelassítva vezérled az AD-t...
(#) napalm válasza watt hozzászólására (») Dec 4, 2006 /
 
Nem segitett probaltam tobbfelekeppen is, de semmi.
Kezdek arra gondolni, hogy nem jo maga a panel rs232 resze. (Mondjuk 2 panel van, 2 ugyanolyan, mindketto suket) Hogyan lehetne tesztelni, hogy jo e?
(#) MaSTeRFoXX válasza Tomee hozzászólására (») Dec 4, 2006 /
 
Köszi mindkettőtöknek, nekiesek programozni, majd kiderül mi lesz belőle
(#) kristalycuki hozzászólása Dec 4, 2006 /
 
Sziasztok!

Olyan problémám lenne, hogy hajjaj!!!
Hogy lehetne a legegyszerűbben osztani illetve szorozni olyan számokat amik 3 byte-osak/3 regiszterbe van eltárolva/???
Extra ráadásként az eredményt még ASCII-be is átkéne kódolni!!!
Ha valaki okos megoldást tud azt meghívom
(#) watt válasza kristalycuki hozzászólására (») Dec 5, 2006 /
 
Esetleg ez segíthet:
Alapműveletek
(#) watt válasza kristalycuki hozzászólására (») Dec 5, 2006 /
 
ASCII kérdésedet most veszem észre...
Ha 0-9-ik kell ASCII kódokat előállítanod számok kijelzésére pl. LCD-s, akkor annak menete:
A kijelzendő szám helyiértékein lévő számokat kell előállítani, hogy aztán 48-hoz hozzáadva megkapjuk a 0-9-ig terjedő karakterkódokat. (A 48 a 0 kódja)
A helyiértékek számosságát pedig osztással(kivonások sorozatának számolásával) kaphatjuk meg. pl. a 342 esetében először 100-akat vonunk ki. Ezt háromszor lehet megtenni úgy, hogy ne legyen alulcsordulás. Ha alulcsordulást észelünk, azt már nem számoljuk bele(az a 4. kivonás).
Visszaállítjuk az utolsó kivonás előtti értéket(ami itt 42) és folytatjuk a következő helyiértékkel (10).
A maradék már egyből az egyeseket adja.
Természetesen bármekkora számot át lehet így konvertálni, realtív kevés lépésből.
(#) kristalycuki válasza watt hozzászólására (») Dec 5, 2006 /
 
Oh!

Hát nagyon köszönöm!
Ezzel már talán menni fog!
(#) Tomee válasza kristalycuki hozzászólására (») Dec 5, 2006 /
 
kb 10 hsz-el lejjeb ott a kész szám bontó kód.
(#) kristalycuki válasza Tomee hozzászólására (») Dec 5, 2006 /
 
Hello!

Igen, láttam azt is, sőt, le is tőltöttem, de azt hogy tudnám alkalmazni 3byte-os számra???
(#) watt válasza kristalycuki hozzászólására (») Dec 6, 2006 /
 
Igen itt szokott lenni a gond, mert ha valaki nem érti az elvét a feladatnak, nem tud értelmezni egy kódot. Még az sem biztos, aki érti.

Ezért gondoltam, hogy nem kódot írok, hanem leírom a lényegét. Azt meg akármennyi bájtra lehet értelmezni. Az más kérdés, hogy több bájtból kivonni, ellenőrizni az átviteleket stb. az kicsit bonyolultabb, mint egy esetében, de ezt mindenképpen meg kell ismerni, mert akkor más feladat sem megy.
Kódokat bedobálni nem nehéz, bárhol lehet találni egy rakattal, akár a microchip oldalán is. :yes:
(#) Tomee válasza kristalycuki hozzászólására (») Dec 6, 2006 /
 
Bocsi! Nem figyeltem, hogy neked 24 bites számokkal kell dolgoznod.
De az elv ugyan az amit watt leirt csak én 8 bitesre csináltam.
(#) kristalycuki válasza watt hozzászólására (») Dec 7, 2006 /
 
Hello!

Én értem a lényegét, aszthiszem, de pl, a 2. byte-ra nem tom alkalmazni, mert akkor hamis eredményt kapok!Ugye a 2 byte-on összesen 65536 -ot tudok ábrázolni, abbol nem tudok kivonogatni 10ezret neg 1000-et mert nem fogja értelmezni,mert ugye egyszerre csak 1 byte-ot kezel,amin meg egyszerre csak 256-ot tudok ábrázolni!
Ha meg elvégzem a 2. byte-ra ugyan ezt a módszert, akkor az csak akkor adna hiteles eredményt, ha beszoroznám 256-talNem?

De lehet, hogy mégis csak én nem értem a lényegét, de akkor léccccciii javíts ki!
(#) watt válasza kristalycuki hozzászólására (») Dec 7, 2006 /
 
Igen két bájton 0-65535 érték fejezhető ki. Kivonni belőle 10000-ret a következőképpen lehet:
A 10000 az hexában 2710h
Ekkor a KIVONANDÓ_L = 10h, a KIVONANDÓ_H = 27h
Először a low bájtot(azaz10h)-t kell kivonni a kissebbítendő L bájtjából. Ekkor meg kell vizsgálni, hogy történt-e alulcsordulás. Ha igen akkor a H bájtot csökkenteni kell 1-el, majd alulcsordulást vizsgálni(ha már itt van alulcsordulás, a kissebbítendő már most kisseb, mint 10000 sőt, kisseb mint 16). Ha nincs alulcsordulás jön a KIVONANDÓ_H kivonása a kissebítendő H bájtjából. Ha ekkor ez is alulcsordul, akkor a kissebbítendő kisebb volt, mint a kivonandó, ebben az esetben a 10000-nél. Ez jelzi azt, hogy a következő helyiértékre lehet váltani, miután az utolsó kivonás előtti értéket visszaállítottuk a kissebbítendőben.
A többit korábban tárgyaltuk(számlálni a kivonásokat alulcsordulásig, stb.)
(#) Qxy hozzászólása Dec 8, 2006 /
 
Segítséget kérnék!

Miként kell értelmezni az alábbi sort?


movlw (1<< LCRW)


(Azt értem, hogy számot a 'w'-be, de miért vannak << karakterek?)

A másik ez:


xorlw 6^1


>>>>
(#) kristalycuki válasza watt hozzászólására (») Dec 8, 2006 /
 
Hello!

Lehet valami abban a mit írtál!
Lehet, hogy csak nem gondoltam át eléggé!:yes:
Azért köszi!
Most megpróbálom magamtól!Hátha sikerül!
(#) MaxPower hozzászólása Dec 9, 2006 /
 
Sziasztok!

Nemsokára belekezdek a PIC -es próbálkozásaimba. 16f84 -esen akarok tanulni, és a kérdésem az lenne, hogy a kimenetei mekkora terhelést bírnak el? pl. egy standard led-et elbír? (ja és arról a szlovák oldalról megépítettem a JDM programozót, és az ugye nemműködés esetén sem teszi tönkre sem a pc-t sem apic-t, ugye?)
(#) Balázs válasza MaxPower hozzászólására (») Dec 9, 2006 /
 
Szia!

A PIC kimenetei elbírnak egy normál fényű LED-et, de a nagyobbakhoz már tranzisztoros kapcsolófokozatot érdemes építeni.

A programozó természetesen tönkreteheti mind a PC-t (pl. rövidzárlat), mind a PIC-et (pl. helytelen bekötés), ezért többször nézd át az áramkörödet, hogy jól kötötted-e be.
(#) MaxPower válasza Balázs hozzászólására (») Dec 9, 2006 /
 
köszi, a választ, akkor majd mindent figyelmesen átnézek, próbapanelnak meg csinálok olyat amin van led, meg nyomógomb
(#) miklajos válasza MaxPower hozzászólására (») Dec 9, 2006 /
 
Ha még nem késő akkor inkább 16f627A vagy 628A-t használj! Olcsobb is és több periféria vanbenne a f84 és f627A közti különbség leírása meg van a chipcad honlapján.
(#) MaxPower válasza miklajos hozzászólására (») Dec 9, 2006 /
 
Még pont jókor van!

Én szívesen választanám a 628A-t, de ide az van írva, hogy csak 16f8x -t tud progizni. Ha biztos forrásból tudod, hogy a 628A-t is viszi, akkor szólj és olyat veszek.
(#) MaxPower hozzászólása Dec 9, 2006 /
 
Esetleg megtudná valaki mondani, hogy a típusok végén szereplő betűk mit jelentenek? pl. 16f84 és 16f84A között mi a különbség?
(#) Tomee válasza MaxPower hozzászólására (») Dec 9, 2006 /
 
Az "A" a sima (nem "A"-s) tipusok javított változata.
Néha előfordulhat, hogy többet tud minta sima zestvére.
(#) miklajos válasza MaxPower hozzászólására (») Dec 10, 2006 /
 
Természetesen nem garantált hogy tudod égetni vele, de a meghajtó programja (Ic-Prog) tudja kezelni a 628A-t. A soros porti programozók nál (ami a soros portról veszi a tápot) előszokott fordulni hogy néha nem rendesen éget!
(#) watt válasza miklajos hozzászólására (») Dec 11, 2006 /
 
Igen finoman fogalmaztál, amúgy egyetértek. Nem is értem, hogy mernek ilyen égetőket publikálni. Annyi baj van velük, hogy nem győzöm lebeszélni róla a fórumtársakat(természetesen nem csak ezen a fórumon jönnek elő ilyen problémák). Még a megfelelően kiépített égetőkkel is előfordul, hogy nem működnek rendesen, pl. legutóbb egy 7406-os kimenete romlott el, ami néhány évig működött! Ha direktbe lett volna kötve a PIC a PC-re, akkor nem a 7406 nyekkent volna le, hanem a PIC! Egy normális programozó költsége alatta van egy jó PIC árának, nem érdemes ezen spórolni. De már azon túl vagyok, hogy meg lehet győzni az embereket, mert csak az egyszerűségere mennek, és aki ilyet épít, sajnos nem ért hozzá annyira, hogy meg tudja ítélni, hogy amit ajánlanak neki, az nem jó. Ezért nem is lehet rájuk különösebben haragudni, esetleg csak sajnálni. Ja és ismét elmondom, hogy akinek működik JDM annak szerencséje van, mert olyan a PC-jének COM portja, ami éppen elég Vpp-t termel. De nagyon sok olyan is van, ami nem, még a módosított JDM-el sem. Én nem ajánlom senkinek. Csak a szívás van vele, mert nehéz eldönteni, hogy a program rossz, vagy az égető szívat. Nem kimondottan kezdő barát helyzet!
(#) miklajos válasza watt hozzászólására (») Dec 11, 2006 /
 
Igazad van a sajátépítésű programozók nagy hátránya hogy nem lehet eldönteni hogy a program rossz vagy a programozó. Az én esetem az volt hogy építettem egyet (ProPic) egy ideig minden ok. de utánna egymásután 3 16F628A-t tett tönkre, ezután vettem egy PICKIT2-t valami 10.000 ért. Mostmár a dolog úgyjárja hogy nagyon sok PIC-et lehet vele programozni (10, 12,16, 18, 24 sorozatút) és lassan beintegrálják a MPLAB-ba is.
Következő: »»   9 / 1319
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