Butona her basışta frekas yükseltme

Başlatan MICROCEBEL, 24 Ocak 2006, 17:16:32

MICROCEBEL

Selamün aleyküm;

Arkadaşlar ben step motor sürücü devresi yaptım fakat yapmak istediğim örneğin RA0 ucunda bi buton olsun step motor çalışırken her basışta frekansı 1 arttırsın bunu nasıl yapabilirim yani butona her basışta step motor dönme hızı bir hz artsın PIC16F84 kullanıyorum...

SpeedyX

bekleme rutininin bekleme süresini, her butona basışta azalttır, böylece daha az bekleme olacak, dolayısıyla frekans artacak, oldukça basit

LIST	P=16F84
	INCLUDE	"P16F84.INC"

	__CONFIG _WDT_OFF&_XT_OSC&_CP_OFF&_PWRTE_OFF
	
	CBLOCK	0x0C
		sayac1, sayac2, adim, yonreg, BEK1, BEK3, BEK4
	ENDC

 #define	tusYon		PORTA,0
 #define	tusPlayPause	PORTA,1
 #define	tusHizInc	PORTA,2
 #define	tusHizDec	PORTA,3
 #define	Power		PORTB,4
 #define	PowerLed	PORTB,5
 #define	SonLed		PORTB,6

	clrf	PORTB
	bsf	STATUS,5
	MOVLW	H'FF'
	MOVWF	TRISA
	CLRF	TRISB
	bcf	STATUS,5
	movlw	H'FF'
	movwf	adim
	movwf	sayac1
	clrf	PORTB
	clrf	yonreg
	goto	basla
	
basla	bsf	PowerLed
	btfss	tusPlayPause
	goto	basla
	incf	sayac1,F
	bsf	Power
	goto	hazirla
	
hazirla	bsf	Power
	bcf	PowerLed
	btfsc	tusYon
	call	azalt
	btfsc	tusHizInc
	goto	sag
	btfsc	tusHizDec
	goto	sol
	bsf	SonLed
	goto	hazirla

azalt	movlw	d'10'
	addwf	sayac1,F
	call	yarimsn
	return

sag	incf	adim,F
	call	dondur
	goto	hazirla

sol	decf	adim,F
	call	dondur
	goto	hazirla

dondur	movf	adim,W
	andlw	b'00000111'
	call	adimtbl
	andlw	b'00001111'
	movwf	PORTB
	bsf	Power
	call	gecikme
	return
	
adimtbl	addwf	PCL,F
	retlw	b'0001'
	retlw	b'1001'
	retlw	b'1000'
	retlw	b'1010'
	retlw	b'0010'
	retlw	b'0110'
	retlw	b'0100'
	retlw	b'0101'

gecikme	movlw	H'ff'
	movwf	sayac2
	decfsz	sayac2,F
	goto	$-1
	decfsz	sayac1,F
	goto	$-5
	return

yarimsn	movlw	d'5'		; ~ yarim sn gecikme
	movwf	bek1
bk3	movlw	h'dd'
	movwf	bek3
bk0	movlw	h'ff'
	movwf	bek4
bk1	decfsz	bek4,F
	goto	bk1
bk2	decfsz	bek3,F
	goto	bk0
	decfsz	bek1,F
	goto	bk3
	return

	end

MICROCEBEL

yardımcı olduğun için teşekkürler....