Podivne chovani MPLABU

Miroslav Draxal evik
Středa Březen 17 14:28:28 CET 2004


pridal jsi par bajtiku a tabulka  koduj2 ti pretyka z 0 do 1 stranky pameti.
to je ten problem. skakat pomoci addwf   pc,f  se da pouze v ramci 1 stranky
od 00do ff. jeste musis k tabulce nastavit spravne byty v pclath. ( podivej
se do dokumentace u mocrochypu. je tam presne jak se skace v tabulkach. ja
to pouzivam takhle.

Hi_Tab		set		high	$

Dni_mesic	movlw		high	$
		movwf		PCLATH
		movf		Mesice,w
		addwf		PCL,f
		nop				; 0 m?s?c p?eci nen?
		retlw		d'31'+d'1'	; leden
		retlw		d'28'+d'1'	; ?nor
		retlw		d'31'+d'1'	; b?ezen
		retlw		d'30'+d'1'	; duben
		retlw		d'31'+d'1'	; kv?ten
		retlw		d'30'+d'1'	; ?erven
		retlw		d'31'+d'1'	; ?ervenec
		retlw		d'31'+d'1'	; srpen
		retlw		d'30'+d'1'	; z???
		retlw		d'31'+d'1'	; ??jen
		retlw		d'30'+d'1'	; listopad
		retlw		d'31'+d'1'	; prosinec

 		if 	high	$	>	Hi_Tab
			error	" Tabulka p?etekla do dal?? str?nky, pros?m prove?te korekci "
		endif



nebo

Hi_Tab		set		high	$

Den_Tydnu_1	Uloz_Tabulku
		addwf		PCL,f			; prezrntuje p?evod ??sla na string
		retlw		Set_P    		; zobraz? P
		retlw		Set_U			; zobraz? U
		retlw		Set_S			; zobraz? S
		retlw		Set_?			; zobraz? ?
		retlw		Set_P			; zobraz? P
		retlw		Set_S			; zobraz? S
		retlw		Set_N			; zobraz? n

 		if 	high	$	>	Hi_Tab
			error	" Tabulka p?etekla do dal?? str?nky, pros?m prove?te korekci "
		endif

kde Uloz_Tabulku  je makra

; W mus? z?stat zachov?no
Uloz_Tabulku	macro
		if 	high	$	==	0x00
			clrf		PCLATH
		endif

		if	high	$	==	0x01
			clrf		PCLATH
			bsf		PCLATH,0
		endif

		if	high	$	==	0x02
			clrf		PCLATH
			bsf		PCLATH,1
		endif

		if	high	$	==	0x03
			clrf		PCLATH
			bsf		PCLATH,0
			bsf		PCLATH,1
		endif

		if	high	$	==	0x04
			clrf		PCLATH
			bsf		PCLATH,2
		endif

		if	high	$	==	0x05
			clrf		PCLATH
			bsf		PCLATH,0
			bsf		PCLATH,2
		endif

		if	high	$	==	0x06
			clrf		PCLATH
			bsf		PCLATH,1
			bsf		PCLATH,2
		endif

		if	high	$	==	0x07
			clrf		PCLATH
			bsf		PCLATH,0
			bsf		PCLATH,1
			bsf		PCLATH,2
		endif

		if	high	$	==	0x08
			clrf		PCLATH
			bsf		PCLATH,3
		endif

		if	high	$	==	0x09
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,0
		endif

		if	high	$	==	0x0a
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,1
		endif

		if	high	$	==	0x0b
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,1
			bsf		PCLATH,0
		endif

		if	high	$	==	0x0c
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,2
		endif

		if	high	$	==	0x0d
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,2
			bsf		PCLATH,0
		endif

		if	high	$	==	0x0e
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,2
			bsf		PCLATH,1
		endif

		if	high	$	==	0x0f
			clrf		PCLATH
			bsf		PCLATH,3
			bsf		PCLATH,2
			bsf		PCLATH,1
			bsf		PCLATH,0
		endif
		endm



to za tebe udela vse.		MIRA



-----Original Message-----
From: owner-hw-news@list.gin.cz [mailto:owner-hw-news@list.gin.cz]On
Behalf Of Sa?a
Sent: Wednesday, February 27, 2002 9:14 PM
To: hw-news@list.gin.cz
Subject: Podivne chovani MPLABU


Zdravim lidi,
    v priloze je jeden programek, ktery mi cele odpoledne fungoval a vecer,
po doplneni nekolika drobnosti proste prestal fungovat. Zajimave ale je, ze
cast, ktera zlobi, je jiz od rana stejna a menila jsem neco uplne jineho,
konkretne to byla konstatnta cekaci smycky. Ve vypisu je ono podivne misto
oznacene hvezdickami. Na simulatoru je videt, ze se program sam od sebe
resetuje na konci procedury KODUJ2. Pokud se oznacene misto odstrani, ale
staci vyhodit jenom jednu podminku, tak to funguje tak jak se da ocekavat.
Pritom procedura KODUJ2 se normalne pouziva i v jinem miste a tam je to bez
problemu. Napada nekoho co to muze byt ?

Dalsi informace klidne poskytnu, ale asi to nebude nutne. Program pocita od
00.00 do 23.59 a pak stale dokola. Jako displej je pouzit MM5450BN na portu
PA0-2, je to z programu jasne videt. Na portu PB jsou tlacitka. Kmitocet
oscilatoru je 3.2768 Mc/s (jiny nemam).

Paradox je, ze to cely den funguje a pak to zacne blbnout. Dala to i na
jinych procesorech.

Diky Sasa



---
Odchoz? zpr?va obsahuje celou moj? sb?rku vir? a jin?ch ??lenost?,
tak si je u?ijte ve zdrav? :)
Zkontrolov?no antivirov?m syst?mem AVG (http://www.grisoft.cz).
Verze: 6.0.325 / Virov? b?ze: 182 - datum vyd?n?: 19.2.2002

---
P??choz? zpr?va neobsahuje viry.
Zkontrolov?no antivirov?m syst?mem AVG (http://www.grisoft.cz).
Verze: 6.0.325 / Virov? b?ze: 182 - datum vyd?n?: 19.2.2002





Další informace o konferenci Hw-list