You are here

PIC-programozása,hex-fájl megírása!Megoldva!

32 posts / 0 new
Last post
morfeus
morfeus picture

Szoasztok!
Az lenne a kérdésem,hogy adott egy
-18f2550-es PIC
-adott egy pickit2-klòn programozó
-adott mondjuk az MPLAB legfrisebb verzìója
-és adott egy hex-nevezetü fájl illetve a program ami mondjuk arra ösztökéli a 18f2550-es PIC-et,hogy pl:egymás után villogtasson 3darab ledet!
Namár most a .hex-fájlt beleégetem a pickit2-klonnal és az MPLAB-nevezetü program segitségével a 18f2550-es PIC-be!
De milyen programmal illetve milyen programnyelven kell megirjam illetve létrehozzam a .hex-nevezetű fájlt?
Vagyis melyik programnyelvet ajánljátok nekem mint kezdőnek,hogy tudjak írni létrehozni .hex fájlt(programot a picbe) ?
Ehez keresek irodalmat magyarnyelven,minden hasznos tanácsot előre is köszönök!
UI:Hamarosan megérkezik a pickit2-klòn programozóm és letöltöm majd az MPLAB legfrisebb verzióját!
Na jó nem őszitem tovább a hajatokat,további szép napot vagy estét :-) :-)

Lezlit és más tanyatag óriási segitségével elindultam a rögös programozási úton,nehéz de ez van! :)
Üdv:morfeus

Comments
devailaci
devailaci picture

Szia Morfeus!
Én javasolnám a PicBasic pro Compiler programmot.
Könnyű vele a programmozás és ha kész elkészítí a hex fájt.
Üdv: Laci

File csatolás: 

0

morfeus
morfeus picture

Szia!
Nagyon szépen köszönöm a tanácsot megnézem a javaslatodat is!

Üdv:morfeus

0

Istvan-lab
Istvan-lab picture

Szevasztok !

Olyan jókat irogattok ! :)
Ez a C-ben való PIC programozás olyan jópofa !
PL egy LCD kijelzőre szerettem volna egy egysoros szöveget kitenni C-ben megírva, PIC16F84-en,
hát nem kiírta a kis mocsok, hogy "Program memory full" ?!
De csinált más kis cukiságot is, ezért úgy otthagytam, mint ....

Assemblerben írtam már 50 oldalnyi progit is, igaz, egyszer kell megtanulni az assemblert, de a C-t is !
No, mindegy, ki így, ki úgy szereti, logikus, hogy aki megtanulta a C-t annak abban könnyebb.
De ha valaki 0-ról kezdi, akkor tanulja azt ami a legjobb.
Ha elkezd lefagyni a PIC akkor csak le kell ásni assembly szintig, hogy megkapd a hibát.
Nem így van, Oszi ?

A PIC programozásnak egyetlen csúszós része van, a DEFINIÁLÁS !
A program első 5-10 sora a kritikus, utánna megy minden mint a karikacsapás.
Példa egy jól beállított PIC-re:

list P=16F73,F=INHX8M,R=DEC ; Intel hexa formátum, 10-es számrendszer
#include P16F73.inc ; A szukséges INC fajl
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC&_BODEN_OFF ; Konfiguracios bitek

; van/nincs code protection ( ALL / OFF )
; van/nincs power up timer ( ON / OFF )
; van/nincs watchdog timer ( ON / OFF )
; kvarcoszcillátor (4 MHz) ( XT / LP / HS / RC )
; van/nincs Brown-Out Reset ( ON / OFF )

ERRORLEVEL 1,-302 ; 302-es hibauzenet kikapcs.

CBLOCK 0x20
w1 ;Timer 1. valtozo
w2 ;Timer 2. valtozo
w3
w4

ENDC

org 0

clrf PORTA ; minden kimenet alacsony (0 V)
clrf PORTB
clrf PORTC

bsf STATUS, RP0 ; váltás az 1. bankra
MOVLW B'110' ; all pins is digital I/O
MOVWF ADCON1

MOVLW B'00000010'
MOVWF TRISA ; 1 bemenet

MOVLW B'00000001' ;
MOVWF TRISB ; 0 kimenet

MOVLW B'11111111'
MOVWF TRISC

movlw b'10000110' ;'10000110' PULLUP RESISTORS DISABLED !
movwf OPTION_REG
bcf STATUS, RP0 ; visszaváltás a 0. bankra
clrf INTCON
clrf PORTA
clrf PORTB
clrf PORTC

