Fórum témák

» Több friss téma
Fórum » PIC programozás assemblyben
 
Témaindító: sonajkniz, idő: Máj 30, 2015
Témakörök:
Lapozás: OK   10 / 33
(#) sonajkniz válasza Hp41C hozzászólására (») Nov 22, 2015 /
 
Értem.
Tehát kiírásnál először az alsó, majd a felső 4 bite kell.?
(#) Hp41C válasza sonajkniz hozzászólására (») Nov 22, 2015 /
 
Hogy megint egy angol kifejezéssel válaszoljak: Little Endian Format - azaz a lagalacsonyabb címen van a legalacsonyabb helyiérték (a BCD változó 3..0 bitjein).
(#) sonajkniz hozzászólása Nov 23, 2015 /
 
Sziasztok!
Az lenne a kérdésem, van arra lehetőség MPlab X esetén, hogy ha programmódosítást töltök egy PIC-re, az EEPROM-ot ne törölje? Kicsit unalmas minden programmódosítás után újra elvégezni az összes beállítást, miközben ezeket az EEPROM tárolja.
(#) Pali79 válasza sonajkniz hozzászólására (») Nov 23, 2015 /
 
Szia!
Ilyenről nem tudok, de átmeneti megoldás lehet, hogy a kezdeti beállításokat az asm-ben már az eeprom-ba írod.
(#) Halász Z. hozzászólása Nov 30, 2015 /
 
Hello!
Pic16F1828 direkt memória lapozása ,hogy van asm-ben?
Banksel nem működik mplab, írja nem 0-ás bankban van a regiszter.
Köszönettel : HZ.
(#) Hp41C válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Idézet:
„írja nem 0-ás bankban van a regiszter”

Figyelmeztetésnek írja, ha nem szeretnéd látni, tiltsd le: errorlevel -302
A banksel makro pedig működik.
(#) nedudgi válasza Hp41C hozzászólására (») Nov 30, 2015 /
 
Azt nem árt hozzátenni, főleg, ha kezdőről van szó, hogy a banksel egy makró, nem utasítás, ezért címkét nem kaphat az a sor.
  1. ;rossz
  2. cimke1 banksel 0
  3. ;jo megoldas
  4. cimke2
  5.       banksel 0
(#) Hp41C válasza nedudgi hozzászólására (») Nov 30, 2015 /
 
Jobb így használni.
  1. ;rossz
  2. cimke1 banksel PORTA
  3. ;jo megoldas
  4. cimke2
  5.        banksel PORTA
  6.  
  7.        banksel TRISA

Mivel a banksel 1 nem a RAM 1. bank -ját választja ki.
A hozzászólás módosítva: Nov 30, 2015
(#) Halász Z. hozzászólása Nov 30, 2015 /
 
Köszönöm próbálom. Z.
(#) Halász Z. válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Az az érdekes,hogy a Banksel Portc valamint a Banksel Trisc-re nem jr hibát a Banksel Latc -re pedig igen. Z.
(#) Pali79 válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Esetleg a forrásodból ezt a pár sort bemásolhatnád ide.
(#) nedudgi válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Kisbetű/nagybetű (MPLab beállításától függően) nem mindegy.
(#) Halász Z. hozzászólása Nov 30, 2015 /
 
Ha csak ennyi , akkor probléma nélkül fordít :
  1. BEALL
  2.         BANKSEL TRISC
  3.         BCF PORTC,3
  4.         BANKSEL PORTC  
  5.         CLRF PORTC

Ha viszont beszúrok két sort ,hibára fut.:
  1. BEALL
  2.         BANKSEL TRISC
  3.         BCF PORTC,3
  4.         BANKSEL PORTC  
  5.         CLRF PORTC
  6.         BANKSEL LATC
  7.         CLRF LATC

Kösz : Z.
A hozzászólás módosítva: Nov 30, 2015
(#) Pali79 válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Ennek így nem sok értelme van. Először állítod PORTC,3-at, aztán belépsz a bankjába...
(#) ktamas66 válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Nálam jól működik (Mplab 8.92).
(#) nedudgi válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
  1. BEALL
  2.             BANKSEL PORTC  
  3.             BCF PORTC,3
  4.             CLRF PORTC
  5.             BANKSEL LATC
  6.   errorlevel -302
  7.             CLRF LATC
  8.   errorlevel +302
  9. ; stb
(#) ktamas66 válasza Pali79 hozzászólására (») Nov 30, 2015 /
 
A hiba ellenére működik, legfeljebb nem azt csinálja amire gondolt. A PORT, TRIS, LAT regiszterek ugyan azon a memóriacímen vannak, csak másik bankban, tehát ha a TRIS bankja van kiválasztva a PORT hivatkozásra is a TRIS regisztert fogja írni. Bizonyos esetekben ilyet én is el szoktam követni, ha nem szeretnék átmeneti változók bankváltásával törődni.
(#) Halász Z. válasza Pali79 hozzászólására (») Nov 30, 2015 /
 
Igen ,érdekes de ha átírom az első banksel TRISC -t PORTC-re nem működik, így igen. Z.
(#) Halász Z. válasza ktamas66 hozzászólására (») Nov 30, 2015 /
 
PORTC - BANK0
TRISC - BANK1
LATC BANK2

A PIC16F1828 egy érdekes példány, a datas. memórialapozás leírását nem értem!
ÜDV : Z.
(#) Halász Z. válasza ktamas66 hozzászólására (») Nov 30, 2015 /
 
Nem ír hibát?
Nem kell még valami állományt csatolni, a direktívákhoz? Z.
(#) ktamas66 válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Csak elé raktam egy fejlécet (és persze kiválasztottam a helyes picet).
  1. ;       Errorlevel      0,-302
  2.         Title   BLDC
  3.         List    X=on
  4.         List    C=132
  5.         List    N=94
  6.         processor       16F1828
  7.         radix   hex
  8. #include <p16F1828.inc>
  9.  
  10.  
  11. BEALL
  12.             BANKSEL TRISC
  13.             BCF PORTC,3
  14.             BANKSEL PORTC  
  15.             CLRF PORTC
  16.             BANKSEL LATC
  17.             CLRF LATC
  18. ALLJ
  19.                 GOTO ALLJ
  20.            
  21. END


Persze mint írtam a BCF valójában a TRISC regisztert állítja ilyenkor.
A hozzászólás módosítva: Nov 30, 2015
(#) nedudgi válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Hibát nem ír, nekem sem. Figyelmeztetés lenne, de azt ideiglenesen letiltottam, mert az utasítás előtt az errorlevel letiltja az üzenetet.
Mit nem értesz a memórialapozás leírásában?
(#) Halász Z. válasza ktamas66 hozzászólására (») Nov 30, 2015 /
 
Köszi!
Működik. Ha az errorlevel elött pontosvessző van a CLRF LATC sorra írja a bank hibát.
Ha kiveszem, persze nincs hiba.
Egyébként működik mert a pin átáll digitálisra.
Nem igazán értem ,hogy a BANKSEL TRISC utáni BCF PORTC mért nem a portc-re hanem a Trisc-re vonatkozik.
A Title és a List mit állít?
Közbe nézek utánna.
A memórialapozáson azt nem értem, hogy nincs IRP RP0,RP1 bit, nem találom a direkt lapozás leírását, csak az indirektet, az meg még magas.
Köszönöm mégegyszer. Z.
(#) Hp41C válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Idézet:
„A memórialapozáson azt nem értem, hogy nincs IRP RP0,RP1 bit, nem találom a direkt lapozás leírását, csak az indirektet, az meg még magas.”

Az Enhanced Midrange kontrollerekban egy kicsit máskép van az adatmemória kezelése. A BSR regiszter tartalma választja ki a memória bankot - ugyanis 32 bank lehetséges. movlb utasítással is be lehet írni a BSR értékét.

Nézd meg a fordítási lista ablakba írt hiba jelezéseket. A szövegükből rá lehet jönni a problémára. Ne keverd a kis és nagybetűket.
A hozzászólás módosítva: Nov 30, 2015
(#) bbalazs_ válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Mert a portc a gep szamara csak egy szam, mondjuk 0x04 .
Mintha neked azt mondanam, vedd ki a polcrol a negyedik konyvet. Igen am, de MELYIK polcrol a tizenotbol??
Neki (mondjuk) a nulladik polcon van a PORTC es az elso polcon a TRISC.
Meg kell neki mondanod, hogyha MOST konyveket kerek, akkor mindig az elso polcot ertem alatta. Ez a bankselect. Mert neki a cimzesi tartomanya sajnos rovid, mivel nyolcbites a processzora.
Az indirekt cimzes tenyleg bonyolultnak tunhet, de ott az a poen, hogy ugy tudsz memoriara hivatkozni, hogy kozben (majdnem) mindegy, hogy hol van tenylegesen. Pl. egy szoveget akarsz tarolni, az azert elegge huzos betunkent mindig vegigmenni rajta.
Beteszed a kezdetet egy regiszterbe, utana ehhez kepest hivatkozol az elso, masodik, stb elemere. Es azt, hogy hanyadik elemre hivatkozol, egy masik regiszterbe teszed, igy csupan ezt a regisztert novelve szepen vegiglepkedhetsz a teljes szovegen egy ciklusban, nem kell kulon-kulon megnevezned a memoriacimeket. Mintha egy tomb elemeire hivatkoznal.
Kezdocim+elem szama lesz az a memoriacim, amivel majd dolgozik.
En azert valtanek a helyedben 18F-re, tobb lehetoseged van es egyszerubbek ezek a cimezgetesek is valamelyest.
(#) Halász Z. válasza bbalazs_ hozzászólására (») Nov 30, 2015 /
 
Ebből van egy marékkal, s elég 'okosnak' tűnik. Z
(#) Halász Z. válasza Hp41C hozzászólására (») Nov 30, 2015 /
 
A movlb-vel nem csak 16 lapot lehet címezni? Azt is,hogy ha movlb 0 akkor 0 memórialap, ha 1 akkor az egy sigy tovább? Z.
(#) sonajkniz válasza Halász Z. hozzászólására (») Nov 30, 2015 /
 
Nem is mondta senki, hogy a 16-os széria nem elég okos. Csupán azt, hogy a 18-ast könnyebb programozni, és nagyobbak a lehetőségei is. Példának okáért a RAM területen kb úgy szörfözhetsz, mint amikor a böngészőben három lapot is megyitsz.
(#) Hp41C válasza Halász Z. hozzászólására (») Dec 1, 2015 /
 
Ha továbbra is a 16F1828 a példa, akkor meg kell nézni az adatlap (DS40001419F) a 29. oldalon a Table 3-9 -et. A 008H címen van a BSR. A 4..0 bitjei kiépítettek. Ez 5 darabot jelent. 2^5 = 32.
A BSR -beli értékhez az utasítás kódból még 7 bitet kell (LSB felöl) hozzátenni, hogy a teljes RAM cím kialakuljon.
A BSR 0 bitje felel meg a midrange kontroller STATUS.RP0 bitjének, a BSR 1 bitje felel meg a midrange STATUS.RP1 bitjének.
További jó olvasgatást.
(#) Halász Z. válasza Hp41C hozzászólására (») Dec 1, 2015 /
 
Tehát a BSR beállításával kiválasztom a mem lapot
BCF BSR,0 ; (BCF STATUS,0)
BCF BSR,1 ;(BSF STATUS,1)
.......
A regiszterre hivatkozva használhatom?
BCF TRISC,1 ;mert most ugye az első lapon vagyok az elöbbi miatt.
vagy be kell tölteni a reg címét?
MOVLW Ox08E
MOVWF ?
z.
Lenne valami mintapélda?
A hozzászólás módosítva: Dec 1, 2015
Következő: »»   10 / 33
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