M

Pic Basic Döngü

Başlatan muratay, 20 Mart 2013, 22:09:00

muratay

Selam arkadaşlar acil yardıma ihtiyacım var....

Aşağıdaki basic kodunda üç tane ayrı motoru ayrı-ayrı çalıştırmak istiyorum, fakat her biri ayrı döngüde çalışacak yani birinin süresini bitip ötekini beklemeyecek...Yani üç anahtarada basıldığında motorlar aynı anda çalışacak fakat zamanını biz ayarlayacağız...Birde bir kaç saatlik süreleri nasıl bir kodla girmeliyiz...Örn:Birinci motor 3 saat çalışıp 1 saat duracak gibi....Devre ektedir kodlarını düzeltmenizi rica ediyorum....

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 28.11.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628a                      'işlemci 16F628                               
@ DEVICE pic16F628a, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628a, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628a, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628a, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628a, XT_OSC              'Harici Kristal Kullanılıyor

TRISA=%00111 'A PORTUN 0(Sıfır)NOLU UCUNU GİRİŞ YAP
TRISB=%00000000 'B PORTLARINI 7 Nolu Ucunu ÇIKIŞ YAP
PORTB=0         'PORTB'YI KAPAT(Çıkış Yap)

'-----Program Başlangıcı----------------------------------------
SOUND PORTB.7,[100,10,50,10] 'Açılışta Bip Sesi....
START:
IF PORTA.0=1 THEN  'PORTB 0 AÇIKSA(BİR İSE) ALT SATIRDAN DEVAM ET   
GOSUB START1  'START1 MENÜSÜNE GİT
endif
IF PORTA.1=1 THEN  'PORTB 0 AÇIKSA(BİR İSE) ALT SATIRDAN DEVAM ET   
GOSUB START2  'START1 MENÜSÜNE GİT
endif
IF PORTA.2=1 THEN  'PORTB 0 AÇIKSA(BİR İSE) ALT SATIRDAN DEVAM ET   
GOSUB START3  'START1 MENÜSÜNE GİT
endif
GOTO START    'START'A GİT

START1:

HIGH PORTB.2
pause 5000 
LOW PORTB.2 'PORTB 5(YEDİ aç)
pause 5000
RETURN        'Kaldığın yere dön
GOTO START

START2:

HIGH PORTB.2
pause 5000 
LOW PORTB.2 'PORTB 5(YEDİ aç)
pause 5000
RETURN        'Kaldığın yere dön
GOTO START

START3:

HIGH PORTB.2
pause 5000 
LOW PORTB.2 'PORTB 5(YEDİ aç)
pause 5000
RETURN        'Kaldığın yere dön
GOTO START


END 'Proğram sonu


BİDİL

#1
Saatteki hassasiyet nedir bilmiyorum ama öncelikle kesme tipi saat palsleri üretmen gerekiyor yani önce saatini yapman lazım. Bununa ilgili kodları ete hocanın saat devrelerinden alabilirsin.ikincisi her bir motora çalışıp duracağı  değerleri beliryeceğin bir değişken tanımlamalısın. Daha sonra programın ana döngüsünde istenen şart oluştuğunda veya oluşmadığında farklı alt döngüye dallanması gerekiyor. Ama işin başı önce saat palslerini kesme yöntemiyle oluşturmak.

muratay


muratay

Aslında ben basitçe kodlarla örneğin: Birinci motor 3 saatte bir 1 dakika çalışsın...İkinci motor 8 saatte bir 2 dakika çalışsın,  3 motor 6 saatte bir 30 sn çalışsın böyle bir program istiyorum basitçe, çok hassas olmasına gerek yok ekransız içerden kodu değiştirmek istiyorum...En önemlisi bağımsız çalışmaları....Yardımcı olursanız memnun olurum...

3mZ

http://etepic.com/index.php/topic,56.30.html

Linkteki devreyi incelemeni tavsiye ederim birebir işini görmeyebilir fakat program mantığını incelemeni tavsiye ederim.

3M

muratay

Teşekkürler inceleyim....

Powered by EzPortal