Tuşa uzun basma ile ilgili

Başlatan muyat, 07 Mayıs 2017, 19:33:00

muyat

Aşagıdaki satırlarda bir led animasyon devresinde yapmak istedigim şu:
Program içerisinde tuşa 200milisaniyeden büyük ve 2saniyeden daha az süre kadar tuşa basıp bırakınca program bir sonraki animasyona atlasın,
2saniyeden daha fazla basılı tutup bırakınca bütün çıkışları kapatsın ledler sönsün başa atlasın.
Programı aşagıdaki gibi yazdım.sayac ekledim ama derlerken bad expression then hatası veriyor.
Ete hocam yardımcı olur musun

@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON &_MCLRE_OFF & _CP_ON & _BODEN_ON
DEFINE OSCAL_1K 1
CMCON = 7
ANSEL = 0
trisio = %00011000
GPIO=0
SYMBOL UZUN=GPIO.3
SYMBOL LED1= GPIO.5
symbol LED2= GPIO.0
SYMBOL TUS= GPIO.4
POZ var byte
SAYAC VAR WORD
pause 250
read 10,poz
IF POZ=255 then Poz=0
IF POZ=1 THEN ALG2
IF POZ=2 THEN ALG3
IF POZ=3 THEN ALG6
IF POZ=4 THEN ALG4
IF POZ=5 THEN ALG5
IF POZ=6 THEN ALG7
IF POZ=7 THEN ALG8
GPIO=0





BASLA:
SAYAC=0
LOW LED1:LOW LED2
PAUSE 20
IF UZUN=0 THEN   
HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 1000                 
WHILE UZUN=0:WEND

ENDIF


IF TUS=0 THEN
while TUS=0:wend
pause 500
GOTO ALG11
ENDIF

GOTO BASLA





ALG1:             
poz=0:gosub YAZ
while TUS=0:wend
pause 500


ALG11:     

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200 MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG2
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55
GOTO ALG11


ALG2:             'bir sağ 3defa  bir sol 3 defa
poz=1:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500

ALG22:

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG3
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1
PAUSE 50
LOW LED1
PAUSE 50

HIGH LED1
PAUSE 50
LOW LED1
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

PAUSE 100
GOTO ALG22



ALG3:               
poz=2:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500
ALG33:

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200 MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG4
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

PAUSE 750
GOTO ALG33





ALG4:     
poz=3:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500
ALG44:

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  VE2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG5
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1
PAUSE 80
GPIO= %00000000
PAUSE 80
HIGH LED2
PAUSE 80
GPIO= %00000000
PAUSE 80
GOTO ALG44

ALG5:
poz=4:gosub YAZ
while tus=0:wend  '
GPIO=0
PAUSE 500


ALG55:                   


IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG6
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF




HIGH LED1:HIGH LED2
PAUSE 1000
GOTO ALG55



ALG6:
poz=5:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 50
ALG66:     
IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG7
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
GPIO= %00000000
PAUSE 500 
HIGH LED1:HIGH LED2
PAUSE 65
GPIO= %00000000
PAUSE 65
HIGH LED1:HIGH LED2
PAUSE 65
GPIO= %00000000
PAUSE 65
HIGH LED1:HIGH LED2
PAUSE 65
GPIO= %00000000
PAUSE 300
GOTO ALG66



ALG7:                   
poz=6:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500
ALG77: 
IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG8
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 70
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 200
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 500
GOTO ALG77


ALG8: 
poz=7:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 50
ALG88:
IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND <=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG1
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1:HIGH LED2
PAUSE 200
GPIO= %00000000
PAUSE 200
GOTO ALG88
YAZ:
write 10,POZ:pause 10
RETURN
END















F®T

#1
IF SAYAC>2 AND <=20 THEN

bu ifadede <=20 problemin.

Sayac 2 den büyükse tamam.

Ama hangi değişken 20 ye eşit yada 20den küçük olacak???

Değişkeni belirtmemişsin.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

#2
Bad express.... hatası komut yada yazım hatadıdır.
Hata mesajında yerinide söyler bakıp düzeltmek lazım. Yoksa programa harf harf bakıp hata bulmak çok zor.
İstediğinle yaptığın uymuyor bence.
Bu işler genellikle şöyle yapılır
If tus=0 then
Sayac=0
While tus=0
Sayac=Sayac+1
If sayac>2000 then kapat
pause 1
Wend
If sayac>200 and sayac<2000 then
Sira=Sira+1 if sira>8 then sira=0
Endif
Select case sira
Case 1
Goto animasyon1
...
...

Ete

muyat

FRT teşekkürler.
IF SAYAC>2 AND SAYAC<=20 THEN olarak düzeltince ıf den kaynaklı hatalar düzeldi,fakat bu seferde "argument out of range "gibi hatalar veriyor.Programın tamamını ekledim.Hatanın nedenini çözemedim.Sanki bir şeylerin sınırının dışına çıkmışım gibi bir hata veriyor.


