Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

p16F628A

Başlatan sydsengul, 20 Mart 2011, 19:33:15

sydsengul

çizgi izleyen 3 sensörlü robot projesi için bu kod uygun mu acaba ?
bu konuda bilgisi olan arkadaşlar varsa yardımlarınızı bekliyorum

LIST P=16F628     
              include "P16F628.INC"
   __CONFIG B'11110100001010'
LSB    EQU    H'20'
MSB    EQU    H'21'
;**************
   ORG    0X00
   GOTO    BASLA
;*******************
BEKLE
   MOVLW .45
   MOVWF LSB
DON1
   MOVLW .95
   MOVWF MSB
DON2   
   DECFSZ  MSB,F
   GOTO DON2
   DECFSZ  LSB,F
   GOTO DON1
   RETURN
;****************

BASLA
   CLRF    MSB
   CLRF    LSB
   MOVLW   B'00000111'
   MOVWF   CMCON
   BSF    STATUS,5
   MOVLW     B'111111'
   MOVWF    TRISA^80H   
   CLRF    TRISB^80H
   BCF    STATUS,5   
   CLRF    PORTB
;********************************************   
TEST
   BTFSS PORTA,0
   GOTO    SAG
   BTFSS PORTA,1
   GOTO   SOL
   GOTO   TEST

SOL   
   BTFSS PORTA,2
   GOTO    TEST
   
   MOVLW B'11000110'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'01000011'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'01001001'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'11001100'
   MOVWF PORTB
   CALL BEKLE
   CLRF    PORTB
   BTFSS PORTA,0
   GOTO      SAG
   GOTO      SOL
;*******************************
SAG
   BTFSS PORTA,2
   GOTO    TEST
   
   MOVLW B'00110011'
   MOVWF PORTB
   CALL BEKLE
   
   MOVLW B'00100110'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'00101100'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'00111001'
   MOVWF PORTB
   CALL BEKLE
   CLRF    PORTB
   BTFSS PORTA,1
   GOTO    SOL
   GOTO    SAG

   END

pwm.c

anladığım kadarıyla stepmotor için yazılmış olmalı. tek motoru sadece sağa ve sola dönderen bişey.
robot devrelerinde iki motor kullanılır. biri durup dieri dönerse robot dönüş yapar. ikiside aynı yöne dönerse ileri yada geri hareket eder. bu işlemleride sensörlerden aldığı bilgiye göre yapar.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

Tagli

__CONFIG B'11110100001010'
Bu çok sakıncalı bir yazım şekli. Bir hata yaparsan ruhun duymaz, ara ara bulamazsın.

pwm.c'nin de dediği gibi bu bir step motor kontrol koduna benziyor. Bir step motoru basılan düğmeye göre ileri veya geri döndürmeye yarıyor gibi. Tek başına çizgi izleyen robotta kullanılamaz. Zaten bu robotlarda genelde step motor kullanılmaz.

sydsengul, anladığım kadarıyla kodu kendin yazmayıp, hazır bir kod bulmaya çalışıyorsun. Bu şekilde istediğin sonuca varman çok zor. Ayrıca, başlangıç seviyesi için, eğer bu işe gerçekten gönül vermediysen (ki öyle görünüyor) assembly dili iyi bir seçim değil. Sana tavsiyem, PicBasic Pro anlatan bir kitap edinip çalışman. Forumda ete hocamızın dersleri var, onlardan çalışabilirsin. Ayrıca bu kitap da işine yarayabilir (İngilizce). Ben PIC programlamaya bu kitap ile başlamıştım.

Gökçe Tağlıoğlu

hayaletcocuk22

   çıkış bacaklarını bulamıyorum sadece bana çıkışları söyler misiniz?





PROCESSOR 16F628A

   INCLUDE P16F628A.INC

   RADIX DEC


   __IDLOCS H'0100'

   __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_ON & _XT_OSC & _LVP_OFF & _MCLRE_ON

; Diverses

ZERO   EQU Z   ; ZERO-Flag
CARRY    EQU C   ; CARRY-Flag


; Variable

S0   = 32   ; located in Bank 0
CKS   = 33   ; located in Bank 0
RAM   = 34   ; located in Bank 0

   ERRORLEVEL -302   ; disable warning (Bankswitching)
   ERRORLEVEL -306   ; disable warning (Pageswitching)

;****************************************
;Programmanfang
;****************************************

   ORG 0

   CLRF STATUS   ; switch to RAM-Bank 0
   GOTO SYS_INIT
   NOP
   NOP
   RETURN

;****************************************
; Subroutines
;****************************************


;****************************************
;Initialisierung
;****************************************


SYS_INIT

   MOVLW B'00000000'
   MOVWF INTCON

; Set output before direction

   BCF STATUS,RP0   ; Bank 0
   BCF STATUS,RP1   ; Bank 0
   MOVLW B'00000000'
   MOVWF PORTA

   MOVLW B'00000000'
   MOVWF PORTB

   MOVLW 15
   BSF STATUS,RP0   ; Bank 1
   MOVWF OPTION_REG


; Richtung setzen

   MOVLW B'11111111'
   MOVWF TRISA

   MOVLW B'11111111'
   MOVWF TRISB

   BCF STATUS,RP0   ; Bank 0
   MOVLW 7   ; Comparators off
   MOVWF CMCON
; init vars


; Clear RAM

   BCF STATUS,IRP
   MOVLW 32
   MOVWF FSR
CR1
   CLRF INDF
   INCF FSR,F
   BTFSS FSR,7
   GOTO CR1
   BSF FSR,5
