PIC BASIC PRO VE PIC12F675

Başlatan ermanas, 10 Mart 2015, 14:05:04

ermanas

Merhabalar;

Bu benim ilk konum ama forumu sürekli takip edip kendimce bir şeyler yapmaya çalışıyorum. Aklımda yapmak istediğim bir çalışma var ancak bir noktada takıldım. Forumda arama yapmış olsam da sonuç alamadım. Muhtemelen kolay bir nokta ama takıldım. şöyleki;

Bildiğimiz tek butonla start stop devresi olacak. Araştırmalarım sonucu 12f675 kullanmaya karar verdim. ..pic basic proda yazmaya çalışıyorum.
isiste devreyi aşağıdaki alıntıdaki gibi oluşturdum.
basitçe bir kod oluşturdum muhtemelen yanlışlıklar var. Bu pice dair giriş çıkışların nasıl aktif edip görevlendirileceği noktasında takıldım.
Birde osc kullanımı ve sleep durumu var.
Bu noktalarda bana yardımcı olabilicek cevaplarınızı bekliyorum.

şimdiden teşekkürler.

DEFINE OSC 4
OSCCAL.0=0

OPTION_REG.7=0   

porta=%00000000
basla:
if porta.0=0 then toggle porta.1
pause 300
goto basla


MC_Skywalker

PiC12f675 te girş çışlar port ile adlandırlmaz GPIO şeklindedir.  Aşağıdaki kod PBP 3.0 için butonun basılıp brakılmasına göre LED on/OFF yaparr

@ device intrc_osc_noclkout, wdt_off, mclr_off
Define OSCCAL_1K 1 
LED Con 0        
PB  Var GPIO.3   
ANSEL = 0      
CMCON = 7     	 

mainloop:
If PB = 0 
Low LED    
Else
High LED    
Endif
 
Goto mainloop  
 End

ermanas

yanıtınız için çok teşekkürler.
en kısa sürede deneyip sonucu paylaşacağım

ermanas

Merhaba

öncelikle yardımınız için teşekkür ederim tekrar. kodunuzu denedim ancak istediğim gibi çalışmadı.
istediğim tek butona ilk basışta çıkışın aktif olması ikinci basışta aktifliği kesmesi. tek butonla start sop devresi yani.
bazı değişiklikler yaptım ancak bende tek butonla çıkışın aktifliğini değiştiremedim. aşağıda verdğim kodda giriş 0ken çıkış aktif değil, 1 ken çıkış süreli 0-1-0-1 oluyor.

daha önce yine forumda paylaşılmış 3 butonlu 3 çıkışlı bir start stop devresinden örnek alıyorum ama başarılı olamadım.
hatamı görebilirseniz sevinirim. teşekkürler

devrem ve kodum aşağıdaki gibi;

Define OSCCAL_1K 1
ANSEL = 0             
CMCON = 7
GPIO.0 = 0
GPIO.1 = 0     	 

basla:
If GPIO.1=0 then toggle GPIO.0
pause 100  
Goto basla
eND



ferit06

#4
pause süreniz kısa olduğu için butona basılı süre boyunca çıkış 1-0-1-0 oluyor.

buton denetimini while.... wend ile yapmayı deneyin(Picbasic te varmı onu bilmiyorum yoksa benzer bir komut vardır.)

veya butonun basılı olmadığı durumu algılayıp başa dönün

pause yerine
aa:
If  then GPIO.1=0 goto aa


gibi

ete

Buton olarak kullandığnız pini giriş olarak ayarlamanız gerekiyor.
Ayrıca butona basıldıktan sonra bırakıldığını da test etmeniz gerekir. Aksi taktirde program tuş kontrolünden çıkıp anında yeniden tuş kontrolüne gelir ve siz butonu bırakana kadar bir kaç defa toggle komutunu çalıştırır.

Aşağıdaki kodları deneyin.

Ete

@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _BODEN_OFF & _MCLRE_OFF & _CP_OFF

DEFINE OSC 4
DEFINE OSCCAL_1K 1 

CMCON = 7
ANSEL = 0
GPIO=0
TRISIO=%00000010

pause 200    	 

basla:
If GPIO.1=0 then 
  toggle GPIO.0
  WHILE GPIO.1=0:WEND
  pause 100  
ENDIF

Goto basla
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ermanas

çok teşekkür ederim tamda istediğim gibi çalışıyor.
benim için çok faydalı oldu