Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   426 / 1210
(#) sherlock válasza Hilo hozzászólására (») Jún 26, 2013 /
 
Az MPLAB-ban be kell állitsad a "Language toolsuite"-ot annak függvényében, milyen fordítót használsz. Emellett a "Build options" menüpont alatt is be kell tegyed, hogy a fordító header filejait hol lehet elérni. 12F683-at programoztam már, HI-TECH demó verziójú kompilátorral.
Tudsz MPLAB-al is beégetni, de van egy nagyon szimpatikus kis program, amit "PicKit2 Standalone application" néven lehet megkapni. Én ezt használom például, megszoktam.

István
(#) szines hozzászólása Jún 26, 2013 /
 
Sziasztok!
A következő a problémám:
Megcsináltam ezt a termosztátot,szép is,jó is,de én szerettem volna hűtőgéphez is használni.
Ezek a törökök a vesémbe láttak, kiadtak egy modosított változatot is, amilyet szerettem volna.
Szerintük minden ugyan az, csak16f628 helyett 16f88-as pic kell más hex fájlal.
Kipróbáltam. Hááát.. A nyomógombok prelleznek az új variációval,a kettes lábra menő nem is kezelhető. Cseréltem gombot,u.a. Visszatettem a 16f628-at,tökéletes.
Mi nem jó?
(#) Pepebá hozzászólása Jún 26, 2013 /
 
Hali!
Rég jártam erre. Kényszerűségből félre kellett tennem a PIC programozgatást (azért a fórumot nyomon követtem), melyet a PICCOLO projekt felhasználásával fejlesztgettem.
PIC18F4550 I2C buszon hőmérő szenzorokkal és port bővítőkkel, CDC USB kapcsolattal.
LCD-vel akarom bővíteni. Viszont úgy emlékszem a projekt függvényei ezt nem teszik lehetővé, mivel azonos függvényt használna. Arra gondoltam hogy az USB kapcsolat figyelésével talán meg lehetne oldani, mivel azonos időben nincs szükség mindkettőre. A CDC kapcsolat adatforgalom megszűnésével járó, kapcsolat megszakadás megoldásra került (gyakorlatilag úgy viselkedik mint a HID kapcsolat ,lényeg meg lehet szakítani.
Icserny Úr válaszát megköszönném amennyiben erre jár.
Üdv.
(#) icserny válasza Pepebá hozzászólására (») Jún 26, 2013 /
 
Idézet:
„a projekt függvényei ezt nem teszik lehetővé, mivel azonos függvényt használna.”
Én itt elveszítettem a fonalat. Mi használna azonos függvényt?
(#) Hilo hozzászólása Jún 26, 2013 /
 
Sziasztok,
Bele fogtam az első PIC programomba, de máris segítséget kérnék.
Amiről szó lenne: 12f683 és assembly-ben próbálkozom.
Leírásokból, minta kódból illetve kútfőből próbálkozom. Amit első körben szeretnék, minden portot digitálissá beállítani, illetve utána azokra kötött led-et, ki be kapcsolgatni programmal. (alapoknál kezdem, még csak ismerkedem)

A kérdéseim a következőek:
- ha a __CONFIG nél _LVP_OFF szeretnék akkor kiakad, és nem tudom miért?!? kell e egyáltalán?
- "org 0" mi, és miért kell, mire jó?
- TRISIO val állítom hogy ki vagy bemenet, jól értelmezem?
- GPIO al állítom hogy egy kimenet alacsony/magas e. (led ki be kapcsolása)
- Jól értem hogy TRISIO/GPIO mindkettőnek csak 6 bitnyi adatot kell megadni?
(pl b'000010' és nem b'00000010')?
- MOVLW 0x07 (0x07 része) minek felel meg? (b'00000111')-nek?
- TRISIO és ANSEL ezek állítják be hogy analog vagy digitális a port, de nem tiszta hogy működnek.

  1. LIST P=12f683
  2. #include <p12f683.inc>
  3. __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
  4.  
  5. org 0           ;???
  6.  
  7. START
  8.         BCF STATUS,RP0          ;Bank 0
  9.  
  10.         CLRF GPIO       ;GPIO mind 0
  11.        
  12.         MOVLW 0x07              ;???
  13.         MOVWF CMCON0            ;???
  14.        
  15.         BSF STATUS,RP0                                  ;Bank 1
  16.         CLRF ANSEL              ;???
  17.  
  18.         movlw b'000000'                                 ;(0 ki, 1 be)
  19.         movwf TRISIO            ;minden port kimenetre;
  20. end

Előre is köszönöm a segítséget! Nagyon!
(#) usane hozzászólása Jún 26, 2013 /
 
Hello!

Kezdő PIC-es vagyok és a következő kérdésem lenne.
PIC16F648A-t szeretném programozni ICSP-n pickit3-al.
Izolációt megoldottam, a táppal kapcsolatban lenne kérdésem.
Ha a pickit 3-at on the programmer módban szeretném használni, az áramkörömről kell táplálnom.
VDD és VSS ok. A kérdés, hogy a 12-13-voltot előálítja magának?
Elvileg USB is csak 5V-ot ad, szóval alapjában véve hülyeséget kérdeztem, de hátha okosabb leszek.
Még sosem használtam on the programmer módban.

Üdv,
Usane
A hozzászólás módosítva: Jún 26, 2013
(#) icserny válasza usane hozzászólására (») Jún 26, 2013 /
 
Idézet:
„Ha a pickit 3-at on the programmer módban szeretném használni, az áramkörömről kell táplálnom.”
"On the go" módra gondoltál? Ugyanúgy az USB csatlakozójára kell +5V-ot adni , mint máskor (nem feltétlenül az áramkörödről, lehet egy számítógép, vagy USB "töltő" is). A 12-13 V-ot természetesen előállítja.
Idézet:
„Még sosem használtam on the programmer módban.”
Hat év alatt én is csak egyszer használtam ebben a módban a PICkit2 programozómat.
(#) Hp41C válasza Hilo hozzászólására (») Jún 26, 2013 / 1
 
Szia!
__CONFIG nél _LVP_OFF: A 12F683 -nak nincs ilyen bitje. Olvasgasd az adatlapját.
org 0: Abszolút kód fordításakor a kezdőcímet állítja be (épen 0 -ra).
TRISIO -val állítom hogy ki- vagy bemenet, jól értelmezem: Igen.
GPIO -val állítom hogy egy kimenet alacsony/magas: Igen.
Jól értem, hogy TRISIO -nak / GPIO -nek csak 6 bitnyi adatot kell megadni: Igen, de úgyis 8 bites értéket fog kezelni a fordító, aminek a felső két bitje 0.
MOVLW 0x07 (0x07 része) megfelel a b'00000111'. A 0x prefix a 16 -os számrendszert írja elő.
TRISIO és ANSEL: Az ANSEL állítja be, hogy egy kivezetés analóg (a hozzá tartozó bit 1) vagy digitális (a hozzá tartozó bit 0). A TRISIO állítaja, hogy egy kivezetés bemenet (a hozzá tartozó bit 1) vagy kimenet (a hozzá tartozó bit 0). Egy analóg módra állított kivezetésről mindig 0 olvasható a portműveletekkel. Egy analóg módra állított kivezetésre logikai szinthez tartozó feszültség (a GPIO megfelelő bitjétől függ) kényszeríthető, ha a kivezetést kimenetnek programozzuk.
A hozzászólás módosítva: Jún 26, 2013
(#) Pepebá válasza icserny hozzászólására (») Jún 26, 2013 /
 
Igen, nem csodálom. Bizony félre sikerült a mondat.
Arra gondoltam hogy az LCD-re írásra és az USB kommunikációra ugyan az a függvény van használva (_user_putc() függvény)
(#) Hilo válasza Hp41C hozzászólására (») Jún 26, 2013 /
 
Köszönöm, másik kérdésem is lenne.
  1. MOVLW 0x07
  2. MOVWF CMCON0

Fenti kód, mit állít, mihez kell?

movlw 0x07 helyett lehet movlw b'00000111' használni vagy ilyen esetekben adott hogy milyen formátumot kell?
Köszönöm előre is!
(#) Hp41C válasza Hilo hozzászólására (») Jún 26, 2013 / 1
 
Szia!
  1. MOVLW 0x07
  2.     MOVWF CMCON0

A komparátor modul még felülbírálja az ANSEL beállítást. Ld adatlap 8. fejezet.
Idézet:
„movlw 0x07”

Akármilyen, szintaktikilag helyes forma lehet a 0x07 helyett, aminek az eredménye 7 decimálisan: .7 vagy b'111' vagy (1<<CM2)|(1<<CM1)|(1<<CM0) stb.
A hozzászólás módosítva: Jún 26, 2013
(#) nedudgi válasza Hilo hozzászólására (») Jún 26, 2013 / 1
 
A CMCON0 regiszter a komparátor modul üzemmódját állítja be (8. fejezetben ismertetik részletesen.) A PIC mikrokontrollerek analóg célra használható lábai rendszerint alapállapotban analóg bemenetként vannak beállítva, ezért, ha digitális I/O-ként akarod használni, az analóg funkciókat le kell tiltani ezekre a lábakra. Többek között a komparátor modulhoz tartozó lábak ilyenek. Minden adatlapban az I/O portok ismertetésének van egy összefoglaló az érintett lábak konfigurálásáról. Ugyanígy van összefoglaló minden egyes modult ismertető fejezet végén.
Bármelyik számábrázolási formátumot használhatod, a fordítónak mindegy. Neked nem.
Én nem nagyon szoktam használni a ezt a formát. Az adatlapban minden regiszter ismertetésénél a bitek aránylag könnyen megjegyezhető rövidítését felsorolják. Amíg kezdő az ember, ritkán fut olyanba, hogy a kontroller memóriája nem elég, ezért én amíg van hely, ezt valahogy így szoktam leírni:
  1. bsf    CMCON0,CM0
  2.     bsf    CMCON0,CM1
  3.     bsf    CMCON0,CM2

Ez a program futása szempontjából teljesen egyenértékű a
  1. movlw  0x07
  2.     movwf  CMCON0
utasításokkal. Tudom, hosszabb egy bájttal, de hely van, az egy utasítással több meg rendszerint nem számít, viszont később, amikor a hibát keresed, könnyebb az ellenőrzés, visszakeresés. Ha egy másik kontrollerre írod át a programot, kevesebbet kell módosítani, mert az azonos funkciókra esetleg más bitpozícióban, de ugyanazzal a rövidítéssel szoktak hivatkozni.
A hozzászólás módosítva: Jún 26, 2013
(#) icserny válasza Pepebá hozzászólására (») Jún 26, 2013 /
 
Idézet:
„Arra gondoltam hogy az LCD-re írásra és az USB kommunikációra ugyan az a függvény van használva”
Ez egyáltalán nem szükségszerű, egyébként is csak a printf() használatánál jön számításba...

A C18 fordítóhoz mellékelt gyári programkönyvtár két előre definiált kimenet használatát teszi lehetővé. Az alábbi beállítás esetén az _user_putc() függvényt hívja a printf():
  1. stdout=_H_USER;              //standard output átirányítása _user_putc()-re
  2. stderr=_H_USER;              //standard error átirányítása _user_putc()-re


Van ezen kívül egy _H_USART választási lehetőség is, amellyel az _usart_putc()-re lehet irányítani a kiírást:
  1. stdout=_H_USART;                 //standard output átirányítása _usart_putc()-re
  2. stderr=_H_USART;                 //standard error átirányítása _usart_putc()-re


Ha felüldefiniálod az _usart_putc() függvényt úgy, hogy az LCD-re írjon, akkor a stdout átváltásával kényelmesen váltogathatod a kimenetet.

Alternatív lehetőség, hogy az _user_putc() függvénybe beteszel agy switch() utasítást, s akkor annyifelé irányíthatod a kimenetet ahány felé nem szégyelled.
A hozzászólás módosítva: Jún 26, 2013
(#) nÁnÁ hozzászólása Jún 26, 2013 /
 
Sziasztok!

Segítséget szeretnék kérni. Elkezdtem egy bemenetválasztó program megírásába, C nyelven, MPLab-bal, 16F628-at felhasználva. Jelenleg csak a szimulátorral próbáltam, azonban az RA7, és RA6 lábakat nem tudom átírni magas szintűre. Az RA7-es lábat, stimulusból átírja, a 6-ost onnan sem. Config beállításoknál beállítottam, hogy ez a két láb I/O legyen, és ne oszcillátorhoz használja őket. Eddig ilyen problémával még nem találkoztam, és nem tudom, hogy hol és mi lehet a hiba. Csatoltam a forrásfájlt.

A segítséget előre is köszönöm!
Üdv. Balázs
(#) Hp41C válasza nedudgi hozzászólására (») Jún 26, 2013 /
 
Vitatkoznék egy kicsit:
- Mi is a különbség a két programrészlet között?
  1. bsf    CMCON0,CM0              ill.             movlw  0x07
  2.         bsf    CMCON0,CM1                              movwf  CMCON0
  3.         bsf    CMCON0,CM2

A bal oldali egymás után 3 módot állít be: a 0x01, a 0x03 és a 0x07 -est. Közben a 1. és a 3. mód a komparátor kimenetét a COUT lábra kapcsolja. Ez nem kívánatos működéshez vezethet. A jobb oldali megoldás a 0x00 módból egyből a 0x07 módba lép, ráadásul a beállítás (movwf) egy primitív művelet, amit a megszakítás nem szakíthat meg.
Hasonlóan rossz gyakorlat, ha a kimenetek irányát ily módon álltjuk be: Mondjuk a PORTB 8 kivezetése közül 7 kimenet, és csak egy bemenet.
  1. clrf TRISB
  2.       bsf TRISB,0

megoldás, a 0. bitet kimenetnek állítja be. Ezzel két meghajtót (a pic -ét és a külsőt, ami a bemeneti értéket szolgáltatja) szembekapcsol egy utasítás végrehajtási időre. Azaz mégsem annyi időre, hiszen a két utasítás között elfogadhat megszakítást a kontroller...
Lehet, hogy én vagyok nagyon kukacoskodó, de kerülendő az ilyen megoldás. Ha a bitnevekkel szeretnénk hivatkozni, akkor az alábbit javaslom:
  1. MOVLW (1<<CM2)|(1<<CM1)|(1<<CM0)
  2.         MOVWF CMCON0
(#) Pepebá válasza icserny hozzászólására (») Jún 26, 2013 /
 
Köszönöm a felhomályosítást. Még nem egészen értem, de bízom benne sikerül ezek alapján megoldani. Egyenlőre átalakítom a hardvert és utána próbálkozom.
(#) nedudgi válasza Hp41C hozzászólására (») Jún 26, 2013 /
 
Jó, vitatkozzunk.
Ilyesmi a program elején fordulhat elő, inicializáláskor, amikor megszakítás még nincs engedélyezve.
(#) Hp41C válasza nedudgi hozzászólására (») Jún 27, 2013 / 1
 
Jó, vitatkozzunk.... Ilyesmi bárhol előfordulhat egy nagyobb programban. Ha megszokik egyfajta módszert a programozó, akkor azt fogja ismételgetni... Jobb, ha már a kezdetekben a korrekt megoldást tanulja meg. Sajnos egy kicsit többet kell írni. Sajnos ^ 3, hogy a magasabb szintű nyelveken is a bites állításra vannak példák (pl. egy 16 vagy 32 bites kontrolleren egy szó beállítása 15 / 31 bites állításból áll ), közben nem is gondolnak a következményekre...
A hozzászólás módosítva: Jún 27, 2013
(#) kissi válasza Hp41C hozzászólására (») Jún 27, 2013 /
 
Én egyetértek és követendőnek tartom !
(#) Hp41C válasza kissi hozzászólására (») Jún 27, 2013 /
 
Milyen éredekes lenne mondjuk az MSSI modul üzemmódját beállítani úgy I2C master módra 10 bites címzéssel (0x07):
0x01 - SPI Master Fosc/16; 0x02 - SPI Master Fosc/64; 0x03 - SPI Master TMR2 output / 2; 0x04 - SSP Slave, clock SCK pin, SS pin control enabled
(#) nedudgi válasza Hp41C hozzászólására (») Jún 27, 2013 /
 
Igazad van, lehet olyan esetet találni, amikor nem illik ezt a módszert használni. Bár 40 év programozói pályafutásom alatt nem találkoztam ilyen problémával.
(#) Hilo hozzászólása Jún 27, 2013 /
 
Sziasztok, lehetne a fentebbi "vita" végeredményét az én szintemen is elmondani?
Csak részlegesen futottam át (majd meló után lesz időm olvasok tovább) de ha jól értem, lényeg hogy ha a 12f683 lábait digitális módban akarom használni akkor a Comparator OFF mode kell nekem? (miért?) Ezt meg ugye a CMCON0 bit 0,1,2 ami a (CM0, CM1, CM2) 1-1-1 re állításával érem el. (Ez a Comparator OFF mód az adatlap szerint.)
A fentebbi vita ha jól értem arról szólt hogy ne külön külön egymás után állítsam ezt be, hanem egyszerre?
azaz mindegy hogy:
  1. MOVLW 07h
  2. MOVWF CMCON0

vagy
  1. MOVLW b'111'
  2. MOVWF CMCON0

csak a lényeg hogy egyszerre kapcsoljam át a biteket és ne egymás után?
(#) nedudgi válasza Hilo hozzászólására (») Jún 27, 2013 / 1
 
A komparátor, ha nincs kikapcsolva, minden más beállítást felülbírál a PIC12F683 esetén. Addig, amíg nem kapcsolod ki a CM0,1,2 bitek magasba állításával, nem lehet digitális I/O-ként használni a komparátor által lefoglalt lábakat.
Tökmindegy, milyen formában adod meg, a fordító szempontjából ugyanazt jelenti mindkettő.
(#) Hilo hozzászólása Jún 27, 2013 /
 
Sziasztok, megalkottam életem első programját:
  1. LIST P=12f683
  2. #include <p12f683.inc>
  3. __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
  4.  
  5. org 0
  6.  
  7. START
  8.         bcf STATUS,RP0  ;Bank 0
  9.         clrf GPIO       ;GPIO mind 0
  10.  
  11.         movlw b'111'    ;Comparator OFF
  12.         movwf CMCON0    ;Comparator OFF
  13.        
  14.         bsf STATUS,RP0  ;Bank 1
  15.         clrf ANSEL      ;minden port digitálisra
  16.  
  17.         movlw b'000000' ;(0 ki, 1 be)
  18.         movwf TRISIO    ;minden port kimenetre;
  19.  
  20.         BCF STATUS,RP0  ;Bank 0
  21.  
  22.         movlw b'000100' ;5 ös láb (GP2)
  23.         movwf GPIO      ;led bekapcs
  24.  
  25. end

A következőbe futottam bele:
Warning[205], Message[302]
.....
Errors : 0
.....
BUILD SUCCEEDED
illetve MPLAB SIM: CORE-W0014: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero
Most akkor rossz (hiányos/hibás) a kód, az MPLAB-al van gond vagy merre tovább? Előre is köszönöm!
(#) nedudgi válasza Hilo hozzászólására (») Jún 27, 2013 /
 
Gartulálok!
Hiányzik egy direktíva, ami megmondja a fordítónak, hogy utasításterület jön. Ez a "code"

  1. ;
  2.         LIST P=12f683
  3.         #include <p12f683.inc>
  4.         __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
  5.      
  6.         code
  7.         org 0
  8.     START
  9.             bcf STATUS,RP0  ;Bank 0
  10.             clrf GPIO       ;GPIO mind 0
  11.      
  12.             movlw b'111'    ;Comparator OFF
  13.             errorlevel -302
  14.             movwf CMCON0    ;Comparator OFF
  15.            errorlevel +302
  16.             bsf STATUS,RP0  ;Bank 1
  17.             clrf ANSEL      ;minden port digitálisra
  18.      
  19.             movlw b'000000' ;(0 ki, 1 be)
  20.             movwf TRISIO    ;minden port kimenetre;
  21.      
  22.             BCF STATUS,RP0  ;Bank 0
  23.      
  24.             movlw b'000100' ;5 ös láb (GP2)
  25.             movwf GPIO      ;led bekapcs
  26.             goto   $
  27.             end
  28. ; vége

A Message [302] azt jelenti, hogy a megcímzett adatterület nem a 0 bankban van, és erre a fordító figyelmeztet. Az
  1. errorlevel -302
direktíva kikapcsolja, az
  1. errorlevel +302
visszakapcsolja. Ez egy hasznos figyelmeztetés, csak kicsit többet kell gépelni.
A szimulátor azért szállt el, mert a programnal nincs vége, az üres (NOP utasításokkal teleírt) teljes programterületedet szimulálni próbálta. Aztán elfogyott a memória.
Ilyen programokat a
  1. goto $
utasítással szokás lezárni, vagy egy végtelen ciklussal, ami az adott feladatot ismételgeti. A mikrokontrollernek nincs operációs rendszere, az egyetlen beégetett program fut, amíg ki nem fogy az elem, vagy valaki bele nem botlik a hálózati tápegység kábelébe...
A hozzászólás módosítva: Jún 27, 2013
(#) Hilo válasza nedudgi hozzászólására (») Jún 27, 2013 /
 
Köszönöm, pár kérdésem megint lenne.
- a "code" mi, és miért kell? Mikor beraktam kiakadt tőle a fordító, illetve egyetlen minta programban sem volt benne.
- az errorlevel +-302 hibajelzés ki/be kapcsolást értem, de a fordító a 17 illetve a 20 sorra jelzett ilyen hibát. Mind a kettő a bank 1 ben van. Elvileg előtte a "bsf STATUS,RP0" átléptem bank 1 be. Ezzel kapcsolatban mit ronttam el? Miért nem lépet át bank 1 be? Ilyen esetben nem akad ki a program?
- Van olyan opció hogy sorról sorra végig járom a programot és közben lekérdezhetek ilyeneket hogy pl: (bank mennyiben vagyok, valamelyik digitális port alacsony/magas)?
- ha jól értem a "goto $" vissza lép a saját sorára és végtelen ciklusba fut?
- LIST, __CONFIG, START,end re ilyet kapok vissza: "Warning[205].....Found directive in column 1." Ez mi, kell vele törődni?
- LIST, __CONFIG, START,end ha jól értem mindenképp kellenek, ezekről hol olvashatok?
- Az "org 0" az azt csinálja hogy jelen esetben a 2048-nyi helyből a legelején kezd? Ha mondjuk azt mondanám hogy "org 30" akkor oda ugrik és ott kezdene?
Előre is köszönöm!
(#) nedudgi válasza Hilo hozzászólására (») Jún 27, 2013 /
 
A "code" még korai, akkor kell, ha több külön fordított részből áll össze egy projekt. Automatikusan írtam bele a programba. Ha abszolút kódot generáltatsz az MPASM-el, akkor nem kell.
A fordító nem foglalkozik azzal, hogy melyik bankra vonatkozik az adott utasítás. Ha nem a bank0-ban vanaz adott regiszter, kiírja. Ezért le szokták tiltani ezt a figyelmeztetést a program elején. Szerintem hasznos.
A Debugger fülön ki lehet választani az MPLAB SIM-et, azzal lépésenként szimulálni a programot. (Remélem az MPLAB 8.xx-et használod, mert ha nem, akkor MPLAB-X ben nem tudok segíteni.) a View/Watch menüben ki lehet választani regisztereket, változókat, és megmutatja az állapotukat.
Pontosítok, a goto $ utasításban a $ az utasítás címét (és nem sorát) jelenti amemóriában.
A Start egy sima címke a programban, az end pedig kötelező lezárása a fordítandó résznek.
A kontroller az utasítások végrehajtását a 0 címen kezdi. Ha 30-at írsz, akkor az első utasítás arra a címre kerül, ide egy ugró utasítást szoktak tenni, ami a program első utasítására ugrik, mert a memória elején vannak a megszakításvektor(ok).
A LIST, CONFIG direktívák nem kezdődhetnek az első oszlopban, azért pampog miatta.
A súgó szinte mindent elárul ezekről (is).
(#) Hilo válasza nedudgi hozzászólására (») Jún 27, 2013 /
 
Akkor ha jól értem a "bsf STATUS,RP0" rendesen átlép bank1 be, de ettől független szól a fordító? Ha meg nem jó bankban lennék akkor kiakadna?
"goto $" helyett akár írhatnék "goto Start" ot is és akkor az egész lenne egy végtelen ciklusban?
súgó alatt az MPLAB súgóját érted?
MPLAB 8.88-at használok jelenleg, ezt tanácsolta valaki de már nem emlékszem ki.

Megszakításokról hol olvashatok? (ha jól sejtem a logikai bemenetekhez nélkülözhetetlen)
PWM / időzítés-ről olvasni valót hol találok?
(#) Hilo hozzászólása Jún 27, 2013 /
 
Ez a View/Watch MPLAB-ban nagyon hasznos
Tesztelések közben felfigyeltem arra hogy 12f683 egyik lábát nem lehet kimenetre állítani, és utána olvasva az adatlapon is benne van.
Ez miért van amúgy? Gyakran fogok ilyenekkel találkozni a PIC ek között?
(#) Hp41C válasza Hilo hozzászólására (») Jún 27, 2013 /
 
"bsf STATUS,RP0" - Ne ezt a módszert szokd meg. banksel TRISIO. Tudom, hogy mind az PR0 mint az RP1 -et állítja hagyományos 10F, 12F, 16F kontrollereken. Ha a bankselt makot használod, az menni fog az advanced midrange (12F1xx, 16F1xxx) és a 18F -eken is. Ha már lesz egy kis gyakorlatod, akkor lehet a "bsf STATUS,RP0" formát is használni.
Az MpLab státus sorában a W értéke, a STATUS bitjei és az aktuális bank kivélasztás is látható.
org 30: Igen. Amikor ezt a sort értelmezi a fordító a következő utasítást az itt meadott kifejezés értékének megfelelő címre állítja. Figyelem, többszámjegyű értéknél a hazsnált számrendszertől függ a kiszámolt érték. Ha nem akarsz meglepetéseket célszerű közvetlenül megadni.
org 30 ; a dafault számrendszert használja
org .48 ; decimálisAN
org 0x30 ; hexadecimálisan
ord b'110000' ; binárisan.
Következő: »»   426 / 1210
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