@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON &_MCLRE_OFF & _CP_ON & _BODEN_ON
DEFINE OSCAL_1K 1
CMCON = 7
ANSEL = 0
trisio = %00011000
GPIO=0
SYMBOL UZUN=GPIO.3
SYMBOL LED1= GPIO.5
symbol LED2= GPIO.0
SYMBOL TUS= GPIO.4
Z VAR BIT
POZ var byte
SAYAC VAR WORD
pause 250
read 10,poz
IF POZ=255 then Poz=0
IF POZ=1 THEN ALG2
IF POZ=2 THEN ALG3
IF POZ=3 THEN ALG6
IF POZ=4 THEN ALG4
IF POZ=5 THEN ALG5
IF POZ=6 THEN ALG7
IF POZ=7 THEN ALG8
GPIO=0





BASLA:
SAYAC=0
LOW LED1:LOW LED2
PAUSE 20
IF UZUN=0 THEN   
HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 1000                 
WHILE UZUN=0:WEND

ENDIF


IF TUS=0 THEN
while TUS=0:wend
pause 500
GOTO ALG11
ENDIF

GOTO BASLA





ALG1:             
poz=0:gosub YAZ
while TUS=0:wend
pause 500


ALG11:     

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG2
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF



HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55
GOTO ALG11


ALG2:             'bir sağ 3defa  bir sol 3 defa
poz=1:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500

ALG22:

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG3
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1
PAUSE 50
LOW LED1
PAUSE 50

HIGH LED1
PAUSE 50
LOW LED1
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

HIGH LED2
PAUSE 50
LOW LED2
PAUSE 50

PAUSE 100
GOTO ALG22



ALG3:               
poz=2:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500
ALG33:

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200 MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG4
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

HIGH LED1:HIGH LED2   
PAUSE 55
LOW LED1:LOW LED2
PAUSE 55

PAUSE 750
GOTO ALG33





ALG4:     
poz=3:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500
ALG44:

IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  VE2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG5
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1
PAUSE 80
GPIO= %00000000
PAUSE 80
HIGH LED2
PAUSE 80
GPIO= %00000000
PAUSE 80
GOTO ALG44

ALG5:
poz=4:gosub YAZ
while tus=0:wend  '
GPIO=0
PAUSE 500


ALG55:                   


IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK VE 2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG6
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF




HIGH LED1:HIGH LED2
PAUSE 1000
GOTO ALG55



ALG6:
poz=5:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 50
ALG66:     
IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG7
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
HIGH LED1
PAUSE 70
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 70
GPIO= %00000000
PAUSE 500 
HIGH LED1:HIGH LED2
PAUSE 65
GPIO= %00000000
PAUSE 65
HIGH LED1:HIGH LED2
PAUSE 65
GPIO= %00000000
PAUSE 65
HIGH LED1:HIGH LED2
PAUSE 65
GPIO= %00000000
PAUSE 300
GOTO ALG66



ALG7:                   
poz=6:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 500
ALG77: 
IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG8
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 70
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1
PAUSE 55
GPIO= %00000000
PAUSE 70
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 200
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 55
HIGH LED1:HIGH LED2
PAUSE 55
GPIO= %00000000
PAUSE 500
GOTO ALG77


ALG8: 
poz=7:gosub YAZ
while tus=0:wend 
GPIO=0
PAUSE 50
ALG88:
IF TUS=0 THEN            'TUŞA BASTIK
SAYAC=0                   'SAYAÇ SIFIRLANDI
WhilE TUS=0                'TUŞ BASILI IKEN
Sayac=sayac+1                'SAYACI SAYDIR
PAUSE 100                    'ÇIKAN DEĞERİ 100 LE ÇARP
WEND
ENDIF
IF SAYAC>2 AND SAYAC<=20 THEN              'TUŞA BASMA SURESI 200MİLİSANİEYEDEN BÜYÜK  2 SANİYEDEN AZ İSE SONRAKİ ANIMASYONA ATLA
GOTO ALG1
ENDIF

IF SAYAC>20 THEN               'TUŞA BASMA SÜRESİ 2 SANİYEDEN FAZLA İSE BASLAYA ATLA
GOTO BASLA
ENDIF

HIGH LED1:HIGH LED2
PAUSE 200
GPIO= %00000000
PAUSE 200
GOTO ALG88
YAZ:
write 10,POZ:pause 10
RETURN
END















onurinci

12F675 'e yazılacak 0...1023 'ü aşmışsın,
CMCON=7 'yi kapa 12F683'e yaz  0 0....2048'e kadar..

muyat

Uzun basma olayını kaldırınca sorun düzeliyor.
0-1023... diye kastedilen şey nedir?

onurinci

Kullanılacak olan Pic'in program yazma kapasitesi ,program hafızasıda diyebiliriz..

ete

Bu işlemcinin 1K lık hafızası var ve sende onu doldurup aşmışsın. Kaldırdığın her satır programın hafıza tutarından düşülmekte ve bir kaç satır sonunda 1Klık hafızanın altına iindiğin için derleme sorunsuz olmaktadır. Olay budur.

0-1023 denilen şey program hafızasıdır.
Ete

Powered by EzPortal