A PIC eddig a Pontig NEM csinált semmit, de ezek mind szükségesek ahhoz, hogy ELINDULJON !

Bővebb információkért forduljon kezelőoperátorához, szemészéhez :)

Üdv: Dénes István

0

morfeus
morfeus picture

Szia!

Na akkor most,hogy is van ez sokak szerint elég az egyik ASM vagy C-nyelv!
De akkor most az írásod alapján mindkettőt kell ismerni oda-vissza ahhoz,hogy tudjak PIC-et programozni?Illetve nem is a programozással van gond hanem a PIC-be égetendő program megírásával!
Akkor most mi is a nagy helyzet mindkettő eggyaránt fontos és kell?Mert én mint kezdő-kezdő ezt szűröm le van aki ezt van aki azt mondja,szerintem így 100%-ig meglehet kavarni egy kezdőt :hmmm:
De akkor most melyikkel is kezdje a tanulást egy kezdő Assembly-vel vagy pedig C-vel ez itt a nagy kérdésem!!!!!
Erre keresem a választ,de sok fórumon olvastam,hogy a C-t javasolják akkor most mi legyen mert ebben a zavarban kezd elmenni a kedvem a programozás tanulásától inkább csag égetem a PIC-eket :super:
De azért komolyan kíváncsi vagyok a válaszodra illetve mások javaslatára is,idáig a C-ajánlották többen mivel igazán már a18-as PIC-eket szeretik használni termesztésen a 16-osokhoz is lehet C-ben csak gondolom az már kezd egy kicsit kiöregedni :oke:

Minden választ köszönök szépen!

Üdv:morfeus

0

Istvan-lab
Istvan-lab picture

Szevasz Tibi !

El nem tudom képzelni, mivel zavartalak össze, de akkor álljon itt az én véleményem, feketén-fehéren:

MPLAB programban ASSEMBLY nyelven a legegyszerűbb számomra a programozás.
NEM kell hozzá a C nyelv ismerete !
MPLAB-ban megírom, egy kattintás és már a PIC-ben van az anyag :)
(compillál és éget is egymásután, PICKIT3-at használok)

Üdv: Dénes István

0

morfeus
morfeus picture

Szia!

Nos a helyzet a következő "El nem tudom képzelni, mivel zavartalak össze"
mint látod hallod olvasod kis szösszeneteimet apszolúte kezdő vagyok a programozás terén ezért mit tesz ilyenkor egy kezdő nyilván utánaolvas a témának illetve olvas különböző erről szóló topikokat és eldönti,hogy melyik nyelvezetet is válassza illetve melyik mellett teszi le a voksát!
De ami a legfontosabb az az ,hogy a kezdő nyilván hallgat egy sokkal tapasztaltabb véleményére,pl:te ugye azt mondod ,hogy ASM-be megírod és MPLAB-ban lefordítod és az MPLAB-bal is égeted be,másik oldal azt mondja megírja C-ben lefordítja az MPLAB-ban lévő fordítóval utána a pickit2-saját programjávalinnen is akár lelehet tölteni és ezzel égetik bele a PIC be a programot!
Kezdésnek vagy inkább kezdőnek hirtelen ennyi sok infót feldolgozni eldönteni igen zavaró lehet természetesen nem csak magamról beszélek,de legyek én a példa!
Remélem kicsit egyszerűbben fogalmaztam :taps2:

Üdv:morfeus

0

CodeKiller
CodeKiller picture

Üdv,

Az assembly-t totál kezdőknek azért nem szokták ajánlgatni, mert:
-nincsenek változók, csak regiszterek és memória-területek, így könnyen felülírhatsz más tartalmakat
-nincs típus-ellenőrzés, pl előjel és előjel nélküli számokat is felcserélhetsz, és nem fog érte szólni a fordító
-nincsenek nagy számok (16/32bit..), azokat magadnak kell kisebbekből számolni
-bonyolultabb kifejezések, mivel a memóriát magadnak kell nyilvántartanod (változók terén), minden művelet közben erre figyelni kell, számolásokhoz a regiszterekbe kell másolni, .... igaz, nincs olyan sok utasítás, de azokból sokkal többet kell használni

