avatar_fatih88

dht22 bilgi göndermeyi kesiyor!!!

Başlatan fatih88, 12 Mart 2019, 21:55:41

fatih88

sayın form üyeleri bir arkadaşım için atmega 328p ile kuluçka devresi yaptım ama sensör bilgi göndermeyi kesiyor mesela 10 saat sonra sistem kontaktör ile çalışıyordu lcd ve dht22 emk dan etkileniyor ama atmega normal çalışmasına devam ediyormuş timer ile saat yapmıştım ve her saniyede blink yapan bir led koymuştum demekki atmega kitlenmiyor blik yapmaya devam ediyormuş sonra kontaktörü söküp röle takmasını söyledim lcd düzeldi harfleri karıştırmıyor ama dht22 bilgi göndermeyi belli bir süre sonra kesiyor bunun sebebi ne olabilir başına gelen oldumu
(ha bu arada atmel manyetik alandan etkilenmediğini etkileniyorsada pic kadar olmadığı aşıkar)
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Ben olsam atmega dan bu kadar emin olmazdım. Tek kablo haberleşmede bazen senör işlemcş dinler bazendw işlemci sensörü dinler. Bu dinleme modundan çıkış data pininin belirli lojik seviyeye çekilerek dinleyene işaret vermekle oluyor. Bu esnada gelecek bir parazit dinleneni dinleyen konumuna geçirebilir. Bir düşünsene hem sensör hemde işlemci dinleyen konumunda kalsa ne olur. Bekler dururlar.
Ete

fatih88

Güven meselesi değil esasında hocam her ikiside aynı şeyin laciverti bu emk sorunundan muzdarip olduğum için test ettik dayanımı pic e göre iyi hala pic i kullanıyorum hocam kullanmayada devam etmeyi düşünüyorum hani pic vs atmelmi diyorlar ya bence ikisinin birbirine üstünlüğü var endüstride pek pic ile projeler görünmüyor genelde atmel çok çıkıyorum belkide bizim gibi hobicilerin filtreleri göz ardı etmemizden dolayı olabilir
Sayın hocam peki bu sorunla mücadele etmek için siz nasıl bir yol çizerdiniz. Evet düşündümde siz haklisiniz enerji kesilip açılınca düzeliyor sanırsam yazdığım kütüphanede bir sorun yoktur diye düşünüyorum  ama bu sorun çok önemli yumurtalar bu yüzden telef olabilir
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Bence dht olumadan önce bir timer kesmesi aç normal okuma süresi aşılırsa kesme olsun bir bit değişkeni set ederek programı yeniden okumaya sevket.
Ete

fatih88

Hocam zaten bir timer var saat için bunun içinde yapsam olurmu tam demek istediğinizi anlayamadım bi timeout yapmamı mı istiyorsunuz belli bir süre datada değişim yoksa tekrar okumamı yollayayım?
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Detaylı açıklayayım.
Sensör okuma kısmı kod işleme süresi olarak diyelimki 100 ms sürüyor.
Sensör okumaya girmeden önce herhangi bir timer kesmesi aktive etsem yada hiç kesme kullanma.
Timer'ı 110 yada 120 ms sonra overflow olacak şekilde ayarla. Biliyorsun kesme aktif etmesende timer lar kesme bayrağını set eder.
Diyelimki Timer-1 i kullanacaksın.  DHT okumaya başlamadan önce timer'a önyükleme değerini ver. PIR1.0 (kesme bayrağı) sıfırla ve okumaya başla.
Ama şöyle okumaya başla;
While PIR1.0=0
dht okuma kod satırları bu bölümde olsun
Okuma başarılı olursa wend döngüsünden exit ile çık. Yada bir şekilde çık.Çıkmanın türlü yolu var. Önemli olan okumayı yapıp yapmadığın dır. Yapmış isen çıkarsın yapmamış isen zaten program takılmış demektir o zaman bir müddet sonra PIR1.0=1 olacaktır. Olursa program Wend satırı altına geçecektir otomatikman.
wend
Burada önce TMR1'ikapat sonra
IF PIR1.0=1 ise sistem takıldı ve okuma gerçekleşmedi demektir. Yeniden okumaya yönlendir.
Ama PIR1.0=0 ise okuma gerçekleşti demektir normal program seyirine devam edersin.
Hepsi bu.
Ete

fatih88

bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ersangundogdu


fatih88

