Arkadaşlar içinden çıkamadığım bir sorun var. Çok araştırdım bulamadım. Sonunda buraya sormaya karar verdim. Çizgi izleyen robot yapıyorum şuan.. Programlama aşamasında takıldım. Elimdeki program şu:
Kod:
;***GIRISLERI TANIMLADIK***********************************************
INPUT PORTB.0 ;SOLDAKI CNY70
INPUT PORTB.1 ;ORTADAKI CNY70
INPUT PORTB.2 ;SAGDAKI CNY70
;***ÇIKISLARI TANIMLADIK***********************************************
OUTPUT PORTB.3 ;SOL MOTOR ILERI
OUTPUT PORTB.4 ;SOL MOTOR GERI
OUTPUT PORTB.5 ;SAG MOTOR ILERI
OUTPUT PORTB.6 ;SAG MOTOR GERI
;***ISLEM KOLAYLIGI ICIN PORT ISIMLERINI SEMBOLLERE DONUSTURDUK********
SYMBOL SOLCNY =PORTB.0
SYMBOL ORTACNY =PORTB.1
SYMBOL SAGCNY =PORTB.2
SYMBOL SOLILERI=PORTB.3
SYMBOL SOLGERI =PORTB.4
SYMBOL SAGILERI=PORTB.5
SYMBOL SAGGERI =PORTB.6
;***ILK HAREKET********************************************************
BASLANGIC:
GOTO DUZGIT
;***ANA DONGU**********************************************************
ANA:
IF SOLCNY=1 THEN SOLA_DON ;EGER SA DISARI ÇIKTIYSA SOLA DÖN
IF SAGCNY=1 THEN SAGA_DON ;EGER SOL DISARI ÇIKTIYSA SAA DÖN
IF ORTACNY=1 THEN DUZGIT ;EGER ORTA BEYAZI GORUYORSA DÜZ GT
GOTO ANA
;***ALT RUTINLER*******************************************************
SOLA_DON:
HIGH SAGILERI ;YALNIZ SAG MOTORU ÇALISTITIRSA SOLA DONER
LOW SAGGERI
LOW SOLILERI
LOW SOLGERI
GOTO ANA ;ANA PROGRAM BLOGUNA GERI DONER
SAGA_DON:
HIGH SOLILERI ;YALNIZ SOL MOTORU ÇALISTITIRSA SAGA DONER
LOW SOLGERI
LOW SAGILERI
LOW SAGGERI
GOTO ANA ;ANA PROGRAM BLOGUNA GERI DONER
DUZGIT:
HIGH SOLILERI ;HER IKI MOTORU DA ÇALISTITIRSA DUZ DER
HIGH SAGILERI
LOW SOLGERI
LOW SAGGERI
GOTO ANA ;ANA PROGRAM BLOGUNA GERI DONER
END
Bu programı odtünün sitesinden almıştım. MicroStudio ile direkt hex dosyasına dönüştüreyim mi yoksa programın başına DEVICE tanımlamaları yapmak mı gerekiyor?
Kullanacağımız pic16f628 device tanımlamaları şu şekilde sanırım:
Ayarları programa eklemek gibi bir zorunluluk yok. Pic basic pro klasöründe 16f628.inc dosyasını açın, derleyici oradaki fuse ayarlarını kullanır kullanır, o kısımda değiştirebilirsiniz:
Kod:
NOLIST
ifdef PM_USED
LIST
include 'M16F62x.INC' ; PM header
device pic16F628, xt_osc, wdt_on, pwrt_on, mclr_on, lvp_off, protect_off
XALL
NOLIST
else
LIST
LIST p = 16F628, r = dec, w = -302
INCLUDE "P16F628.INC" ; MPASM Header
[COLOR=red] __config _XT_OSC & _WDT_ON & _PWRTE_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF[/COLOR]
NOLIST
endif
LIST
Ayarları programa eklemek gibi bir zorunluluk yok. Pic basic pro klasöründe 16f628.inc dosyasını açın, derleyici oradaki fuse ayarlarını kullanır kullanır, o kısımda değiştirebilirsiniz:
Aldığınız hatayı veya ekran görüntüsünü buraya eklerseniz daha iyi olur,ayrıca fused ayarlarındaki wdt_on seceneğinide off yapın,bir amatör için sorun çıkartabilir.
Tüm cevap veren arkadaşlara teşekkürler. Program kodlarında device tanımlamalarıyla uğraşmıyorum. Pici programlarken Configuration seçeneklerinde osilatör tipini ayarlıyorum. Sorun kalmıyor.