buton ile led yakma

Başlatan mustikangal, 29 Kasım 2015, 20:02:58

mustikangal

merhaba picbasic te yeniyim
butona ilk kez basıp bıraktığımda led yanacak,ikinci basıp bıraktığımda ise blink yapacak.yanıp sönecek.
deniyorum deniyorum ama olmuyor.Devreyi breadboard da kurdum ama kodu çorbaya çevirdim sanırım :))
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _CP_OFF
OSCCAL=%10000000
DEFINE OSC 4
DEFINE OSCCAL_1K 1
CMCON=7
symbol buton=gpio.1   'buton bacağı
symbol led=gpio.0     'led bacağı
sayi var byte          'sayi diye değişken oluşturdum.
trisio=0
buton=0
led=0
sayiver:                'sayi değişkenine değer verdirdim
sayi=1                     'burada ledi yakıp söndürdüm.
high led
pause 1000
low led
pause 1000
high led
pause 500
low led
pause 100
goto basla
basla:
if buton=1 and sayi=1 then    'sayi 1 ve butona basılınca ilk e git
goto ilk
endif
if buton=1 and sayi=2 then     'sayi 2 ve butona basılınca ikinci ye git
goto ikinci
endif
pause 10                        'butona basılmıyorsa basla ya git
goto basla
ilk:                             'ilk:
high led                         'ledi yak ve butona basılmadığı sürece bekle
sayi=2
while buton=0 
stop
wend
if buton=1 then                  'butona basılınca ikinci ye git
goto ikinci
endif
ikinci:
sayi=1                            'butona basılmadığı sürece blink yap
while buton=0
tekrar:
high led
pause 100
low led
pause 100
goto tekrar
wend
if buton=1 then               'butona basılınca ilk e git
goto ilk
endif
end                                'son



karacan451



sayi var byte
sayi=0
trisa=%00001
trisb=%00000000
porta=0
portb =0
basla:

if porta.0=1 then
sayi=sayi+1
while porta.0=1
wend
endif

if sayi=3 then sayi=0

if sayi=1 then portb.0=1

if sayi=2 then
portb.0=1
pause 1000
portb.0=0
pause 1000
endif





goto basla



karacan451


if porta.0=1 then
sayi=sayi+1
while porta.0=1
wend
endif


Yukardaki kod ra0 pine  bağlı butona basıldığında sayi=1 yapar ve while komuta geldiğinde sayıyı sürekli arttırmasını önlüyor.

sayi=2 olduğunu var sayalım butona basıldığında sayi=3 olacak tekrar butona basıldığında bu sefer sayi=4 olacak.Bunu önlemek için
şu kodu yazıyoruz


if sayi=3 then sayi=0


böylece sayi=0 olacak.Tekrar program başa dönecek.

mustikangal

çok teşekkürler! sonunda çözdüm :D
basla:

if buton=0 then
sayi=sayi+1
while buton=0
wend
endif

if sayi=1 then
high led
pause 100
endif

if sayi=2  then
high led
pause 200
low led
pause 200
endif

if sayi=3 then
sayi=0
low led
pause 100
endif
goto basla

Powered by EzPortal