Konyadan malzemeciden usta bildiğim kadarı ile ardunio malzemeleri satanda var galiba
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ersangundogdu

Hiç rast gelmedim. Güzelmiş. 4 tuşlu devrelerde güzel olur.

fatih88

bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

ete hocam dediğiniz gibi kütüphaneye timeout koydum düzeldi şu an hiç okumayı kesmemiş
teşekkürler
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Çok güzel sevindim akıl her sorunun üstesinden gelir.
Ete

zeus48

#14
Ete hocam mrb. Benim sorunum arkadaşın sorunuyla aynı. Kuluçka makinası yaptım bir süre sonra dht22 okumayı kesiyor. Diyeceksinizki
çözümünü verdim düzeldi, evet düzelmiş. Ben hiç kesme ve timer kullanmadım nasıl yapılacağınıda bilmiyorum anlayamadım, yapamadım. Kodlarım aşağıda. Hocam bana yardımcı olabilirmisiniz . Nereye ne yazacağım. İyi çalışmalar


'*  Notes   : KULUÇKA MAKİNASI                               *
'*  İşlemci : 16F873A                                                  *
'****************************************************************
BAS:
@ __config _XT_OSC & _WDT_OFF & _LVP_OFF & _CP_ALL

DEFINE OSC 4
CMCON =7
ADCON1=7 'ADC leri iptal pinlerin hepsi digital
OPTION_REG=7
TRISA=%000010000
TRISB=%11110000
TRISC=%10000000

PORTA=0
PORTB=0
PORTC=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MEM VAR BYTE
MEZ VAR BYTE
SN VAR BYTE
DAK VAR BYTE
SAAT VAR BYTE
GUN VAR BYTE
AY VAR BYTE                                                       
YIL VAR BYTE
HFGUN  VAR BYTE
SAYI VAR BYTE
BIRLER VAR BYTE
ONLAR VAR BYTE
MENUS VAR BYTE 'SELECT CASE SEÇİM DEĞİŞKENİ
CLEAR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SYMBOL  RTC_DTA=PORTC.2
SYMBOL  RTC_CLK=PORTC.1
SYMBOL  RTC_RST=PORTC.3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DEFINE LCD_DREG    PORTB 
DEFINE LCD_DBIT    0     
DEFINE LCD_EREG    PORTC 
DEFINE LCD_EBIT    5     
DEFINE LCD_RSREG   PORTC
DEFINE LCD_RSBIT   4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Deg         CON 223         ' ° işareti

symbol DHT22=PORTA.3
I        VAR BYTE
TAMRUT   VAR WORD
ONDARUT VAR BYTE
TAMISI     VAR WORD
ONDAISI   VAR BYTE
CONTROL var byte
ISARET VAR BYTE

GOSSAY VAR WORD   ;SAAT TARİH GÖSTERME SÜRESİ SAYMA
GOSSAY=0
HESAPGUN VAR BYTE  ;YUMURTANI KOYULDUĞU GÜN SAYISI
READ 1,HESAPGUN

YUMGUN VAR BYTE    ;YUMURTA KUNULDUGU GÜNSAYISI İLE İLGİLİ
YUMSAAT VAR BYTE   ;YUMURTA KUNULDUGU GÜNSAYISI İLE İLGİLİ
READ 2,YUMGUN
READ 3,YUMSAAT

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SYMBOL  LAM=PORTA.2   ;LAMBA ÇIKIŞI
SYMBOL  CEV=PORTC.6   ;ÇEVİRME ÇIKIŞI
SYMBOL  IFN=PORTA.0   ;İÇ FAN ÇIKIŞ
SYMBOL  DFN=PORTA.1   ;DIŞ FAN ÇIKIŞ
SYMBOL  BUZ=PORTC.7   ;BUZER

SYMBOL  SEC=PORTB.4  ;AYAR BUTONU
SYMBOL  ILR=PORTB.5  ;AYAR BUTONU
SYMBOL  GER=PORTB.6  ;AYAR BUTONU
SYMBOL  OK=PORTB.7  ;AYAR BUTONU


PAUSE 1000
KOYDUM VAR BYTE
KOYDUM=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDOUT $FE,$80,"MEGA ELK FETHiYE"
LCDOUT $FE,$C0,"TEL:542 252 1001"
PAUSE 3000
LCDOUT $FE,1