Az előzőeket összefoglalva: hosszabb/nehezebben olvasható kód, kevesebb védelem elírások ellen, gyakran kevésbé hordozható (amit egy processzorra megírtál, egy másik típusra nehezebben vihető át)

Persze van jó oldala is, pl gyorsabb, lehet kisebb, pontosan tudod, mit csinál a processzor (órajelre pontosan kiszámítható futás)

A C ezzel szemben könnyebben átlátható kódot, egyszerűbb műveleteket, sokkal kevesebb típushibát garantál, és a forráskód könnyebben hordozható.
Ezért cserébe lehet valamival nagyobb a kontrollerbe kerülő kód, kicsit lassabb, a forráskód lapján nem lehet megmondani pontosan, melyik rész mennyi idő alatt fut le. (kritikus idejű dolgoknál ASM betétekkel szokás megoldani)

( érdekességképp, ezt is meg lehet nézni: http://gcbasic.sourceforge.net/ )

üdv,
ck

0

morfeus
morfeus picture

Szia!
Nagyon szépen köszönöm a lényegretörő összefoglalódat valóban hasznos dolog!
Igazán azért nehéz dönteni(tudom gumi mondat) mert az egyik oldal az asm-t a másik ac-t javasolja!
Mondjuk egy kezdőnek mind két nyelv nehéz,de döntöttem idáig csak billegtem ide-oda asm-c :-)
De végre àtbillentem legalább is egyenlőre C mert azért gondolom C-ben is lehet kisebb dolgokat írni ha meg nem és kisebb pic kell akkor vagy asm vagy megszerzem a .hex fájlt :-) természetesen idővel megpróbálom mindkettőt elsajátitani de elsőnek C :-)

Üdv:morfeus

0

CodeKiller
CodeKiller picture

Üdv,

Hogy szemléletesebb legyek:
asm olyan, mintha csak diszkrét elemekből raknál össze kapcsolást (R, L, C, D, Q)
C pedig mintha lennének már komplex ic-k, programozható ic-k, hibrid egységek...

mind2vel lehet áramköröket építeni, de melyik a gyorsabb, melyikben lehet kevesebb hibát elkövetni... ?!

üdv,
ck

0

morfeus
morfeus picture

Szia!
Lázod ilyen irányból mèg nem goltam át a dolgot,de a válasz szinte eggyértelmű az irottak alapján C a nyerő!

Üdv:morfeus

0

Istvan-lab
Istvan-lab picture

Hali.

Ehhez a témához csak részben kapcsolódó szösszenet:
Miért használnak az atomreaktorokban, tengeralattjárókon, csatahajókon, stb még most is szobányi számítógépeket ?

Két okból:
1. Nem éri meg fejleszteni, mert egy csomó minden drágább lenne után építeni és amit egyszer megcsináltak, az már működik hosszú évek óta.
Egy amúgy egy logikus magyarázat.

Azt viszont kevesen tudják, hogy:
2. A régebbi digitális áramkörökből szerelt hálózat lefagyási esélye megközelíti a nullát, szemben egy modernnek tekinthető akár Pentium 1-es alaplappal szemben.
Mi a cégnél még mindig gyártjuk a 25 éve tervezett alaplapokat, miért ? Én is ezt kérdeztem... Azért, mert BIZTOSABBAK mint a mai kortársaik.
Valószínűleg egyszer eljön az az idő, amikor megint stabil számítógépes rendszerekkel fogunk dolgozni, úgy mint több tíz évvel ezelőtt.
Egy atomerőmű vezérlése nem játék. Ott más hardwert és szoftwert használnak.

És ezen a ponton kapcsolódik a megjegyzésem, hogy nekem még egy programom sem fagyott le ASM-ben, legalábbis úgy nem, hogy ne tudtam volna mi a baja.

Jelenleg átléptem a C-n, és már a grafikus programnyelvet tanulom, ami ég és föld a régi programozáshoz képpest :( :-S
Itt fingod sincs, hogy épp mit csinál a proci, hol tart a program, csak vagy lefut, vagy nem :szetver:

Mindenkinek szép napot !

Üdv: Dénes István

0

Oszi11
Oszi11 picture

Sziasztok,

Én Borland Pascalban szeretek programozni éppen ezek miatt! A Pascal szigorú szabályai megvédenek egy csomó hibától. Ezért persze rugalmatlanabb mint a C. A C-ben szinte mindazt meg lehet csinálni mint assemblyben, de olyan hibákat is lehet ejteni benne amit csak két napig nézel és nem érted mi van! A Pascal fordítója sok ilyentől megvéd!
Kár, hogy ma már nehezen használható ez a program, a Free Pascal meg valahogy nem ugyanaz!

Üdv,
Oszi

0

Istvan-lab
Istvan-lab picture

Innenstől azt választasz amit akarsz, mi leírtuk a lehetőségeket :)

