Fórum témák
» Több friss téma |
Nem nagyon ismerem a PIC assemblyt, de ha 8 biten 130-bol kivonsz egyet, akkor az eredmeny bizony negativ lesz. 126=126, 127=127, 128=-128, 129=-127, 130=-126 ... 255=-1
A statusz regiszter negativ bintje az az eredmeny 7. bitje lesz a muvelet utan.
Ezt kifejtenéd bővebben? Én sem értem, hogy miért lenne ez így, pláne, hogy a windows számológépe sem mutat negatív eredményt.
Nyolc bites adatot többféleképpen lehet értelmezni. Ha decimálisan értelmezzük, akkkor előjeles (-128..127) vagy előjel nélküli (0..255) lehet.
Mitől függ az, hogy előjeles e lesz van előjel nélküli?
C-ben signed "jelölt" negatív tartománya is van unsigned nem jelölt csak pozitív tartomány
assembly-ben nem tudom, hogyan különböztetjük meg. A hozzászólás módosítva: Dec 22, 2014
Ez értelmezés kérdése. Az lesz, aminek a program kezeli.
Idézet: Nem kell eroltetni az ilyen forditast. A signed ebben az esetben előjelest jelent, nem jelöltet. „C-ben signed "jelölt"”
Hát dombon ülő fűcsomó legyek ha értem. Ha movlw-vel betöltök egy számot a w-be, előjel nélkülit, akkor az nem biztos, hogy pozitív számként lesz értelmezve?
A binaris szamabrazolasban a szamokat vagy elojel nelkul ertelmezzuk vagy elojelesen. Ha elojel nelkul, akkor az abrazolhato szam 0 es 2^n-1 koze esik, ahol n a bitek szama. Azaz 8 bit eseten ketto a nyolcadikon minusz egy, tehat 255 a maximalis ertek. Ha kettes komplemens szamabrazolast alkalmazol, akkor a legfelso helyierteku bit az elojel. Amig az elojel bit 0, addig a szam pozitv (vagy nulla). Ha az elojel bit 1, akkor a szam negativ.
A movlw utasítás esetében nincs értelmezve az előjel, csak bitek vannak.
Próbálj szemléletet váltani, nem számot töltesz, hanem bitsorozatot. Értelmezni meg te értelmezed annak, ami pillanatnyi hangulatodnak megfelel. Az előjel kérdés csak az aritmetikai utasítások esetén jön a képbe. (Valamint, -hogy megkeverjelek , a movf utasításnál.) Az utasításkészlet ismertetésénél mindig megadják, hogy az aktuális gépi utasítás módosítja-e a STATUS regisztert. Ha igen, akkor az operandus a -128..127 tartományba esik. Ha nem módosítja, akkor 0..255 tartományba kell elképzelned. A fordítóprogram magasról tesz arra, hogy egy konstans szám, ASCII karakter, vagy bitsorozat. Átalakítja egy bitsorozattá, és azt a körülményeknek megfelelően felhasználja. Így le lehet írni azt is hogy '0'+3, amiből '3' lesz. Azaz, a nulla karakter megfelelőjéhez hozzáad hármat. A hozzászólás módosítva: Dec 22, 2014
Idézet: Ezt szerintem gondold at ujra, mert ennek igy semmi ertelme. Csak osszezavarod a kezdoket. „Az utasításkészlet ismertetésénél mindig megadják, hogy az aktuális gépi utasítás módosítja-e a STATUS regisztert. Ha igen, akkor az operandus a -128..127 tartományba esik. Ha nem módosítja, akkor 0..255 tartományba kell elképzelned.”
Nem hasal az el szerintem mert nem is működött. Bár kitudja...
Jobban bele kellene mászni a dologba, de sajnos most ezer más dolog is van.. Amúgy engem is érdekel a dolog szóval nem kizárt, hogy majd megnézem a későbbiekben..
Nagyjából értem. De akkor mi a megoldás, hogy mondjuk a fenti kód helyes végeredményt adjon?
Idézet: „N: Negative bit This bit is used for signed arithmetic (two’s complement). It indicates whether the result was negative (ALU MSB = 1). 1 = Result was negative 0 = Result was positive” A fenti kódod helyes az ALU N bitje egy lesz ha , 127 felett (MSB = 1)vagy mert általában a digitális matematikánál és PIC-eknél is így jelölik a negatív előjelet, hogy az MSB 1 lesz. Ha neked számít, hogy negatív vagy nem aszerint kell figyelni STATUS regisztert, de ha te 127-nél és -128 nagyobb intervallumon akarsz számot ábrázolni akkor két byte-ra lesz szükséged mert −32,768 és 32,767 között tudsz számot ábrázolni előjelesen. A hozzászólás módosítva: Dec 22, 2014
Hello, szeretnék egy kis segítséget kérni, hogy c-ben írt programot milyen fejlesztő környezettel tudom meg nyitni( Mplab-al lehetséges-e). Válaszokat előre is köszönöm .
A hozzászólás módosítva: Dec 22, 2014
Akár a Jegyzettömb is ki tudja nyitni, normál szöveges fájl, csak "c" kiterjesztéssel.
A hozzászólás módosítva: Dec 22, 2014
A 'C' forrásfájlt akár egy szövegszerkesztővel is meg tudod nézni, de lefordítani pl. C18 ( MPLAB alá installálva ! ) !
Szerkeszteni szeretném és újra fordítani hex-be.
A hozzászólás módosítva: Dec 22, 2014
Szoval amit leirtak elottem igy igaz, de azert tudni kellene az eredeti C file milyen C, es milyen verzioban irodott. Mert sajnos igen negy elteres van a C forditok, es azok kozott a sajat variansai kozott is. Estleg ha lathatnank az eredeti forrst, tobbet lehetne mondani.
A hozzászólás módosítva: Dec 23, 2014
Sziasztok a következőben szeretném a segítségeteket kérni:
Arról lenne szó, hogy már jó ideje "programozok" PIC -et, de csak szimulátorban és már unalmas volt a monitort bámulni ezért úgy döntöttem, hogy építek egy PIC-el vezérelt áramkört... Össze is raktam pár napja, ami egy nagyon egyszerű feladatot lát el: vannak végálláskapcsolók amelyek a Pic lábaira csatlakoznak bemenetként , valamint vannak relék amik a pic "kimenetnek definiált " lábaira csatlakoznak. Na és a problémám a következő ha az áramkör felett elviszem a kezem vagy a közelében akkor összevissza csinál mindent "megzavarodik teljesen". Én arra tippelek hogy a kapcsolókat a bemenet felől egy felhúzó ellenállással kéne ellátni illetve a + - táp közé egy közel 100nF kondenzátor szükséges lenne. Ezen kívűl gondoltam arra is még, hogy a relék tekercséhez kellene egy dióda az induktív visszarúgás ellen. Légyszíves írjátok meg mi a véleményetek, ötletetek , mert nem tudom biztosra mi segítene. Röviden tömören ( most úgy néz ki az áramkör Pic kapcsolók(+tápot kapcsolják a picre) relék ) Az egész egy vezeték kupac ,mert a kapcsolókat a pictől távol kellett elhelyeznem , tehát az egész a vezetéken keresztül tökéletesen tudja szedni a zavarójeleket
A sárga keretben lévő dolgokat tarts be. A kapcsolókról jövő vezetékeket a picnél húzd le testre ellenállással. A reléket én mindég tranzisztorral szoktam kapcsolni, a dióda mindenképpen kellene bele.
Értem , azért köszönöm a segítséget , pihentetem én is
Köszönöm brato Lenne még két kérdésem :
1.Mekkora ellenállást alkalmazzak ? A tápom: 4.75 400mA 2. Miért jobb ha tranzisztorral kapcsolod a reléket ?
1. szerintem jobb ha a bemenetet magas szinten tartod mondjuk 4k7 ellenállással és a gombbal húzod testre
2. egy relének elég nagy az áramfelvétele, ha többet használsz akkor könnyen túlterhelheti a pic-et. De tranzisztorral megoldható nem 5 V-os hanem mondjuk 12 V-os relé használata is.
Én relétől függően tennék egy optocsatolót mert nem csak "nagy áram" kell a relé kapcsolásához hanem mikor lekapcsoljuk a relét érdekes dolgok jönnek le a relé tekercséről.
A kapcsoló bekötésétől függően kell le és felhúzni általában ez 4k7-10k de láttam már gombot fel vagy lehúzva 2k2-val. Az sem biztos hogy kell külső felhúzás mert az újabb típusoknál van belső felhúzás(8 bites PIC-nél nem láttam még lehúzást de 16 bites PIC-nél láttam azt is). A hozzászólás módosítva: Dec 23, 2014
A rele tekercsevel parhuzamosan kell tenni egy diodat, forditott polaritassal. Optora semmi szukseg.
Nem kell alkatrész temetőt csinálni a projectből. Bár nem tudom mi célt szolgál a berendezés, de ha eddig csak szimulátoron gyakorolt akkor ez is tanuló project tehát elég a tranyó, de mint killbill mondja dióda is elég lehet. A kapcsoló meg valóban bekötéstől függ, de a GND mindíg biztosabb mint a pozitív sarok, ezért szokták inkább felhúzni, persze ha jól van tervezve az ák akkor a másik verzióval sincs semmi gond.
A hozzászólás módosítva: Dec 23, 2014
Itt az oldalon Topi által készített órának( linkben benne van-a program forrás) a programját szeretném majd újra fordítani mert szeretném a hőmérséklet mérést ki venni majd belőle. Bővebben: Link
|
Bejelentkezés
Hirdetés |