LCDOUT $FE,$80,"BEKLE SiSTEM"
LCDOUT $FE,$C0,"HAZIRLANIYOR"
DON VAR BYTE    ;DÖNDÜRME ZAMANI DEĞİŞKENİ
GOSUB ZAMAN_OKU:PAUSE 1000
GOSUB ZAMAN_OKU
DON=SAAT
DON=DON+2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BASLA:

IFN=1

GOSUB ZAMAN_OKU:PAUSE 100
GOSUB DHT22OKU:PAUSE 100     'SONSÖR OKU VE SICAKLIĞI EKRANA YAZ

LCDOUT $FE,$80,DEC2 HESAPGUN,".GUN ","NEM=%",DEC2 TAMRUT,",",DEC1 ONDARUT
LCDOUT $FE,$C0,"ISI=",DEC2 TAMISI,",",DEC1 ONDAISI,Deg,"C ",dec2 SAAT,":",DEC2 DAK


IF DON=SAAT AND HESAPGUN<18 THEN LCDOUT $FE,1:GOto DONDUR



IF HESAPGUN<18 THEN GOSUB BIRINCI
IF HESAPGUN>17 THEN GOSUB IKINCI

IF SAAT=0 AND DAK=0 THEN YUMGUN=1:WRITE 2,YUMGUN:DON=1
IF YUMSAAT=SAAT AND YUMGUN=1 THEN YUMGUN=0:WRITE 2,YUMGUN:PAUSE 100:HESAPGUN=HESAPGUN+1:WRITE 1,HESAPGUN:PAUSE 100

IF SEC=0 THEN LCDOUT $FE,1:GOTO HOUR    ;SAAT TARİH AYARINA GİT
IF GER=0 AND ILR=0 THEN LCDOUT $FE,1:GOTO SIFIRLA
IF ILR=0 THEN  LCDOUT $FE,1:GOTO EKRAN0  ;SAAT TERİH GÖSTERE GİT
IF OK=0  THEN LCDOUT $FE,1:GOTO BASLAT   ;AYARLAR SIFIRLANDI YENİ YUMURTA KOY

IF GER=0 THEN GOSUB BAK

IF KOYDUM=1 THEN INPUT BUZ:GOTO BASLA
PAUSE 2500
IF HESAPGUN=18 THEN OUTPUT BUZ:LCDOUT $FE,1:GOSUB SELE
GOTO BASLA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SELE:
LCDOUT $FE,$80,"YUMURTALARI"   ;18. gün ekrana gelecek
LCDOUT $FE,$C0,"SELEYE KOY"

BUZ=1:PAUSE 250
BUZ=0:PAUSE 250

BUZ=1:PAUSE 250
BUZ=0:PAUSE 250

BUZ=1:PAUSE 250
BUZ=0:PAUSE 250
LCDOUT $FE,1
RETURN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BAK:
PAUSE 3000
IF GER=1 THEN GOTO BASLA
KOYDUM=1
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BIRINCI:
IF TAMISI<37 THEN LAM=1
IF TAMISI=37 AND ONDAISI<8 THEN LAM=1
IF TAMISI=37 AND ONDAISI>7 THEN LAM=0
IF TAMISI>37 THEN LAM=0

IF TAMRUT >57 THEN DFN=1
IF TAMRUT <57THEN DFN=0
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IKINCI:
IF TAMISI<37 THEN LAM=1
IF TAMISI=37 AND ONDAISI<5 THEN LAM=1
IF TAMISI=37 AND ONDAISI>4 THEN LAM=0
IF TAMISI>37 THEN LAM=0

IF TAMRUT >67 THEN DFN=1
IF TAMRUT <67 THEN DFN=0
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DONDUR:
LCDOUT $FE,$80,"YUMURTALAR"
LCDOUT $FE,$C0,"CEVRiLiYOR"
IF DON>23 THEN DON=0
CEV=1:PAUSE 15000:CEV=0
LCDOUT $FE,1
goto BAS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BASLAT:
PAUSE 5000
IF OK=1 THEN GOTO BASLA
LCDOUT $FE,$80,"BEKLE BASLAYACAK"
YUMSAAT=SAAT
HESAPGUN=0:WRITE 1,HESAPGUN:PAUSE 100
WRITE 3,YUMSAAT:PAUSE 3000
LCDOUT $FE,1:
LCDOUT $FE,$80,"YENi YUMURTA"
LCDOUT $FE,$C0,"KOYABiLiRSiN"
PAUSE 4000
LCDOUT $FE,1:
GOTO BASLA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
EKRAN0:
GOSSAY=GOSSAY+1
GOSUB ZAMAN_OKU
LCDOUT $FE,$80,DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
LCDOUT $FE,$C0,DEC2 GUN,"/",DEC2 AY,"/20",DEC2 YIL,"/"
GOSUB DAYYAZ
IF GOSSAY>70 THEN LCDOUT $FE,1:GOSSAY=0:GOTO BASLA
GOTO EKRAN0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SIFIRLA:
PAUSE 5000
IF GER=1 THEN GOTO BASLA
SIFDEV:
LCDOUT $FE,$80,DEC2 HESAPGUN,".GUN"