Üdv: Dénes István

0

morfeus
morfeus picture

Szia!
Megvan a válasz megtanulom az Assembly-ben megirni a programot utána az MPLAB-bal leforditom .hex formátumra és az MPLAB-al be is égetem ha jól értelmezem!
Nos oszi11-jóvoltából C-re van már majd anyagom rendesen,viszont assembly-re még nincsen tudnál könyvet ajánlani?Persze alap dolgokat tudok angolul de ha lehet akkor magyar nyelvű könyv lenne jó
Mert akkor megszerzem az MPLAB-legfrisebb verzióját,lassan itt lesz a PICKIT2-klónom és akkor már csak meg kell tanuljam az asm-met! :-)

Üdv:morfeus

0

Oszi11
Oszi11 picture

Szia,

A C programoddal az a probléma, hogy valószínűleg használtad az LCD kijelző modulját, amiben "rengeteg" függvény van amit ugyan nem használsz, de van! Ezek megeszik a memóriát és 1k memóríát nem lehet pazarolni. A C nem ilyen kicsi memóriájú vezérlőkhöz való!

Üdv,
Oszi

0

Istvan-lab
Istvan-lab picture

Szia !

Igen, éppen ez az, de az ember eleinte még a kis dolgokkal kezdi...
Én is tök nullán kezdtem, belefutottam egy ilyenbe és nem volt mit kezdjek vele.
Majd később megértettem, de akkor már nem volt értelme visszamenni a C-hez.

Üdv: Dénes István

0

Oszi11
Oszi11 picture

Szia,

Egy nagy teljesítményű processzorhoz C-t választasz, kinek jut eszébe PC-t assemblyben programozni, pedig eszméletlen gyors programokat lehetne írni, minimális erőforrásigénnyel, és elég nagy fáradtsággal. Addig, amíg egy 16 lábú íc-t kell programozni, 35 utasítással, én is azt mondom csak assembly, mert ez az optimális, de egy arm vezérlőnél, ahol általában egy linux az alap ott csak a C jöhet szóba!

Üdv,
Oszi

0

Istvan-lab
Istvan-lab picture

Üdv, nyilván, ez így van... de Tibi is most inkább kisebb PIC-el kezdené :)

Üdv: Dénes István

0

CodeKiller
CodeKiller picture

üdv,

A 18F2550 nem olyan kicsi....
Az USB porta meg pláne kíváncsi lennék ASM-ben.....

üdv,
ck

0

Oszi11
Oszi11 picture

Sziasztok,

itt a pont!

Üdv,
Oszi

0

morfeus
morfeus picture

Sziasztok!

Az jutott az eszembe,hogy rendben én megírom C-ben a programot de gondolom ebből még kell csináljak egy hex-fájlt!Gondolom erre vannak a C-forditók?!

UI:Közben kinyitottam a szememet és látom már,hogy CodeKiller a választ is megírta még pediglen a Cnyelven írt progit az MPLAB-le is fordítja! :yes:

Üdv:morfeus

0

VrubenX
VrubenX picture

Szia!
A Kónya féle C könyvet el tudom küldeni mailban vagy ha máshogy nem megy feltöltöm valamilyen feltöltős oldalra.
De szerintem abból nem fogsz megtanulni még egy ledet sem bekapcsolni, úgy gondolom hogy a Kónya féle C vagy ASM-es könyvek egyáltalán nem gyakorlatiasak tehát nem fogják leírni neked szóról szóra hogy ez írd be ide és ez ezt jelenti ekkor ezt csinálja a PIC stb..
Ha C helyett mégis az ASM-et választanád akkor arra van sokkal könnyeben és gyakorlatiasabban megírt könyvem doc-ban ezt is eltudom küldeni.
Nem leszólni akartam a Kónya féle könyveket de szerintem abból tényleg nem lehet elkezdeni de még folytatni sem (vagy embere válogatja?). Én ASM-ben elboldogulok de esetenként mikor nem ment valami belenéztem a Kónya ASM féle könyvbe de soha nem abból kaptam meg a megoldást. Egyébként ha már alap dolgok mennek akkor sokat segít az adott PIC datasheet-je.
Üdv:Vrubenx

