bozuk para kanalı devre hk

Başlatan yolcu27, 24 Aralık 2016, 10:38:02

yolcu27

Arkadaşlar 1 tl ile çalışan oyuncakların bozuk para modülünden aldım modül ile birlikte birde devre kurmam gerekiyor. modüle para atınca çıkış veriyor. ben bu çıkışı portd.2 ye giriyorum. buna göre belirli programlar çalıştırmak istiyorum ama kaldım. senaryoyu yazayım fikirlerinizi alayım birde
senaryo:

devre ilk açıldığında 10sn içinde program seçmek için bir ekranımız olacak . bir buton ile programlar arasında geçiş yapacağız. bu ekranda yazacak program1 2 3 4 diye.

daha sonra bu programa göre para atılarak portd.3 ten çıkış alacağım her programda 30 dk arttırarak yani 30 60 90 120 diye. 

şuana kadar program seçip ekranda görünmesini sağladım. Program için para adlı bir değişken atadım. her para atıldıgında pord.2=1 oalcak ve para=para+1 olacak. bu para atma süresi 10 sn olacak 10 sn içinde paramız programımızın şartına uygun ise portd.3 çıkış verecek değilse beklemeye devam edecek.

şimdi yazarken farkettim 30 dk çalışma bitince ne olacak :) program başa dönüp yeniden program seçmemizi istemesi lazım burada da 10 sn olacaktı. ozaman bunun öncesinde bir buton ekleyeyim ve butona basıldığında program seçe girsin. program çalışması bitince de yeniden o program seçe yönlendirecek butona basılmasını beklesin. ( BU KISIMI HALLEDEBİLİRİM)





@ DEVICE pic16F877     
@ DEVICE pic16F877, WDT_off
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

TRISA=%00010000  ' porta4 GİRİŞ GERİSİ çıkış
TRISB=0            ' PORTB ÇIKIS
TRISD=%00000101             ' PORTD.0 giriş gerisi çıkış
PORTD=0              ' PORTD SIFIRLANDI
PORTA=0             ' PORTA SFIRLANDI

DEFINE LCD_DREG PORTD        'LCD data bacakları PortD ye bağlı
DEFINE LCD_DBIT 4            'LCD data bacakları 4. bit den başlıyor
DEFINE LCD_RSREG PORTB       'LCD RS Bacağı PortB ye bağlı
DEFINE LCD_RSBIT 1           'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_EREG PORTB        'LCD Enable Bacağı PortB ye bağlı
DEFINE LCD_EBIT 3            'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RWREG PORTB       'LCD RW Bacağı PortB ye bağlı
DEFINE LCD_RWBIT 2            'LCD RW Bacağı 2. bite bağlı
DEFINE LCD_BITS 4            'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2           'LCD 2 sıra yazabiliyor

say var byte
x var word
para var byte
clear
pause 200


ana:
   
LCDOUT "MENU TUSUNA     "           
LCDOUT $FE,$C0,"BASINIZ         "

if portA.4=1 then
GOTO EKRAN
ENDIF

goto ana


ekran:

lcdout $fe,1     
LCDOUT "PROGRAM SECINIZ"



secme:
SAY=0



FOR X=0 TO 100

while portd.0=1   
say=say+1   
gosub kontrol
wend

IF SAY=5 THEN SAY=0   
pause 100
NEXT
GOTO PROGKONTROL   




kontrol:

if say=1 then   
lcdout $fe,1     
LCDOUT "PROGRAM 1"


endif

if say=2 then   
lcdout $fe,1     
LCDOUT "PROGRAM 2"


endif

if say=3 then   
lcdout $fe,1     
LCDOUT "PROGRAM 3"

endif

if say=4 then   
lcdout $fe,1     
LCDOUT "PROGRAM 4"

endif


return


PROGKONTROL:
pause 100
if say=1 then prog1
if say=2 then prog2
if say=3 then prog3
if say=4 then prog4

goto progkontrol


prog1:

lcdout $fe,1     
LCDOUT "PROGRAM 1"
LCDOUT $FE,$C0,"JETON ATINIZ"

for x=0 to 200
while portd.2=1
para=para+1
wend
pause 50
next

if para=1 then
portd.3=1
pause 10000
portd.3=0
goto ana
endif

goto prog1


prog2:

lcdout $fe,1     
LCDOUT "PROGRAM 2"
LCDOUT $FE,$C0,"JETON ATINIZ"

for x=0 to 200
while portd.2=1
para=para+1
wend
pause 50
next

if para=2 then
portd.3=1 
pause 10000
portd.3=0
goto ana
endif

goto prog2
prog3:

lcdout $fe,1     
LCDOUT "PROGRAM 3"
LCDOUT $FE,$C0,"JETON ATINIZ"

for x=0 to 200
while portd.2=1
para=para+1
wend
pause 50
next

if para=3 then
portd.3=1
pause 10000
portd.3=0
goto ana
endif
goto prog3

prog4:

lcdout $fe,1     
LCDOUT "PROGRAM 4"
LCDOUT $FE,$C0,"JETON ATINIZ"

for x=0 to 200
while portd.2=1
para=para+1
wend
pause 50
next

if para=4 then
portd.3=1
pause 10000
portd.3=0
goto ana
endif


  goto prog4






SONRADAN PORTA.4 PİNE BUTON BAGLADIM MENU YE GİRMEK İÇİN BUNA BASILMASI GEREK. PROGRM BİTİNCE MENU TUSUNA YÖNLENDİRDİM.

SORUNUM PROG1 İÇİN 30DK LIK SÜRENİN BAŞLAMASI İÇİN 1 JETON ATILMASI GEREK BUNU BUTON İLE YAPMAYA ÇALIŞMAMA RAĞMEN  BİR TÜRLÜ BAŞARAMADIM.

SANIRIM SORUNLU OLAN KODLAR ŞUNLAR

prog3:

lcdout $fe,1     
LCDOUT "PROGRAM 3"
LCDOUT $FE,$C0,"JETON ATINIZ"

for x=0 to 200
while portd.2=1
para=para+1
wend
pause 50
next

if para=3 then
portd.3=1
pause 10000
portd.3=0
goto ana
endif
goto prog3



BU ALT PROGRAMLARDA SORUN VAR SANIRIM

Powered by EzPortal