IF ILR=0 THEN HESAPGUN=HESAPGUN+1
IF GER=0 THEN HESAPGUN=HESAPGUN-1
IF HESAPGUN=255 THEN HESAPGUN=21
IF HESAPGUN>21 THEN HESAPGUN=0
IF OK=0 THEN WRITE 1,HESAPGUN:PAUSE 100: LCDOUT $FE,1:GOTO BASLA
PAUSE 200
GOTO SIFDEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DHT22OKU:
           output DHT22
           DHT22=1
           PAUSEUS 5
           DHT22=0
           pause 5      '1-10 ms bekle
           DHT22=1         'Data pinini High yap
           Pauseus 40      '40 us bekle
           INPUT DHT22
           PAUSEUS 5
           WHILE DHT22=0:WEND
           PAUSEUS 80

          IF DHT22=1 then GOTO BASLA   ;DHT22_HATA
           
           
          TAMRUT=0
          FOR I=15 TO 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
             WHILE DHT22=0:WEND 
             PAUSEUS 30
             IF DHT22=1 THEN TAMRUT.0[I]=1
             WHILE DHT22=1:WEND
           NEXT

          TAMISI=0
          FOR I=15 TO 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
             WHILE DHT22=0:WEND
             PAUSEUS 30
             IF DHT22=1 THEN TAMISI.0[I]=1
             WHILE DHT22=1:WEND
           NEXT
         
          CONTROL=0
          FOR I=7 TO 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
             WHILE DHT22=0:WEND
             PAUSEUS 30
             IF DHT22=1 THEN CONTROL.0[I]=1
             WHILE DHT22=1:WEND
           NEXT
          OUTPUT DHT22
          DHT22=0
          IF TAMISI.BIT15=1 THEN
          ;TAMISI=TAMISI-48
          ISARET="-"
          ONDARUT=TAMRUT//10
          TAMRUT=TAMRUT/10
          ONDAISI=TAMISI//10
          TAMISI=TAMISI/10
           ELSE
           ISARET="+"
          ONDARUT=TAMRUT//10:TAMRUT=TAMRUT/10
          ONDAISI=TAMISI//10:TAMISI=TAMISI/10
          ENDIF
          RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



ZAMAN_OKU:
         HIGH RTC_RST
         SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BF]
         SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HFGUN, YIL, MEZ]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         LOW RTC_RST :PAUSE 100
         RETURN
         
ZAMAN_YAZ:
           
        HIGH  RTC_RST
        SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'YAZMAK İÇİN HAZIRLA
        LOW RTC_RST:PAUSE 1
        HIGH  RTC_RST
        SHIFTOUT RTC_DTA, RTC_CLK, 0, [$90, 165]    'ŞARJ AÇILDI
        LOW RTC_RST:PAUSE 1         
        HIGH RTC_RST         
        SHIFTOUT  RTC_DTA, RTC_CLK, 0, [$BE,SN, DAK, SAAT,GUN , AY,HFGUN,  YIL, 0]  'YAZ
        LOW RTC_RST
        PAUSE 10
        RETURN
         

''*** :))))))))))))))))    :))))))))))))))))))
CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4                                 
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
         RETURN