0

Oszi11
Oszi11 picture

Szia,

Az MPLAB-ba több fordítót is beépítettek. CCS C fordító vagy a Microchip C attól függ melyiket használod, hogy melyik típusra akarod lefordítani a programot.

Üdv,
Oszi

0

morfeus
morfeus picture

Szia!
Mármint a PIC-tipusátol függ az,hogy milyen fajta forditóval kell leforditsam .hex-fájlra?
Bocsi az esetlegesen sok kérdés miatt de ha már nekiállok akkor amennyire lehet csináljam jól maximum újrakezdem :-)

Üdv:morfeus

0

morfeus
morfeus picture

Sziasztok!
Hát igen a C-nyelvù programozás nagyon sokat olvasgattam ez ügyben szemem többször kiesett e helyéről annyi hsz olvastam el főleg a HE-oldalon,de a lényeg,hogy többségében a C-nyelvet javasolják mivel nagy általánosságban erre van optimalizálva a PIC-ek nagyrésze ill sok irodalom is erről szól!
Most a C-nyelvű programozáshoz keresek könyvet lehetőleg magyar nyelven!Sokan ajánlották a Kónya-féle PIC es könyvet illetve Pető Àdám:abC-nevezetű könyvét ami szintén a C nyelvű programozásról szól!
Ha valakinek lenne a C-nyelvhez vagy esetleg feleslegessé vált eladó irodalma vagy esetleg ebook-formában kérem jelezze!
Mert pl:a Kónya féle piros PIC-es könyvet sokan ajánlják+a hozzá mellékelt CD-t is,de ezt csak rendelni tudnámújonan 6500Ft+szállitás az úgy már kicsit drága de ha nem tudom másképpen vagy használtan megszerezni akkor kénytelen leszek megrendelni :-( De hátha meg van valamelyik tanyalakónak :-)
Üdv:morfeus

0

CodeKiller
CodeKiller picture

Üdv,

Mint említettem, jobban lehet tanulni (szerintem) ha élesben próbálgatod valami egyszerű programokkal. Ha valami nem megy, akkor lehet rákeresni az interneten, vagy megkérdezni fórumon.
Van ugyan pár beállítás, amivel ugyan eléggé ki tudsz magaddal tolni, de teljesen használhatatlanná csak komoly programozás árán vagy jelentős elektronikai malőrökkel lehet.

Sok sikert, és jó szórakozást!

üdv,
ck

0

Kalex
Kalex picture
*****

Szia!
Itt találsz egy C nyelvű programozást tanító könyvet. Kezdetnek jó. Ez pedig középiskolásoknak íródott.
A PIC-hez itt közvetlen magyarázatot kapsz.
A keresőbe beírod: "programozás C nyelven" és kiválasztod a 92500 találatból a Neked megfelelőt.

Üdv! Kalex

0

CodeKiller
CodeKiller picture

Üdv,

Én első körben a C-t javasolnám. Nem olyan gyors és hatékony, mint az asm, de könnyebben érthető, és az elírásokat könnyebb észrevenni.
(ezt majd az mplab-ban tudod lefordítani .hex fájlra)

Szerintem a legjobban úgy lehet belerázódni, ha letöltesz pár példaprogramot és azokat írogatod először át.
Vagy pl az itteni tananyagokat is lehet nézegetni: http://www.hobbielektronika.hu/cikkek/pickit3_debug_express_-_tananyag_kezdoknek_iresz.html?pg=1

üdv,
ck

0

Oszi11
Oszi11 picture

Sziasztok,

ehhez a típushoz én is a C nyelvet javasolnám. A gyártó C-hez optimalizálta az utasításkészletét és az USB portját is lényegesen egyszerűbb használni C-ben.

Üdv,
Oszi

0

morfeus
morfeus picture

Szia!
Köszönöm a tanácsot és a segitséget lehet sőt biztos még kérdezősködöm :-) ha nem gond !

Üdv:morfeus

0

AzzA
AzzA picture
*

Szia,

Probálta valaki a Flowcode programot ?
Aki nem jártas asm..C nyelvben annak ez megoldás lehet

0

Sponsored links