Picproje Elektronik Sitesi

DERLEYİCİLER => PIC Assembly => Konuyu başlatan: ido2323 - 21 Ekim 2014, 14:23:06

Başlık: Step motor kontrolü P18F4550
Gönderen: ido2323 - 21 Ekim 2014, 14:23:06
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