TERSCEVIR:
        ONLAR=MEM DIG 1
        ONLAR=ONLAR<<4
        BIRLER=MEM DIG 0
        SAYI=ONLAR|BIRLER
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
'''***** :)))))) AYARLARI KAYDET BÖLÜMÜ *********
KAYDET:
MEM=DAK:GOSUB TERSCEVIR:DAK=SAYI'&%01111111
MEM=SAAT:GOSUB TERSCEVIR:SAAT=SAYI'&%00011111
MEM=GUN:GOSUB TERSCEVIR:GUN=SAYI'&%00111111
MEM=AY:GOSUB TERSCEVIR:AY=SAYI'&%00011111
MEM=YIL:GOSUB TERSCEVIR:YIL=SAYI
SN=0
GOSUB ZAMAN_YAZ:PAUSE 100 
LCDOUT $FE,$80,"KAYDEDiLDi"
PAUSE 2000
LCDOUT $FE,1
GOTO BASLA       
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HOUR:
PAUSE 3000
IF SEC=1 THEN LCDOUT $FE,1:GOTO BASLA
LCDOUT $FE,$80,"SAAT=",DEC2 SAAT
PAUSE 2000

SDEV:
LCDOUT $FE,$80,"SAAT=",DEC2 SAAT
IF ILR=0 THEN SAAT=SAAT+1
IF GER=0 THEN SAAT=SAAT-1

IF SAAT=255 THEN SAAT=23
IF SAAT>23 THEN SAAT=0
PAUSE 200

IF OK=0 THEN LCDOUT $FE,1:GOTO DAKIKA
GOTO SDEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DAKIKA:
LCDOUT $FE,$80,"DAKiKA=",DEC2 DAK
PAUSE 2000

DDEV:
LCDOUT $FE,$80,"DAKiKA=",DEC2 DAK
IF ILR=0 THEN DAK=DAK+1
IF GER=0 THEN DAK=DAK-1

IF DAK=255 THEN DAK=59
IF DAK>59 THEN DAK=0
PAUSE 200
IF OK=0 THEN LCDOUT $FE,1:GOTO AYGUN
GOTO DDEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AYGUN:
LCDOUT $FE,$80,"AYIN KACI=",DEC2 GUN
PAUSE 2000

GDEV:
LCDOUT $FE,$80,"AYIN KACI=",DEC2 GUN
IF ILR=0 THEN GUN=GUN+1
IF GER=0 THEN GUN=GUN-1

IF GUN=255 THEN GUN=31
IF GUN>31 THEN GUN=1
PAUSE 200
IF OK=0 THEN LCDOUT $FE,1:GOTO AYAYAR
GOTO GDEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AYAYAR:
LCDOUT $FE,$80,"HANGi AY=",DEC2 AY
PAUSE 2000

ADEV:
LCDOUT $FE,$80,"HANGi AY=",DEC2 AY
IF ILR=0 THEN AY=AY+1
IF GER=0 THEN AY=AY-1

IF AY=255 THEN AY=12
IF AY>12 THEN AY=1
PAUSE 200
IF OK=0 THEN LCDOUT $FE,1:GOTO YILAYAR
GOTO ADEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
YILAYAR:
LCDOUT $FE,$80,"YIL=20",DEC2 YIL
PAUSE 2000

YDEV:
LCDOUT $FE,$80,"YIL=20",DEC2 YIL
IF ILR=0 THEN YIL=YIL+1
IF GER=0 THEN YIL=YIL-1

IF YIL>99 THEN YIL=19
IF YIL<19 THEN YIL=99
PAUSE 200
IF OK=0 THEN LCDOUT $FE,1:GOTO HAFGUN
GOTO YDEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HAFGUN:
GOSUB DAYYAZ
PAUSE 2000

HFDEV:
GOSUB DAYYAZ
IF ILR=0 THEN HFGUN=HFGUN+1
IF GER=0 THEN HFGUN=HFGUN-1

IF HFGUN=8 THEN HFGUN=1
IF HFGUN=0 THEN HFGUN=7
PAUSE 200
IF OK=0 THEN LCDOUT $FE,1:GOTO KAYDET
GOTO HFDEV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DAYYAZ:
SELECT CASE HFGUN
CASE 1
LCDOUT $FE,$CB,"PAZR"
CASE 2
LCDOUT $FE,$CB,"PZTS"
CASE 3
LCDOUT $FE,$CB,"SALI"
CASE 4
LCDOUT $FE,$CB,"CARS"
CASE 5
LCDOUT $FE,$CB,"PERS"       
CASE 6
LCDOUT $FE,$CB,"CUMA"
CASE 7
LCDOUT $FE,$CB,"CMTS"
CASE ELSE
LCDOUT $FE,$CB,"HATA"
END SELECT
RETURN

END

Powered by EzPortal