tuşa basınca başka programa atlama

Başlatan mc_307, 04 Aralık 2015, 22:54:08

mc_307

selam arkadaşlar, acemice kendimce bişeyler yapmaya çalışıyorum.
pwm den kare dalga üzerine.
amacım şu:
2 adet frekans değerim var. bir butona bastığımda 1. frekans üretimi başlayacak. tekrar bastığımda 2. frekans üretimi.... yani her basışımda bir diğerine geçecek.
hangisinin çalıştığını 2 farklı led yardımı ile anlayacağım ama daha oraya gelemedim.
yazdığım kod şu: bi eksiklik var yapamadım. burda sadece tuşa basınca diğer moda geçmesini istiyorum. ledi sonra eklerim...

Device 16F88
Xtal 4
Output PORTB
Input PORTA.2
Declare CCP1_Pin PORTB.0
Symbol buton=PORTA.2
mod1:
If buton=0 Then GoSub 600hz GoTo mod2
GoTo mod1
mod2:
If buton=0 Then GoSub 6khz GoTo mod1
GoTo mod2
600hz:
HPWM 1,127,600
6khz:
HPWM 1,127,6000
End

F.T

#1
Device 16F88

Xtal 4

Output PORTB

Input PORTA.2

Declare CCP1_Pin PORTB.0

dim say as bit

say=0

Symbol buton=PORTA.2

basla:

If buton=1 Then

toggle say

while buton=0 :wend
delayms 100
endif

if say=0 then HPWM 1,127,600

if say=1 then HPWM 1,127,6000

goto basla
End


böyle denermisin.

not:Değiştirdim.Bu şekilde denermisin.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

mc_307

#2
Alıntı yapılan: F.T - 04 Aralık 2015, 23:56:54
Device 16F88

Xtal 4

Output PORTB

Input PORTA.2

Declare CCP1_Pin PORTB.0

dim say as bit

say=0

Symbol buton=PORTA.2

basla:

If buton=0 Then

toggle say

while buton=0 :wend
delayms 100
endif

if say=0 then HPWM 1,127,600

if say=1 then HPWM 1,127,6000

goto basla
End


böyle denermisin.
olmadı hocam...

mesaj birleştirme:: 05 Aralık 2015, 00:17:44




F.T

#3
Dosyalarını eklermisin.

buton pulldown olarak eklemişin.

if buton=0 then kınmında 0 değilde 1 olarak değiştir if buton=1 then olarak.Aşağıda değiştirdim bir daha dene.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

mc_307

hocam onu 1 yaptım. 600hz veriyor. buton bi işe yaramıyor. yani diğer değere atlamıyor.
dosyalar: http://www.dosya.tc/server5/aeng5f/pwm_deneme.rar.html

F.T

#5
'****************************************************************
'*  Name    : pwm.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 4.12.2015                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device 16F88

Xtal 4

TRISB=%00000000
PORTB=0
TRISA=%00000100
PORTA=0
CMCON=7
ANSEL=0

Declare CCP1_Pin PORTB.0
Dim say As Bit
Dim a As Word

say=0

Symbol bu=PORTA.2
Symbol LED600=PORTB.1
Symbol LED6000=PORTB.2

basla:

If bu=1 Then  
Toggle say   
While bu=1 :Wend
EndIf

If say=0 Then 
a=600
LED6000=0
LED600=1
EndIf

If say=1 Then 
a=6000
LED6000=1
LED600=0
EndIf

HPWM 1,127,a

GoTo basla
End


not=Buton komperatörler ve adc aktif olduğu için işlem görmüyordu.Devre dışı bırakınca şu an çalışıyor.PORTB.1 VE PORTB.2 ye led bağlarsan hangi frekansta çalıştığınıda görebilirsin.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

OG

Device 16F88
Xtal 4
Declare All_Digital = True
Declare CCP1_Pin PORTB.0
ANSEL = 0

Output PORTB

Input PORTA.2


Dim say As Bit
Symbol buton = PORTA.2

Dim deger As Byte
Dim deger_son As Byte

Dim frq As Word
Dim frq_son As Word

Dim x As Byte

say=0


frq = 600
frq_son = 6000
deger = 127
deger_son = 0
GoTo cikis

'''''''''''
basla:
    Clrwdt

    If buton = 1 Then
        Toggle say
        If say = 0 Then
            deger = 127
            frq = 600
        Else
            deger = 127
            frq = 6000
        EndIf
    Else
        GoTo basla
    EndIf
    
cikis:
    ''' Hem frekans hem pwm degeri bir öncesi ile aynı ise tekrar tekrar sürmesin, stabl olmaz.
    If frq = frq_son Then
        If deger = deger_son Then buton_birak 
    EndIf

    HPWM 1,deger,frq
    frq_son = frq
    deger_son = deger
    
buton_birak:
    For x = 1 To 150
        DelayMS 1
        Clrwdt
        If buton = 1 Then buton_birak
    Next        
        
GoTo basla
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mc_307

teşekkürler hocalarım.  ikiside çalışıyor. ledli olarak ft hocam çok güzel oldu. tekrar teşekkür ederim.

OG

Bu programların calışıp çalışmamasından ziyade, değişik kişiler programları içinde, gerekli olan yapıları nasıl bir yöntem ile uyguluyorlar, onları anlamaya çalışırsan ileride daha çok işine yarayacaktır.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ipek

Trafikte olsun askerlikte olsun,keskin cizgilerle cizimiş,net komut setleri vardır,alternatifi mevcut değildir,fakat burada hoş olan aynı derleyici ile yazılmış aynı görevi ifa eden program,kısacası,her yiğidin ayrı bir yoğurt yeyişi varmış,buda her zaman kaliteyi artırır.