Step motor kontrolü P18F4550

Başlatan ido2323, 21 Ekim 2014, 14:23:06

ido2323

MPLAB'DA YAPILMIŞTIR.

;************************************************************
;	PIC18F4550 İLE YAPILMIŞ ÖRNEK BİR STEP MOTOR KONTROLÜ
;
;	BA?LIK:	STEP MOTOR KONTROLÜ
;	YAPIM TARİHİ:  21.10.2014 14:16
;	YAPAN: İDO2323
;	FREKANS: 20MHz(HS)

;************************************************************
; BU PROGRAM A PORTUNUN 4. VE 3. PİNİNE BAĞLANMIŞ BUTONLAR İLE STEP MOTOR KONTROLÜ YAPILACAKTIR.
;
; DEVREDE ULN2003A STEP SÜRÜCÜ KULLANILMIŞTIR.
; D PORTUNUN(0,1,2,3) BİTLERİ SÜRÜCÜ YE BAĞLANMIŞTIR.
; STEP MOTOR AÇISI 7.5 DERECEDİR.
; RA4'E BASINCA STEP MOTOR 30 DERECE SAĞA, RA3'E BASINCA SOLA HAREKET ETMEKTEDİR.
;

list p=18f4550
#include	<P18F4550.INC>
CONFIG	FOSC = HS
;************************************************************
; DE???KENLER

Count	equ	0x000
sayac1  equ 0x002
sayac2  equ 0x004
sayac3  equ 0x006

;************************************************************

org	00000h	; Reset noktas?
goto	Start
;************************************************************
;program kodu burada çal???yor.
	org	00020h	; Program?n ba?lang?ç adresi

Start

MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input


clrf	LATB	; Portb'nin ç?k??lar?n? s?f?rla
clrf	TRISB	; Portb'nin bütün pinlerini ç?k?? olarak ayarla
clrf	PORTD
clrf	TRISD
clrf    LATD
MOVLW 0X00
MOVWF TRISD

clrf	Count	; count de?i?keninini

;------------------------------------------------
nod

test
   btfss PORTA,3 ;PORTA'n?n 3. biti 1 ise gecikme ça??r
   goto test1
call GECIKME
call sol
goto nod

   test1
   btfss PORTA,4 ;PORTA'n?n 4. biti 1 ise ise gecikme ça??r
   goto test
call GECIKME
call sag
goto nod

;------30 derece sola----------------
sol
movlw b'00001001'
movwf LATD
call GECIKME
movlw b'00000011'
movwf LATD
call GECIKME
movlw b'00000110'
movwf LATD
call GECIKME
movlw  b'00001100'
movwf LATD
call GECIKME

RETURN

;----------------------------------------

;------30 derece sağa----------------
sag
movlw  b'00001100'
movwf LATD
call GECIKME
movlw b'00000110'
movwf LATD
call GECIKME
movlw b'00000011'
movwf LATD
call GECIKME
movlw b'00001001'
movwf LATD
call GECIKME

RETURN

;----------------------------------------
; GEC?KME ALT PROGRAMININ BA?LANGICI

;----------------------------------------
GECIKME
   movlw h'ff'
   MOVWF sayac1

DONGU13
   movlw h'ff'
   MOVWF sayac2

DONGU15
   DECFSZ sayac2,F ;sayac2'nin de?erini 1 azalt s?f?r olursa "DECFSZ sayac1,F" komutuna atla
   GOTO DONGU15
   DECFSZ sayac1,F ;sayac1'nin de?erini 1 azalt s?f?r olursa "DECFSZ sayac1,F" döngüden ç?k
   GOTO DONGU13
RETURN
END
;------------------------------------------------

END