kodlarda eksık var ama hatırlayamadım..![]()
arkadaslar hepınıze hayırlı gunler.arkadaslar asagıdakı semaya gore bı program yazdım.fakat bır yerde hata verıyor.bi türlü çözemedım bi el atsanız halletsek bu işi
devredeki 1.butona basıldığında GENEL adlı programagıdecek ve program surekli tekrarda olacak, 2.butona basıldıgındada ANFI adlı programa gıdecek ve yıne program sureklı tekrada olacak.devre seması ve kodları.:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
TRISA=1
TRISB=0
LOW PORTB.2
PAUSE 200
BASLA:
IF PORTA.0=1 THEN
GOSUB GENEL
ENDIF
END
ARA:
IF PORTA.1=1 THEN
GOSUB ANFI
ENDIF
END
GOTO BASLA
GENEL:
LCDOUT $FE,1
LCDOUT $FE,2,"DIJITAL DUNYAYA"
LCDOUT $FE,$C0,"..HOSGELDINIZ.."
PAUSE 500
LCDOUT $FE,1
LCDOUT $FE,2,"....IYI..."
LCDOUT $FE,$C0,".EGLENCELER."
PAUSE 500
LCDOUT $FE,1
LCDOUT $FE,2,".RAMAZAN..LUTFI."
LCDOUT $FE,$C0,"...SAGDIC..."
PAUSE 500
GOTO GENEL
END
ANFI:
LCDOUT $FE,1
LCDOUT $FE,2,"MAX.CIKIS GUCU"
LCDOUT $FE,$C0,"250 WATT RMS"
PAUSE 200
LCDOUT $FE,1
LCDOUT $FE,2,"CIKIS KATI"
LCDOUT $FE,$C0,"4 x BTJ"
PAUSE 200
LCDOUT $FE,1
LCDOUT $FE,2," BESLEME "
LCDOUT $FE,$C0,"250 W TRAFO"
PAUSE 200
GOTO ANFI
END
kodlarda eksık var ama hatırlayamadım..![]()
Kodlarda eksik yok ama fazlalık var. Her tarafı "END" ile doldurmuşsun. Hepsini sil onalrın.
Programın en sonuna tek bir tane END yaz olsun bitsin.
GOSUB ile gidilen program parçasından RETURN ile dönülür. Şayet oradan dönme düşünülmüyorsa ki sen öyle yapmışsın, Gosub yerine Goto kullanmak daha doğru olur.
Gosub ile gidilen yerden kesinlikle RETURN ile dönmek gerekir. Sebebi ise, bütün programlar aslında makine dilini kullanıyor biliyorsunuz. Bu programda bir başka adrese dallanma olduğu zaman programın ayrıldığı adres STACK (Yığın) denilen bir depoya atılır. Burada sistem son giren ilk çıkar mantığıyla çalışır. Dolayısıyla siz gosub ile bir yere gittiğiniz zaman hemen adres stack da kayıt altına alınır. Return komutu orada görüldüğü zamanda stack dan dönüş adresi alınır ve o adrese geri dönülür. Şayet Return ile gidip goto ile dönerseniz gidiş adresi stack de kalır ve boşuna yer kaplayıp hiç kullanılamaz. Stack dediğinizi çok fazla gözünüzde büyütmeyin. Ancak 5 adet Return adresini depolayabiliyor. Fazla büyük değil yani. O nedenle Gosub la gidip goto ile dönerseniz stack bir müddet sonra şişer ve program nerden gelip nereye gideceğini bulamadığı içini şaşırıp kilitlenir.
Ete
hocam tesekkur ederim anladığım kadarı ile değişiklik yaptım.ancak. bır hata verıyor.
değiştirmeme gereken yerleri belirtirseniz sevinirim.
TRISA=1
TRISB=0
LOW PORTB.2
PAUSE 200
BASLA:
IF PORTA.0=1 then
GOTO GENEL
ENDIF
IF PORTA.1=1 THEN
GOTO ANFI
ENDIF
GOTO BASLA
GENEL:
LCDOUT $FE,1
LCDOUT $FE,2,"DIJITAL DUNYAYA"
LCDOUT $FE,$C0,"..HOSGELDINIZ.."
PAUSE 500
LCDOUT $FE,1
LCDOUT $FE,2,"....IYI..."
LCDOUT $FE,$C0,".EGLENCELER."
PAUSE 500
LCDOUT $FE,1
LCDOUT $FE,2,".RAMAZAN..LUTFI."
LCDOUT $FE,$C0,"...SAGDIC..."
PAUSE 500
GOTO GENEL
ANFI:
LCDOUT $FE,1
LCDOUT $FE,2,"MAX.CIKIS GUCU"
LCDOUT $FE,$C0,"250 WATT RMS"
PAUSE 200
LCDOUT $FE,1
LCDOUT $FE,2,"CIKIS KATI"
LCDOUT $FE,$C0,"4 x BTJ"
PAUSE 200
LCDOUT $FE,1
LCDOUT $FE,2," BESLEME "
LCDOUT $FE,$C0,"250 W TRAFO"
PAUSE 200
GOTO ANFI
END
kodunun bu halini derleydisysen hata verir fuse ayarlarini yapman gerekir
birde pici analog girisleri kapatman lazim.
arkadaslar derleme yaparkenki hatayı nı hayet çözdüm.programda bır hata yokmus.62 karekter hatası verıyormus.yanı derledıgım dosyayı dırek c:altında bır klasore kopyaladım sorun duzeldi.(aklınızda bulunsun arkadaslar derlıcegınz dosyayı turkçe karekter içeren bir klasore kopyalamayın.)
Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)