[elektro] Pickit 2

Skandar Graun sgraun at gmail.com
Mon May 26 19:51:20 CEST 2008


Köszönöm a makrót, át fogom nézni.

A példaprogramról annyit, hogy ez nem az. Ez egy működő program egy
(működő) szubrutinja, amit kimásoltam. Mint említettem, az
ellenőrzéseket elvégeztem máshol. Ennél a műfajnál természetesen
odafigyelek arra, hova fordítom. Egyébként az IT rutin ezek után
szokott következni.


A szimulátorról: Szerintem lényeges, hogy ne magában vizsgáld, hanem
egy programon belül legyen befordítva és a "set PC to cursor"
paranccsal lépj rá.
Ha simán, a kezdetektől indítom a szimulátort, nekem is végrehajtja.

2008/5/26, hg12345 <hg12345 at freemail.hu>:
> A minta programokban mindig az a baj, hogy olyan "Mint ha program"
> lenne :-) E legtöbb nehezen használható igen hibás....
>
> Bocs hogy beleszolok, de a minta program több sebb&#337;l vérzik, ha
> PIC18-re irtad ! A minta példa a 2xW nélkül jól müködik egy 16F/C
> rendszeren, de nem egy 18F/C/J/K rendszeren. (Sajnos nem
> kompatibilis a két rendszer, és nehezen de megtalálható a leírásban!)
>
> 1, A PCLATH és PCLATU nem frissül a program léptetésekor, ezek
> önnáló regiszterek nincs sok közük a valós PC-hez! Igy akarmi lehet  e
> két regiszterben, akárhová ugorhatsz.  A fenti két regiszter frisssiteni
> kell. Sajnos a (addwf PCL,f) "R/M/W" utasitás nem frissíti,pedig logikus
> lenne. A firssitést egy olvasással lehet megoldani.
>       movff        PCL,dummy
> sajnos ez se oldja meg teljesen a problémádat, mert a laphatárra
> illesztést kézb&#337;l kell megoldani, itt szükebbek a laphatárok a mert más
> PC számláló
>
> 2, Ha már 18-ról van szó akkor inkább a felesleges memória foglalás
> helyett, használnám
>      addwf     WREG,w  ;2x és a carryel se kell foglalkozni
>
> 3, a laphatár váltás megoldható, az add után
>      SKIP(c)
>        incf   PCLATH,f
>      egy 32K laphatár megtalálása már nagyobb kunszt :-().
>
> 4, a fenti problémákat még az IT is nehezítheti..........
>
>
> Egy univerzális macro a fenti probléma megoldására, ez nekem
> müködött: Már rég nem foglalkoztam vele, ha valaki talál benne hibát
> szoljon, elöre is köszönöm
>
> ;==================================================
> ==================================================
> ===============================
> ; Inteligens memoria takareskos ADDWF PCL,w utasitas hasznalata
> ;               MCASE_PCLw      type, tableend
> ;tablestart     bra             ;type = 0 (4)      (rovid
> lapon beluli cimzes) (max 7F cim lehet)
> ;               bra             ;type = 1 (11/14)  hosszu
> lapon keresztul atnyulo cimzes (max FF cim lehet)
> ;               bra             ;Type = 2 (13/17)  (hosszu
> C,W cimzes, maximalisan 1ff cim generalhato)
> ;               bra             ;type = 3 (11/13)
> (konstanscim + W)    MCASE_PCLw 3,tablestart
> ;               goto            ;type = 4 (12/14)
> (konstanscim + C,W)     MCASE_PCLw      4,tablestart
> ;tableend
> ;(megjegyeznem a teljes programtar cimzest a MICROCHIP nagyon
> elrontotta, a PC szavas cimzesu es a TBLPTR meg bytes-is lehetne,
> nem kevesebb problemat okozni mint igy!)
> ;
> ;
> ; Fontos a beolvasast a WDTCON regiszterre vegzem, ezt a regisztert
> alkalmazas elott ellenorizni kell, hogy csak olvashato
> ;
> MCASE_IncTOSH   MACRO
>                 IF __MAXROM>0xFFFF
>                  infsnz        TOSH,f
>                  incf          TOSU,f
>                 ELSE
>                  incf          TOSH,f
>                 ENDIF
>                ENDM
> ;
> MCASE_PCLw      MACRO   Type,TableEnd
>                LOCAL   TstPage = (TableEnd>>8)-($>>8) ,
> TstPageStart=$
>                IF Type==0 ;----------------------Rovid max 0x7F
> cimzesu ugras
>                 addwf  WREG,f                  ;2x a
> WORD szervezesu a memoria
>                 movff  PCL,WDTCON      ;(0xF9B)        ;PCLATH/U
> frissitese
>                 addwf  PCL,f
>                 IF TstPage
>                  ERROR Lapvaltas szerepel a CASE_PCLw
> utasitason belul, hasznald a: MCASE_PCLw 1,xxxx,  Address S/E: #V
> (TstPageStart)/#V(TableEnd)
>                 ENDIF
>                ENDIF
> ;
>                IF (Type<3) & (Type>0)  ;-----------------
> Relativ Stack-en keresztuli teljese cimzes
>                LOCAL
>        MCASE_PCLw_0s,MCASE_PCLw_0e,MCASE_PCLw_00,MCASE_
> PCLw_01,MCASE_PCLw_02,MCASE_PCLw_0c
>                 push
> MCASE_PCLw_0s
>                 IF Type==2             ;--------- Extra
> hosszu ADDWF PCL,w utasitas (C,W) maximalisan cimezheto memoria
> atfogas 0x1FF
>                  bnc   MCASE_PCLw_0x
>                   MCASE_IncTOSH
> MCASE_PCLw_0c
>                 ENDIF
>                 addwf  WREG,w          ;2x a WORD
> szervezesu a memoria
>                 bnc    MCASE_PCLw_00
>                  MCASE_IncTOSH
> MCASE_PCLw_00    addlw  MCASE_PCLw_0e-MCASE_PCLw_0s
>                 bnc    MCASE_PCLw_01
>                  MCASE_IncTOSH
> MCASE_PCLw_01    addwf  TOSL,f
>                 bnc    MCASE_PCLw_02
>                  MCASE_IncTOSH
> MCASE_PCLw_02    return                 ;>>>> elugras a
> kivalasztott cimre
> MCASE_PCLw_0e
>                 IF (!TstPage) & (Type<2)       ;ha a cim tartomany
> 1FF akkor nem lehet roviditeni
>                   MESSG Nem kell hosszu CASE utasitas, hasznald
> a : MCASE_PCLw 0,xxxx  Address S/E: #V(TstPageStart)/#V(TableEnd)
>                 ENDIF
>                ENDIF
> ;
>                IF  Type>=3             ;----------------
> Konstans + displacement(w) cimzesek kovetkeznek
>                 push                   ;stack felszabaditasa
>                 clrf   TOSH            ;csak ezt kell torolni,
> itt szamolom az atvitelt
>                 IF Type==4
>                  rlcf  TOSH,f          ;Carry elhelyezese a
> memoriaban, igy 0x1FF cimzes cimezheto
>                 ENDIF
>                 addwf  WREG,w          ;2x
>                 SKPNC
>                  incf  TOSH,f          ;atvitel bejegyzese
>                 addlw  Low(TableEnd)   ;FIGYELEM ilyenkor a
> TableEnd = TableStart!!!!!!!!!!
>                 movwf  TOSL
>                 movlw  High(TableEnd)
>                 addwfc TOSH,f
>                 clrf   TOSU
>                 IF     __MAXROM>0xFFFF
>                  movlw   Low((TableEnd)>>0x10)
>                  addwfc  TOSL,f
>                 ENDIF
>                 return                 ;>>>> elugras a
> kivalasztott cimre
>                ENDIF
>
>                IF Type>4
>                 ERROR  MCASE_PCLw Type,Cim -ben a Type>4
> ertekek nincsenek implementalva
>                ENDIF
>                ENDM
> ;==================================================
> ==================================================
> ============================
>
>
>
>
>
>
>
>
> Skandar Graun <sgraun at gmail.com> írta:
>
> > Keress egy szubrutint. (esetleg az érdekesség kedvéért egy olyat,
> ami
> > a pcl-t is mozgatja, pl:
> >
> > cur_out:
> >               movwf   htemp
> >               addwf   htemp,w
> >               addwf   pcl,f
> >               dt      0,0,1,2,3,3,2,2,2,4,  5, 2,  6,  7,  8,  8,  8,
> 8, 9,  2,0ah, 3,
> >  3,  3,  3,0bh,  2,0ch,  2,  2,0dh,0eh,0fh,10h,0,0
> >
> > Nyiss egy watch ablakot.
> > Tedd bele a wreg és a htemp regisztereket. (Ebb&#337;l a példából, de ha
> > van saját, akkor azt.)
> > A szubrutin kezd&#337; sorára mondd azt a jobb egérgombbal, hogy "set
> PC to cursor"
> > Adj kezd&#337; értéket a W-nek.
> > Majd próbáld lépésenként (step into) végrehajtani.
> > Nekem most a legels&#337; utasítást (movwf htemp) már nem hajtotta
> végre,
> > ellenben a következ&#337;ket igen és utána úgy elugrott a pcába, hogy
> csak
> > lestem.
> >
> > 8.10-es mplab, 18f458 -as proci
> >
> > Ne keresd az értékellen&#337;rzést, az nem ebben a rutinban van, de van.
> >
> > Torok Imre <ha8lls at mystic-sound.hu> írta, 2008.05.25.:
> > > Szia Istvan, Sziasztok!
> > >
> > > Koszonom a hozzaszolasokat, letiltottam minden mas egyebet a
> portc-n,
> > > es jo lett a szimulatorban is.
> > >
> > > DE!
> > >
> > > Mivel ez a PK2-hoz adott peldaprogram volt, ami ugye a kezdoknek
> > > bemutat egy-ket fogast, lehetoseget, akkor miert nincs normalisan
> > > megoldva a feladat??? Gondoltam, nem csak beletoltom a pic-be a
> > > progit, hanem esetleg belenyulok, atirom, szimulalom, meg ilyenek,
> > > hisz eleg regen hasznaltam mar az 5-os mplab-ot. Engem is
> megfogott a
> > > dolog, akkor egy teljesen kezdo, akinek tenyleg ez az elso
> > > probalkozasa, es esetleg meg nem is tagja olyan listanak vagy
> > > csoportnak, amely tudna neki segiteni, 5 perc utan bevagja a
> sarokba,
> > > hogy sz at r az egesz... azert, mert a kedves mernokur, aki irja a
> > > sample-kat, meg lesson-oket az tojik a dolog korrektsegere....
> > >
> > > Koszonom a segitseget megegyszer es a ravilagitast a dolgokra!
> > >
> > > Udv!
> > > Imre
> > >
> > > --
> > > Best regards,
> > >  Torok                            mailto:ha8lls at mystic-sound.hu
> > >
> > > -----------------------------------------
> > >          elektro[-flame|-etc]
> > >
> > -----------------------------------------
> >           elektro[-flame|-etc]
> >
>
> _______________________________________________________
> Magányos vagy? Társat keresel? Vár Rád a Dual&#8217;s Társkereső Iroda  A tartós párkapcsolatok közvetítője!
>
> http://ad.adverticum.net/b/cl,1,6022,259322,318619/click.prm
>
>
> -----------------------------------------
>          elektro[-flame|-etc]
>


More information about the Elektro mailing list