[elektro] Pickit 2

hg12345 hg12345 at freemail.hu
Mon May 26 08:27:45 CEST 2008


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ő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ő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




More information about the Elektro mailing list