CR2
   CLRF INDF
   INCF FSR,F
   MOVLW H'F0'
   SUBWF FSR,W
   BTFSS STATUS,ZERO
   GOTO CR2
   BSF STATUS,IRP
   MOVLW 32
   MOVWF FSR
CR3
   CLRF INDF
   INCF FSR,F
   MOVLW H'50'
   SUBWF FSR,W
   BTFSS STATUS,ZERO
   GOTO CR3



;**********************************
;******* Haupt-Programm ***********
;**********************************

MAIN

;***************************************************
; UND - Gatter -> LG1
;***************************************************

LABEL_LG1_1
   BTFSC ??????????
   GOTO LABEL_LG1_FALSE
LABEL_LG1_2
   BTFSS ??????????
   GOTO LABEL_LG1_FALSE
LABEL_LG1_3
   BTFSS ??????????
   GOTO LABEL_LG1_FALSE

LABEL_LG1_TRUE
   BCF STATUS,RP0   ; Bank 0
   BCF STATUS,RP1   ; Bank 0
   BSF S0,1
   GOTO LABEL_LG1_ENDE
LABEL_LG1_FALSE
   BCF STATUS,RP0   ; Bank 0
   BCF STATUS,RP1   ; Bank 0
   BCF S0,1
LABEL_LG1_ENDE
;***************************************************
; UND - Gatter -> LG2
;***************************************************

LABEL_LG2_1
   BTFSS ??????????
   GOTO LABEL_LG2_FALSE
LABEL_LG2_2
   BTFSC ??????????
   GOTO LABEL_LG2_FALSE
LABEL_LG2_3
   BTFSS ??????????
   GOTO LABEL_LG2_FALSE

LABEL_LG2_TRUE
   BSF S0,0
   GOTO LABEL_LG2_ENDE
LABEL_LG2_FALSE
   BCF STATUS,RP0   ; Bank 0
   BCF STATUS,RP1   ; Bank 0
   BCF S0,0
LABEL_LG2_ENDE
;***************************************************
; UND - Gatter -> LG3
;***************************************************

LABEL_LG3_1
   BTFSS ??????????
   GOTO LABEL_LG3_FALSE
LABEL_LG3_2
   BTFSS ??????????
   GOTO LABEL_LG3_FALSE
LABEL_LG3_3
   BTFSC ??????????
   GOTO LABEL_LG3_FALSE

LABEL_LG3_TRUE
   BSF S0,2
   GOTO LABEL_LG3_ENDE
LABEL_LG3_FALSE
   BCF STATUS,RP0   ; Bank 0
   BCF STATUS,RP1   ; Bank 0
   BCF S0,2
LABEL_LG3_ENDE
;***************************************************
; ODER - Gatter -> LG4
;***************************************************

LABEL_LG4_1
   BTFSC S0,1
   GOTO LABEL_LG4_TRUE
LABEL_LG4_2
   BTFSC S0,0
   GOTO LABEL_LG4_TRUE
LABEL_LG4_3
   BTFSC S0,2
   GOTO LABEL_LG4_TRUE

LABEL_LG4_FALSE
   BCF ??????????
   GOTO LABEL_LG4_ENDE
LABEL_LG4_TRUE
   BSF ??????????
LABEL_LG4_ENDE
;****************************************

   GOTO MAIN


   END

Kabil ATICI

Alıntı yapılan: sydsengul - 20 Mart 2011, 19:33:15
çizgi izleyen 3 sensörlü robot projesi için bu kod uygun mu acaba ?
bu konuda bilgisi olan arkadaşlar varsa yardımlarınızı bekliyorum

LIST P=16F628     
              include "P16F628.INC"
   __CONFIG B'11110100001010'
LSB    EQU    H'20'
MSB    EQU    H'21'
;**************
   ORG    0X00
   GOTO    BASLA
;*******************
BEKLE
   MOVLW .45
   MOVWF LSB
DON1
   MOVLW .95
   MOVWF MSB
DON2   
   DECFSZ  MSB,F
   GOTO DON2
   DECFSZ  LSB,F
   GOTO DON1
   RETURN
;****************

BASLA
   CLRF    MSB
   CLRF    LSB
   MOVLW   B'00000111'
   MOVWF   CMCON
   BSF    STATUS,5
   MOVLW     B'111111'
   MOVWF    TRISA^80H   
   CLRF    TRISB^80H
   BCF    STATUS,5   
   CLRF    PORTB
;********************************************   
TEST
   BTFSS PORTA,0
   GOTO    SAG
   BTFSS PORTA,1
   GOTO   SOL
   GOTO   TEST

SOL   
   BTFSS PORTA,2
   GOTO    TEST
   
   MOVLW B'11000110'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'01000011'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'01001001'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'11001100'
   MOVWF PORTB
   CALL BEKLE
   CLRF    PORTB
   BTFSS PORTA,0
   GOTO      SAG
   GOTO      SOL
;*******************************
SAG
   BTFSS PORTA,2
   GOTO    TEST
   
   MOVLW B'00110011'
   MOVWF PORTB
   CALL BEKLE
   
   MOVLW B'00100110'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'00101100'
   MOVWF PORTB
   CALL BEKLE

   MOVLW B'00111001'
   MOVWF PORTB
   CALL BEKLE
   CLRF    PORTB
   BTFSS PORTA,1
   GOTO    SOL
   GOTO    SAG

   END
Hat izleyen robot programı gibi duruyor. A portunun 0,1,2 bacaklarına  alıcılar takılmış.B portunun 0-3 bacaklarına adım motor sürücü çipi ve 4-7 bacaklarına adım sürücü çipi kontrol uçları takılmış.

kolay gelsin
ambar7