PIC PROGRAMOZÁS - ALAPOK
1/6
Audio
Digitális
Főmenü Általános: Címlap Kapcsolat Kereső Partnerek Elektronika: Fórum Kapcsolási rajzok Letöltések Cikkek: Hírek a technika világából PIC iskola Kapcsolások
http://kapcsolasok.hu/digitalis/86-pic-programozas-alapok
Fény
Hő
Jármű
Kezdő
Látványos
NYÁK készítés
PIC iskola
Tápegységek
minőségű LED GU10 4W SMD újdonság - alumínium test hűtés 3 óra naponta világít akár 40 évig www.ledhut.hu új LED szalagok érkeztek Legújabb, LED szalagok (5050 smd) nagyker áron, extra kedvezmények LaBelle.hu led tápegység Szűk árrés, Széles választék! Ne hagyja ki.
www.tapegysegaruhaz.hu
PIC PROGRAMOZÁS - ALAPOK
Olvasóink értékelése: Elégtelen
/ 119
Kitűnő
Írta: Regényi Dávid 2010. április 07. szerda, 13:35
Belépés
Én most nem szeretnék belemenni a PIC lelki világába, felépítésébe, erre már született éppen elég cikk. Észrevettem, hogy egy program megírását nem magyarázzák el kellő képpen, így azt elsőre megérteni szinte lehetetlen. Ezért én kicsit hétköznapibban próbálom megközelíteni a dolgot, azzal a céllal, hogy az abszolút kezdők is megértsék, miről is van szó.
Felhasználónév
Első nekifutásra töltsük le az OSHON PIC simulator szoftvert, ide kattintva.
Jelszó Emlékezzen rám
Elfelejtette jelszavát? Elfelejtette felhasználónevét? Fiók létrehozása
Jelenlévők Oldalainkat 30 vendég böngészi
Kedvenc letöltések Sprint Layout NYÁK tervező (Magyar) (11992) CircuitMaker 2000 (9689) Tina pro 60 en (8516) Tranzisztor katalógus 1. (8124) IC prog (7529) DipTrace áramkörtervező program (7285) Transzformátor méretező program (6883) WinISD pro (6877) Hasznos kis programok (6800) Eagle 5.3.0. (6679)
Legtöbbet olvasott PROPELLER CLOCK LABOR TÁPEGYSÉG LED-ES KIVEZÉRLÉSJELZŐ NYÁK KÉSZITÉS VASALÁSSAL ELEKTRONIKUS INDEXRELÉ MOTORHOZ PIC PROGRAMOZÁS (ÉGETÉS) OLCSÓ LÉZERSHOW HÁZILAG OLCSÓ AKKUŐR AUTÓBA DRAWDIO EGYSZERŰ, SZABÁLYOZHATÓ DC TÁPEGYSÉG
Ami nekünk ebből lényeg az a Mikrokontroller, illetve a Clock Frequency. A mi esetünkben ez legyen a 16f877-es illetve 4 MHz-es Kvarc. Ctrl+A paranccsal, behozhatjuk az asm ablakot, ahol elkezdhetjük a programunkat írni. Amit fontos tudni: Pontosvesszőt, ( ; ) nem veszi figyelembe program futásakor. Azaz ha csinálunk egy ilyen sort: ;xy-nak hívnak, szeretem az elektronikát stb... Egész nyugodtan odaírhatjuk, ettől nem vétettünk hibát. A PIC nem fogja figyelembe venni az ilyen sorokat, egyszerűen átugorja. Egy pdf állományba összeválogattam a fontosabb utasításokat ez letölthető ITT. Nem húzom tovább az időt, kezdjük el írni a programunkat. Program:
Hirdetés
Első dolgunk átgondolni mit is szeretnénk. Az első sorban lefoglaltam egy memóriaterületet annak, hogy itt tudjak a későbbiekben számolni. Ez a számolás azért kell, hogy a LED-ek ne csak felvillanjanak, hanem egy darabig világítsanak is. Így lesz tulajdonképpen látható a
2012.03.15. 17:43
PIC PROGRAMOZÁS - ALAPOK
2/6
http://kapcsolasok.hu/digitalis/86-pic-programozas-alapok
folyamat. Ehhez az EQU parancsot használtam, és a 20-as memóriaterületet foglaltam le. Az (A) betű csak az elnevezése. Oda bármit írhattam volna, de mi most írjunk A-t. ORG 0 paranccsal alaphelyzetbe állítom a PIC-et, ezt minden program elején tegyük meg. GOTO utasítás oda ugrik, ahova megadom neki. Jelen esetben a BEÁLLÍTÁSOK-hoz fogunk ugrani, ahol definiáljuk a ki illetve bemeneteinket.
Ha még nem tettem volna, akkor most elmondom, hogy a különböző programrészeket érdemes valamiféle kép elválasztani egymástól. Ezt én így szoktam: ;--------------, de ezt mindenki fantáziájára bízom, a lényeg hogy a pontosvessző is ott legyen. Első paranccsal tulajdonképpen semmit nem csinálok, megszokásból írom, letörlöm a B portot, hogy az is "alaphelyzetbe" kerüljön. BANKSEL utasítással a BANK-ok között tudunk váltani. Erre azért van szükség, mert ahhoz, hogy kimenetnek vagy bemenetnek definiáljam a port-okat, a BANK1-be kell lépnem (ezt adatlapból meglehet nézni). A TRISB a BANK1-be van, így ha a BANKSEL utasítás után a TRISB-t írom, jó helyre kerülök. Akkor kimenet egy láb, ha azt 0-ba helyezem. Ezt meglehet tenni lábanként, is: BCF TRISB,0 Ekkor a portb, 0 lesz kimenet. Ezt viszont 1 paranccsal is megtehetem úgy, hogy törlöm az összest, így tulajdonképpen mindet 0-ba állítottam, ezért az összes kimenet lesz. Ahhoz, hogy tovább tudjak menni, vissza kell lépnem BANK0-ba, ezt a már említett BANKSEL utasítással tudom megtenni, mellé pedig a PORTB-t írjuk. Ehhez a programhoz mindent beállítottunk, amit kellett. GOTO Program utasítással továbbugrok a Fő programomhoz.
A program első ránézésre tűnik csak bonyolultnak, ha kitárgyaltuk barátságosabb lesz. Ebből tulajdonképpen 3 sort kell megbeszélnünk, bizonyára észrevettétek a többi csak ismétlődik. A PIC minden tevékenységet egy úgynevezett Munkaregiszterben hajt végre, legalább is ezen keresztül kell megtennünk,amit szeretnénk. Ennek a jele: W MOV utasítás mozgatást jelent, az F pedig Flag-et, aminek az értéke 1. Első utasítással, bemozgatunk munkaregiszterbe egy bináris számot. Látható, hogy ez 4 bites, ebből már lehet következtetni, hogy ez valószínű a 4 kimenetünk lesz. A következő, amit meg kell tennünk, hogy kimozgatjuk a munkaregiszter tartalmát a B portra. Ha ezt megtettük, a PIC ki fogja ezt szépen sorba helyezni, RB.0-RB.3-ig. Tehát : RB.0 1 RB.1 0 RB.2 0 RB.3 0 Ezután behívunk egy úgynevezett szubrutint, ez a fő programtól független programrészlet, amelyet a CALL utasítással tudunk behívni a programunkba. Jelen esetben a rutin neve IDŐ, ezért lesz az utasítás: CALL IDŐ
Itt bemozgatunk egy Decimális számot a munkaregiszterbe, onnan pedig átmásoljuk a programunk elején erre a célra lefoglalt A nevű memóriaterületünkre. A DECSZ utasítás azt csinálja, hogy addig vonogat egy értékből, míg az 0 nem lesz, és ha 0, akkor átugorja a következő utasítást. Jelen esetben az A értéke 50. Ebből levon 1-et, az eredmény nem 0, ugrik a következő utasításra, ami visszairányítja újra a DECFSZ-hez. Az X helyére bármi írható, ez jutott először eszembe. Ha szépen levonogatott az 50-ből mindaddig, míg az eredmény nem lett 0, akkor átugorja a GOTO utasítást, a következő pedig a visszatérés a szubrutinból=RETURN. Ezzel vége is a programunknak, de a végére ne felejtsük odaírni az END -et. Ha mindent pontosan így írtatok be, és követtétek a tanácsaimat, akkor nyomjunk F8-at.
2012.03.15. 17:43
PIC PROGRAMOZÁS - ALAPOK
3/6
http://kapcsolasok.hu/digitalis/86-pic-programozas-alapok
Ha elmentettük, lefuttat egy hibakeresést. Ennek természetesen a következőképp kell kinézni.
Nézzünk egy példát, hibára.
Ami ebből a lényeges, hogy a 17. sorban van a hiba. Odamegyünk a 17. sorhoz, és megnézzük mit rontottunk.
Én most azt rontottam el, hogy a TRISB utasítást elgépeltem. Ha ezt javítjuk nem lesz hiba. F8 paranccsal azonnal be is töltjük a szimulátorunkba a megírt programot, illetve le is fordítja hex kiterjesztésbe. Nyissuk meg a Tools menüből a LED panelt.
Remélhetőleg ez alapbeállításként a B porton van, de ha mégsem állítsuk be.
PORTB,0 feliratra kattintva előjön a jobb oldali ablak. A szürkével kijelölt beállítások az aktívak azaz PORTB és a 0. bit. Miután beállítottuk az összes LED-et a megfelelő bit-ekre indítsuk el a szimulációt.
2012.03.15. 17:43
PIC PROGRAMOZÁS - ALAPOK
4/6
http://kapcsolasok.hu/digitalis/86-pic-programozas-alapok
Rate menüben állítsuk be Extrém gyorsra a sebességet, illetve indítsuk el a szimulációt F1-el vagy menüből kiválasztva. Köszönöm a rám szánt időt, mindenkinek jó PIC-ezést kívánok! Regényi Dávid Hozzászólások << Begin < Előző 1 2 Következő > Utolsó >> Reed - Pic
Hozzáadás
Keresés
|212.40.75.xxx | 2011-11-04 14:09:05
Ez mind szép és jó, csak azt nem értem beégetve miért nem működik? Mi az ami még nincs benne a programban? PIC inicializálása, órajel, stb ? Mert ennek a valóságban is működni kellene. Ott meg csak mind a 8 led világít folyamatosan. A szimulátoron viszont jól megy. Ötlet? bencsati
|94.248.147.xxx | 2011-08-18 22:55:30
Végre értek egy példát, átírtam 16f690-re, a szimulátorban megy is, de beégetve nem... Ezt viszont nem értem! LVP demo board, LED-ek a portc0-portc3 -ra kötve. bencsati - ez igen
|94.248.147.xxx | 2011-08-18 19:41:13
Ez Igen! Így néz ki egy igazi oktatás, melynek címe PIC kezdőknek. sokat kínlódtam a Low Pin Demoboardommal egy 16F690 társaságában, de hiába... Most fogom magam és nekiszaladok újra! Mondanám, hogy hasonló, egyszerű mintaprogramokat még még méééég! Köszi! Ricske
|91.120.37.xxx | 2011-08-08 15:33:31
Úgy tudod kiválasztani, hogy először bezárod az assembler ablakot (amibe a programsorokat írod) bezárod (ha nyitva van), és utána a fő ablakban Options és ott a Select Microcontroller és a Change Clock Frequency fülekkel lehet beállítani. Gábor - *
|81.182.218.xxx | 2011-07-04 16:09:02
Engem az érdekelne hogy tudom átállítani a PIC Simulator IDE programban a mikrokontroller típusát, vagy akár az órajelét? Mert hiába kattintok rá semmi :S Ádám
|87.97.2.xxx | 2011-05-17 22:26:11
Üdv! Az lenne a kérdésem, hogy ezzel a programmal lehet 16f628a uC programozni, vagy csak 16f877-et? Ha igen, akkor hogyan? Előre is köszönöm a válaszokat! Ádám ORZMAAG
|79.120.133.xxx | 2011-05-05 11:12:40
Azt elfelejtettem, hogy nincs LTP port a gépemen. ORZMAAG
|79.120.133.xxx | 2011-05-05 10:33:41
Üdv mindenkinek, én is kezdő vagyok, de van egy kis programozás ismeretem. Letöltöttem a programot, tetszik a dolog. Két (a témában jártasaknak könnyű) kérdésem lenne: - Ha itt megírok egy programot, és hex kiterjesztéssel elmentem, akkor milyen programmal érdemes feltölteni a programot a pic-re és hogyan? - továbbá milyen elektronika kell a pic köré? Gondolom a táp és a kvarc nem elég, vagy mégis? Az világos, hogy a kimenetek, hogy kell kezelni elekronika ügyileg. Esetleg egy kapcsolási rajzot ha adna valaki az lenne a legjobb. Köszönöm. Cruelhunter - Rotate
|84.3.216.xxx | 2011-02-08 12:05:07
Szia! Sok évvel ezelőtt látam asm kódot de nekem úgy rémlik hogy valami bitrotációs dologgal oldottuk meg anno még PC-n. A PIC-nek is tudni kéne a bitrottate dolgot... Jól gondolom? tatan
|89.134.174.xxx | 2011-01-20 15:34:01
2012.03.15. 17:43
PIC PROGRAMOZÁS - ALAPOK
5/6
http://kapcsolasok.hu/digitalis/86-pic-programozas-alapok
még csak 9 éves vagyok de érdekel az egézs.le írnád részletesebben az egész pic-et? herki
|62.201.120.xxx | 2011-01-19 22:52:24
Szia. A lednek a fényerejét, hogy bekapcsoláskor szépen lassan kezdjen el világítani, hogyan lehetne PIC-el megoldani. Úgy gondoltam a frekvencia változásával meglehetne oldani, de azt úgy megírni hosszadalmas bonyolult lenne. Meg még aszt szeretném még kérdezni milyen könyvet tudnál ajánlani a PIC programozásához. katona_m - automata villanykapcsoló
|Registered | 2010-10-20 17:04:53
Sziasztok! Először is köszönöm a rövid kis áttekintést, nagyon sok dologra rávilágított, de van még néhány homályos folt. Én szeretnék egy automata villanykapcsolót megvalósítani, és a kivitelezésen gondolkodva pic-es vezérlésen agyalok hogy megvalósítható vele, szerintetek jó helyen kapisgálok? Köszönöm! tango
|Author | 2010-10-08 19:00:48
jaj és nem mondjuk le kérem az assemblyt tud az is egy két trukkot tango
|95.102.137.xxx | 2010-10-08 19:00:08
én most tanulok ilyet (asm-ben) és mongyuk elsore kicsit nekem is nehéz volt megérteni ... de sikerult méghozzá eléggé jol.... kiprobaltam ezt a programot és elsore azt hittem hogy nem mukodik... átirtam az A-t 01fH-ra és egybol láthato lett a dolog jaj és egy megjegyzés: én ugy tanultam hogy az EQU az az hogy az A szam értéke(EQUAL vagy hasonlo szobol) szoval az elején kicsit rosszul fogalmaztál, mert jo hogy arra fogjuk felhasználni de nem teljesen volt igaz az állitás.. bocsánat a kotnyeleskedésért Főnök - cikk
|195.199.152.xxx | 2010-09-30 13:51:17
cső! szerintem nem annyira egyértelmű, és nem is lehet így PIC programot írni mindegyik fejlesztőkörnyezetben, sok infó kell a cikk megértéséhez. Ez a véleményem, de egyébként tetszik az oldal, és a többi cikk király. cső mjoc
|213.181.192.xxx | 2010-09-09 20:19:12
Nem is gondoltam volna, hogy ha érthető, akkor ennyire "egyszerű"./Legalábbis annak tűnik./Király !!! Köszi Dávid ! aderka Igazán nincs mit!
|Author | 2010-06-05 15:33:47 Örülök, hogy segíthettem!
Öregember
|78.153.110.xxx | 2010-06-04 05:08:27
Üdv! Végre nekem is sikerült megérteni az asm programozás alapjait. Köszönet az írónak a közlésért és az érthető magyarázatokért. Üdv:Zoli aderka
|Author | 2010-05-03 16:02:03
Rosszul hitted... Aki nem ismeri ezt mondja róla. Egy minimális asm tudást érdemes elsajátítani, hogy lásd mégis hogy épül fel egy program, hogy kell nekiállnod, stb... De ha komolyabb dolgokat is el akarsz követni PIC-el, úgy hogy ne menjen rá a magánéleted, akkor Parsic
.. Végeredmény a lényeg, nem az, h hány sort írtál..
üdv: Dávid jdani Talán belevágok én is
|Manager | 2010-05-03 15:12:49 Azt hittem hogy a parsic, csak ilyen alap, kezdő dolog
Hozzászólás Név: Email: Tárgy: UBBKód:
2012.03.15. 17:43
PIC PROGRAMOZÁS - ALAPOK
6/6
http://kapcsolasok.hu/digitalis/86-pic-programozas-alapok
Copyright © 2012 - Elektronikai szakportál (www.kapcsolasok.hu) - Minden jog fenntartva. Az oldal tartalmával kapcsolatban minden jogot fenntartok! A tartalom más oldalakon a szerző beleegyezése nélkül nem jeleníthető meg!
Rólunk. | .Impresszum. | .Használati feltételek. | .Kapcsolat. | .Támogatónk a SzerverPlex.hu
2012.03.15. 17:43