if then lcd yazdırma

Başlatan harmanx, 20 Şubat 2013, 15:00:12

harmanx

TEMP1=ADC_ORNEKSAYISI
    
ADC_KANAL1=0 
    
GoTo PRJ_LOOP

ADC_OKU:
ADC_OKU_1:    

ADCIN 0,W1
ADC_KANAL1=ADC_KANAL1+W1 
    
TEMP1=TEMP1-1
If TEMP1>0 Then Return 
''****************************
  

''*****************************
	
ADC_KANAL1=ADC_KANAL1/ADC_ORNEKSAYISI
		
W2=OLCUM_VOLTAJI        
W2=W2/1023
           
ADC_KANAL1=ADC_KANAL1*W2 
        
''Call EKRANI_YAZ

'**********************************************************
If ADC_KANAL1< 25 Then 
GoSub apo
Else
ElseIf ADC_KANAL1> 25 Then
GoSub EKRANI_YAZ        
EndIf

'**********************************

TEMP1=ADC_ORNEKSAYISI
ADC_KANAL1=0
	               
Return

EKRANI_YAZ:

FLD0=ADC_KANAL1
Print $FE, $82
Print "DEGER % "
GoSub DEC_FLD0
'GOTO DEC_FLD0
'If ADC_KANAL1>25 Then DEC_FLD0

apo:
FLD0=ADC_KANAL1
Print $FE,$82
Print "OK OK "
GoSub DEC_FLD0
'GOTO DEC_FLD0
 'If ADC_KANAL1<25 Then DEC_FLD0
 
 
 
'***********************************************************
        
Barval = (FLD0 /2.15 ) + 1	'30volt için 0.55
GoSub Bargraph	    

DEC_FLD0:
Select FLD0  
Case < 10.0   : Print DEC1 FLD0, "     ","   " 
Case < 100.0  : Print DEC1 FLD0, "     ","  " 
Case < 1000.0 : Print DEC1 FLD0, "     "," " 
Case Else     : Print DEC1 FLD0, "     ","" 
EndSelect 
Return
 
Bargraph:
Select Barval
Fullbars = (Barval Min 60) / 3
Partbar = (Barval Min 60) // 3		 
Pad = 19 - Fullbars			
Print $FE, $C0 
Print Rep $03\Fullbars, Partbar, Rep " "\Pad	
EndSelect
Return

End



arkadaşlar içindençıkamadığım if komutu ile ilgili ettikete dallanma yapınca komuta göre  lcd ekrana yazmada sıkıntı oluyor apo adlı etikete gittiğnde ekran normal fakat ekrana_yaz etiketine dallandığında her iki etiketin yazıları lcd ekranında gidip geliyor bunu formulu nasıl olacak yardım lütfen..

If ADC_KANAL1< 25 Then
GoSub apo
Else
ElseIf ADC_KANAL1> 25 Then
GoSub EKRANI_YAZ       
EndIf

'**********************************

TEMP1=ADC_ORNEKSAYISI
ADC_KANAL1=0
                  
Return

EKRANI_YAZ:

FLD0=ADC_KANAL1
Print $FE, $82
Print "DEGER % "
GoSub DEC_FLD0
'GOTO DEC_FLD0
'If ADC_KANAL1>25 Then DEC_FLD0

apo:
FLD0=ADC_KANAL1
Print $FE,$82
Print "OK OK "
GoSub DEC_FLD0
'GOTO DEC_FLD0
'If ADC_KANAL1<25 Then DEC_FLD0

ibrsel

GoSub DEC_FLD0

komutu ile yönlendirdiğiniz yerden " RETURN" komutu ile döndüğünüzde yine "apo" isimli etiketin altındaki komutları gerçekleştiriyor. Bunu yönlendirme komutlarını düzenleyerek programınızı yeniden düzenlemelisiniz.

Maxim

program arapsaçı gibi
kim nereye niye gidiyor? dönüyormu? belli değil
önce onu halletmek lazım

birde protonda print komutu öyle kullanılmaz
örnek:
Print $FE,$82
Print "OK OK "
($82 HANGİ SATIR HANGİ KARAKTER BİLEMEDİM)

doğrusu:
Print at 2,1,"OK OK"
(2. SATIRIN 1. KARAKTERİNDEN BAŞLAR)

harmanx

Alıntı yapılan: ibrsel - 20 Şubat 2013, 15:38:16
GoSub DEC_FLD0

komutu ile yönlendirdiğiniz yerden " RETURN" komutu ile döndüğünüzde yine "apo" isimli etiketin altındaki komutları gerçekleştiriyor. Bunu yönlendirme komutlarını düzenleyerek programınızı yeniden düzenlemelisiniz.

EKRANI_YAZ:

FLD0=ADC_KANAL1
Print $FE, $82
Print "DEGER % "
GoSub DEC_FLD0
'GOTO DEC_FLD0
'If ADC_KANAL1>25 Then DEC_FLD0

apo:
FLD0=ADC_KANAL1
Print $FE,$82
Print "OK OK "
GoSub DEC_FLD0
'GOTO DEC_FLD0
'If ADC_KANAL1<25 Then DEC_FLD0



arkadaşım anladım  ekranı_yaz etiketine dalllandığımda apo etiketi altta kalıyor oda çalışıyor apo etiketinin çalışmaması için ne yapabilirim komut atlama satır atlama veya iptal etme görmeme gibi gibi birşey ....


ibrsel

EKRANI_YAZ:
FLD0=ADC_KANAL1
Print $FE, $82
Print "DEGER % "
GoSub DEC_FLD0
'GOTO DEC_FLD0
'If ADC_KANAL1>25 Then DEC_FLD0


"GoSub DEC_FLD0"   komutu ile alt programa dallandın,işlemin bitti ve RETURN ile geri döndün.
"apo" isimli alt programının bu işlemden sonra çalışmasını istemiyor isen "GoSub DEC_FLD0" komutunun hemen altına "GOTO" komutu ile başka bir noktaya veya programın başına bir Başlangıç etiketi verip oraya dallandırabilirsin..

harmanx

ibrsel

yardımın için teşekkür ederim dedeğini yaptım sorun çözüldü :) :) :)