Ik heb een stukje programma wat bijna doet wat ik wil, alleen bijna, want ik heb een probleem.

stuk van de code waar het om gaat


delay   	MOVLW	0ffh
		MOVWF	counter2
verder          GOTO pintest
pintest  	btfsc porta,0
          	goto  pin1
          	btfsc porta,1
          	goto  pin2
          	goto  nopin
pin1      	call pauzeloop1
pin1a     	btfsc porta,1  
          	goto  ab
          	goto  pauze1
pin2      	call pauzeloop2
pin2a     	btfsc porta,0
          	goto  ba
          	goto  pauze2
pauzeloop1	movlw 0ffh
          	movwf pauzetijd
pauze1    	movlw 0ffh
		movwf counter5
pauze1a		decfsz counter5, 1
		goto pauze1a	
		decfsz pauzetijd, 1
		goto pin1a       
          	goto nopin
pauzeloop2	movlw 0ffh
          	movwf pauzetijd
pauze2    	movlw 0ffh
		movwf counter5
pauze2a		decfsz counter5, 1
		goto pauze2a	
		decfsz pauzetijd, 1
		goto pin2a       
          	goto nopin
ab        	goto upertray
ba        	goto lowertray
nopin		MOVLW	0FFh
        	MOVWF	counter
opnieuw         DECFSZ	counter, 1
        	GOTO	opnieuw
        	DECFSZ	counter2, 1
		GOTO	verder
		return

Dit stukje is een delay voor een ander stukje programma, in deze delay moeten de poorten RA2 en RA3 'gescand' worden of deze hoog zijn, en als RA2 hoog is en binnen tijd x pen RA3 ook hoog is ga naar programma ab en andersom ook. Nu werkt het wel, alleen als ik de eerste pen wat langer bekrachtig, zeg 4 sec. dan blijft hij in deze delay 'ergens?' hangen, en ik heb geen idee waar en hoe dit komt. Het zal wel heel simpel zijn, maar ik kom er nu echt niet meer uit, ben al deze hele dag bezig :)

Hopenlijk ziet iemand de fout...

[offtopic] "Ik vindt" :), wat een DT fout :p.

zet je de poorten hoog met een bsf,bcf instructie?
dit wil wel eens voor problemen zorgen
het is nl. een read modify write instructie
al eens in de animate debugger gegooid van MPLAB
dan zie je meteen waar het fout gaat
zet echter je pauze tijden dan ff korter anders ben je nog een nacht bezig ook

Op 24 april 2003 17:43:55 schreef k.p.meinesz:
1. zet je de poorten hoog met een bsf,bcf instructie?
dit wil wel eens voor problemen zorgen
het is nl. een read modify write instructie

2. al eens in de animate debugger gegooid van MPLAB
dan zie je meteen waar het fout gaat
zet echter je pauze tijden dan ff korter anders ben je nog een nacht bezig ook

1. Hoe bedoel je dit precies, ben nog maar beginner met PIC....

2. Hoe kan ik in de debugger de pen zgn. hoog maken ??

Op 24 april 2003 18:17:46 schreef Prutsertje:

[...]

1. Hoe bedoel je dit precies, ben nog maar beginner met PIC....

BSF (bit set f)gebruik je om een bit van een adres hoog te maken bv
BSF porta,1 dan word bit 1 van poort a hoog gemaakt
BSF 05,3 bit 3 van de bank switch word hoog gemaakt
bcf dan word de bit laag gemaakt
echter stel je hebt pin 1 als out en pin 2 als in en deze maak je hoog
en tegelijk word de bsf/bcf instructie gebruikt dan word de poort gelezen de bit word veranderd en het resultaat weer terug geschreven hierdoor zal pin 2 hoog blijven

2. Hoe kan ik in de debugger de pen zgn. hoog maken ??

met SIMULATOR STIMULUS
en dan asynchronous stimulus
je kruigt dan een paneeltje
met de rechter muis toets kun je dan de knop toewijzen aan een poort
en vervolgens welk signaal erop moet hoog laag ed.

kan ik die animatie ook langzamer laten lopen zodat ik zie wat er gebeurt ? ('k weet het, blijf lastig :) )

Op 24 april 2003 19:57:09 schreef Prutsertje:
kan ik die animatie ook langzamer laten lopen zodat ik zie wat er gebeurt ? ('k weet het, blijf lastig :) )

Ja dmv "steppen" met F7, dat is regel voor regel simuleren.

Hehe, heeft me gisteren hoofdpijn opgeleverd |:( maar ben er eindelijk uit. Ik heb call pauzeloop(n) gebruikt, maar bij de return raakt het daardoor in een loop. met goto pauzeloop(n) is het opgelost. Ongelofelijk dat je op zoiets stoms een hele middag moet zoeken en het niet vindt, ik denk dat ik te lang aan het staren was. Vanmorgen was ik binnen een half uur eruit. Bedankt voor alle hulp