Är detta rätt tänkt för att styra två servon samtidigt?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
PopUnoNkoK
Inlägg: 789
Blev medlem: 10 december 2007, 12:40:08
Ort: Piteå

Inlägg av PopUnoNkoK »

Näe, det blev en fråga i alla fall.

Jag försöker sätta upp några variablar och W-registret (Säger man så?) bråkar med mig.

Här är min kod.

Kod: Markera allt

;-----------------------------------
;		TIMER 0 KOD
;-----------------------------------


		processor	pic16f88
		include		<p16f88.INC>

		banksel		INTCON				;
		bcf			INTCON, TMR0IE		;Slå av Timer Interrupt
;		bcf			INTCON, TMR0IF		;Clear Timer Flaggan

		banksel		OPTION_REG			
		bcf			OPTION_REG, T0CS	;Använd processor klockan						
		bcf			OPTION_REG, PSA		;Prescaler på TMR0, inte Watchdog
		bcf			OPTION_REG, PS2		;Prescaler värde
		bcf			OPTION_REG, PS1		;Prescaler värde
		bcf			OPTION_REG, PS0		;Prescaler värde
		banksel		TMR0


		cblock		H'20'
			s1time
			s2time
			lowTime
			s1count
			s2count
			lowCount
		endc

		movlw		d'3'
		movwf		s1time
		movwf		s2time
		movlw		d'33'
		movwf		lowTime

		movlw		d'0'
		

		movlw		s1time		; Här!!!
		movwf		s1count
		movlw		s2time
		movwf		s2count
		movlw		lowTime
		movfw		lowCount




main

		btfss		INTCON, TMR0IF		;Timer = overflow?
		goto		main				;Nix, stanna kvar
		bcf			INTCON, TMR0IF		;Rensa TMRO flaggan	
		decfsz		s1count
		goto		main				;Börja om






end
I koden har jag en kommentar som lyder " ;Här!!! ". När jag kör koden steg för steg i simulatorn i Mplab så hamnar värdet 32 (Decimal) i W-registret och sedan vidare i s1count.
Min fråga är, vart i hela friden kommer det talet ifrån?

Raden innan har jag bara lagt till för att "nolla" W-reg när jag upptäckte att det dök upp 32, och den nollar W-reg men instruktionen efter dyker det alltså upp 32.

Tacksam för tip.

MVH Peter F
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Först, håll dig ett *ett* radix, då ser du nog också vad du gör för fel..

Ditt cblock sätter de 6 symbolerna till h'20' -> h'25'

movlw s1time ; laddar h'20' till W (s1time = h'20' från cblock'et !!)

Använd istället :

movf s1time, w

Notera skillnaden på "litteral" och "file register" !
Skriv svar