Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszönöm, logikus. Én közvetlenül akartam megoldani, legalábbis ez irányban gondolkodtam. De még ezeket a "x6 /10" et is körbe kell járnom, nem osztottam / szoroztam még sosem kontrollerrel. Fejben még elmegy de egy PIC el... :no:
Esetleg van erről valami konkrét példa valahol..? Mert pl (ezt az oldalt használom általában..) itt semmi nincs az osztásról / szorzásról.
Én ennyit tudok erről. C nyelven meg * és /. A barátunk meg ezt mondja.
Hálás köszönetem, bár egy kukkot nem értek belőle...egyelőre. De van ilyen topic is itt helyben.. Köszönöm a segítséget! :yes:
Szerintem az rrcf-et a 16F-os sorozatban nem lehet használni.
Ez nagyon így lehet mert sehol sem találom az utasítás készletben.
6-al szorzás például: megszorzod 2-vel és 4-el ( ezek csak shiftelések ) és a kapott eredményeket összeadod !
Emlékeim szerint Hp41C kollégának volt többször is jó ajánlata ilyen rutinokra, keress rá ! Steve
A szorzást összeadással és balra léptetéssel, az osztást pedig kivonással és jobbra léptetéssel lehet megoldani. Bővebben:
Szorzás 6-tal: X*6=X*4+X*2=(X<<2)+(X<<1) Osztás 10-zel (8 bites) (X/10=Y): 0. Y=0 1. X-(10<<7)>=0 ? Ha igen: X=X-(10<<7), Y=Y+(1<<7) 2. X-(10<<6)>=0 ? Ha igen: X=X-(10<<6), Y=Y+(1<<6) ... 8. X-10>=0 ? Ha igen: X=X-10, Y=Y+1 Röviden ennyi. (Az osztás maradéka az X válozóban marad.)>>>>>>>>>>>>>
Persze, hogy működik... Csak ez működik, úgy hívják rrf ill. rlf. A másik (rrncf, rlncf) a C nélküli nincs a 16F -eken...
Hi !
Nem ismerem a VC -t, én BCB 6 ot használok. Na annak a COM port komponensének is van openje, mint ahogy ebben a példában is találtam egy opent: serialPort1->Open(); Ez előtt kellene beállítani szerintem a serialPort1->BaudRate=57600; -al.
Óhh, a bőség zavara megoldás fürtökben...Köszönöm mindenkinek.. :yes:
Idézet: Köszönöm a tippet! Valami ilyesmi lesz, mert egy másik programban (ez a változatosság kedvéért VC++ 2005 és kézzel, legördülő listáról választható a baudrate) ilyet találtam:„Ez előtt kellene beállítani szerintem a serialPort1->BaudRate=57600; -al.”
Sziasztok ! valaki használ oshon szimulátort win7 alatt ?
Nekem ugyanis az a problémám hogy hiába állítom a kompatibilitást win xp módba akkor sem birom használni az asemblert a tols menüben. minden alkalommal valamiféle run-time error hibával leál és az egész program bezárul. csak szimulálni tudok benne módosítani nem. és ez felettébb idegölő
Feltelepítettem a VC++ 2008 Express-t és kipróbáltam. Működik a javaslatod! Mégegyszer köszönöm.
Rögzítsük az utókornak: Microchip Application Library, USB szekció, Device - CDC - Basic Demo mellett van egy minta alkalmazás PC-re: PC Dynamic Software Example Ez sokkal robosztusabb kapcsolatotot biztosítt, mint a korábbi CDC Terminal, mert a kapcsolat megszakadása esetén automatikusan újra kapcsolódok a VID=0x04D8 PID=0x000A eszközhöz (ez a Microchip USB device CDC demók azonosítója). A Form1.h állományban az alábbi apró változtatással lehet beállítani a kívánt adatsebességet (az alapértelmezett 9600 helyett):
Használt/talált már valaki C++ fordítót 32bites PIC hez?
Van olyan egyáltalán?
A TI/Freescale chipjeihez már láttam, ezért kérdem talált-e valaki PIC hez, esetleg tud-e a létezéséről...
Most írtam programot először 12F-re. Nagyon zavaró a CPFSEQ, CPFSLT, CPFSGT, TSTFSZ stb. utasítások hiánya...
A program rém egyszerű, mégsem működik. A TMR2 megszakításnál a flagbit törlése után a decfsz Számláló sornál a Watch ablak szerint nem csak a Számláló regisztert dekrementálja, hanem a Kitöltési_tényező-be is beírja ugyan azt az értéket ami a Számláló regiszterben van. Miért? Nagyon érdekes.
Szia!
- Ne használj ékezetes betüket a szimbólumok nevében, - Vedd ki a megszakítás visszatéréséből a bsf INTCON, GIE -t, a retfie megcsinálja. Idézet: „MPLAB C forditoja az nem jó ?” Nem, mert C++ volt a kérdés. Idézet: Ha nem írsz a változónév után res 1-et, akkor ugyanaz lesz a címe a két változódnak! „a Watch ablak szerint nem csak a Számláló regisztert dekrementálja, hanem a Kitöltési_tényező-be is beírja ugyan azt az értéket ami a Számláló regiszterben van. Miért?”
5V a PIC12F615 tápja. A bemenetként beállított lábakon kb 2,2V-ot mérek, pedig elvileg bekapcsoltam a felhúzó ellenállásokat. Mit csináltam rosszul? Itt van újra a kód:
Sziasztok.
Lenne egy kérdésem, de előre is elnézést ha túl banális. Azon gondolkodtam hogy érdemes e az utolsó program helyre betenni egy reset vektorra való ugrást, az esetleg elkószált programom vissza terelgetésére? Vagy nincs semmi értelme mert egy jól megírt programnál ilyen nem fordulhat elő. Válaszokat előre is köszönöm. Üdv nyemi.
Szia!
De van értelme. Magam részéről az üresen marad program memória területet mindig feltöltöm ilyen visszaugratással, de ez nem feltétlenül a reset vektor, hanem egy olyan pont, ahonnan a program értelmesen folytatódhat, akár úgy, hogy a külső környezet észre sem veszi, hogy valami "elkószálás" történt.
Köszi a választ.
Szóval akkor előfordulhat . Gondolom zavart környezettben még nagyobb az esély? Hmm. Lehet hogy kénytelen leszek "rászokni" Watchdog-ra. Mert eddig hanyagoltam. Még egyszer köszönöm. Üdv nyemi. Idézet: „Azon gondolkodtam hogy érdemes e az utolsó program helyre betenni egy reset vektorra való ugrást, az esetleg elkószált programom vissza terelgetésére?” Nincs ertelme, a program szamlalo ugyis tulcsordul, es igy a programszalad a reset vectorra fog csorogni. Ha ilyen tortenik az mar regen rossz, debug eseteben erdemes valami debug kodra ugratni azzal a technikaval amit Peter65 emleget, eles kornyezetben pedig erdemes azt csinalni amit Peter65 emlegetett -- en azzal toldanam meg, hogy amennyiben ilyen tortenik akkor minimum egy LED-et kigyujtanak ami kikapcsolasig egve marad, igy tudom, ha a felhasznalonal valami nagy galiba tortent... Lehet akar valami szamlalot is bele tenni es monitorozni, hogy hanyszor tortent ilyesmi. De ahogy mondod a watchdog is es ez is csak egy biztonsagi intezkedes, ha watchdog kiidozit vagy ha melle ugrasz akkor mar regen valami nagyon nem stimmel a firmware-edben. |
Bejelentkezés
Hirdetés |