3 kez tuş'a bas LED 300mS yan ve sön,söndükten sonra aynı döngü..

Başlatan onurinci, 12 Ekim 2021, 00:23:50

onurinci

Hocam selam ,bir çarkım var buna bir zincir sarılı her tur 33.3cm yani 3 turda bir metre ediyor,bir metrelik zincirmi geldi diye zinciri çekiyorum 3 tur dönünce zil bir kez tınng ediyor ben asılmaya devam ediyorum ikinci metre tmamlandığında bir kısa dınng zili daha bu böyle devam ediyor 3 tura bir kısa dıng.
bir şeyler karaladım ilk dınng'a kadar gazet güzel ,işlem bittitten sonra başa dön diyorum,dönmuyor her siviçe bir dıng geliyor,

ikinci sorum buna While wend'i nasıl eklerim ?

[@ Device PIC12F675,WDT_OFF,PWRT_ON,PROTECT_OFF, CPD_OFF,MCLR_OFF,BOD_OFF,INTRC_OSC_NOCLKOUT
DEFINE OSC 4
DEFINE OSCCAL_1K 1

TRISIO= %00000001 : GPIO=0
CMCON=7 : ANSEL=0 : VRCON.7=0
OPTION_REG.7= 0 : WPU= %00000001

SYMBOL Switch= GPIO.0          '0. ucunda giriş elemanı BUTON tanımlandı
SAY    VAR  Byte  : SAY=0      'SAY'ı  sıfırla (temizle)

Start:

 If  Switch=1 Then             'BUTON'a basıldı mı?
'-------------------------------------------------------------------------------  
Chk_Sw:
                               'BUTON'a basılı kaldığı sürece döngü oluşturur.
 If  Switch=1 Then GoTo Chk_Sw 'BUTON arkını önler.
    SAY=1+SAY                  'SAY'a 1 ekle
 If  SAY<3   Then              'SAY 3'Ten küçük olduğu sürece
    GoTo    Start              'SAY'In içi 3'dan küçük olduğu sürece BASLA'ya git
 Else                          'değilse

    high GPIO.1 
    Pause 300   ' mS
    LOW GPIO.1
     
 EndIf
 EndIf

'-------------------------------------------------------------------------------     
  End/code]

UGR

If switch=1 then
While switch=1 : wend

Say=say+1
Endif

While döngüsü boyle yazabilirsiniz. Say değişkeni 3 adetten sonra sıfırlamaniz gerekiyor. Program koşullar sağlanamazsa ne yapması gerektiği belirtilmemiş program sonuna goto Start ekleyin.

onurinci

evet goto start vardı orada ,oynarken ben silmişim,ekledim bir şey değişmedi..

ete

Aşağıda olması gerekeni yazdım.
Sorun SAY değişkenini hiç bir yerde sıfırlamamış olman aslında. Bir döngüden sonra değeri sıfırlanmalı ki aynı şeyleri yeniden yapabilsin. Yoksa say üzerine sayar durur.

Start:
      say=0 'başlangıç değerimiz
      while say<3 
        IF SWITCH=0 THEN
           SAY=SAY+1
           WHILE SWITCH=0:WEND
        ENDIF
      WEND
      high GPIO.1 
      Pause 300   '  
      LOW GPIO.1
      PAUSE 1
      GOTO START
Şayet switch mekanik ise "WHILE SWITCH=0:WEND" satırının altına ufak bir pause ekleyebilirsin.

Ete

onurinci


Powered by EzPortal