okul zili

Başlatan teknikelektronikci, 27 Mayıs 2006, 16:58:35

teknikelektronikci

üstadlar arkadaşlar aşağıda verdiğim devre ve kodları picproje den bir üstadımız yapmış ve bizlerle paylaşmıştı şimdi bende bunu yapmak istiyorum fakat lcd bacaklarında bir değişiklik yapmam gerekti fakat kod galiba protonda filan yazılmış ben proton kullanmıyorum ve bende yok rica etsem aşağıdaki kodları protonda derleyip bana gönderebilirmisiniz (ben micro code studioda derleyemedim)forumdaki protonları indirdim fakat hep hata veriyorlar yani derleyemedim eğer varsa düzgün proton onuda koyarsanız sevinirim teşekürler saaygılar.

biraz uzun kusura bakmayın buraya koydum

Device 16F877
Xtal 4
PortB_Pullups  On
All_Digital On

Declare Lcd_Type 0
Declare Lcd_Dtpin PortD.0
Declare Lcd_Interface 4
Declare Lcd_Lines 2
Declare Lcd_Enpin PortD.6
Declare Lcd_Rspin PortD.5

TrisC = 0

Saat      		      	 	  var     dword    
Dakika    		  	  		  var     dword    
Saniye    		      		  var     dword    
gunno	  		  	  		  var	  dword
tick      		  	  		  var     word
Guncelle  		  	  		  var     byte
i         		  	  		  var     byte
s 		  		  	  		  var	  byte
l		  		      		  var	  byte
k		  		  	  		  var	  byte
MenuNo	  		  	  		  var 	  dword
ZamanlamalarMenuNo	  		  var 	  dword

x		  			  		  var	  byte
y					  		  var	  byte
z					  		  var	  byte
t					  		  var	  byte
p					  		  var	  byte
r					  		  var	  byte
j					  		  var	  byte
u					  		  var	  byte
m							  var	  byte

SaatHesap					  var	  word
DakikaHesap					  var	  word
UyariDak			  		  var	  byte
UyariSan			  		  var	  byte
UyariDak = ERead 250 
UyariSan = ERead 251
DersSan				  		  var	  byte
DersSan = ERead 252
DPMenuNo			  		  var	  byte
DersPMenu			  		  var	  byte
Address				  		  var	  word
Adress				  		  var	  word
DonanimMenuNo		  		  var	  byte
AlarmZamaniSaat		  		  var	  byte
AlarmZamaniDakika	  		  var	  byte
oyle				  		  var	  word
Oan					  		  var	  word
KarsSonucu			  		  var	  word
KarsDeger			  		  var	  word
KarsSonucuIki         		  var	  word
FarkIki						  var	  byte

Dim Gun[8]   	   	  	 	  as 	  byte
Dim MenuYaz[16] 	  	  	  as 	  byte
Dim DersProgramiVeri[182] 	  as 	  byte
AlarmZamaniSaatUyariIcin	  var	  dword
AlarmZamaniSaatTenefusIcin	  var	  dword
ZilDegeri					  var	  byte
KalanSaat					  var	  byte
KalanSaatLcd				  var	  byte
KalanDakika					  var	  byte
SaatModulu					  var	  byte
ModulDakika					  var	  byte
ModulSaat					  var	  byte
TenefusDak					  var	  byte
TenefusDak = ERead 253
FarkUc	   	 	   	  		  var	  byte
ZilCalmaDegeri				  var	  byte
ZilDegeriKritik				  var	  byte
ZilCaliyor					  var 	  byte
TenefusDegeri				  var	  word

ZilCalmaDegeri = 0

ZilCaliyor = 1

For i = 0 to 182
DersProgramiVeri[i] = ERead i
Next
'Cls

'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
        Saat   = 0
        Dakika = 0
        Saniye = 0
        gunno  = 0
		tick   = 0
		MenuNo = 0
				
		Gosub Gunbul
        Guncelle = 1      ' Güncelleme aktif

' TMR0 'ı her 16,384 milisaniyede kesecek şekilde kur.
        OPTION_REG = $55        ' TMR0 konfigurasyonunu ayarla ve PORTB pullup'larını etkinleştir.
        INTCON = $a0            ' TMR0 interrupt'ını etkinleştir.
        On Interrupt Goto tickint  ' Interrupt oluşursa TickInt altprogramına git

'------------------------------------------------------------------------------
' Ana Program Döngüsü 
ZilDegeri = 1
ANADONGU:
Print $FE, $0C		  										    'Cursor' ı kapat
MenuNo=0:ZamanlamalarMenuNo=0
If s=1 Then Inc l
If l=40 Then l=0 : k=22
        PORTB = 0         		   ' PORTB pinlerini düğmeleri okumak için LOW konumuna al
        TRISB = %11111100     	   ' PORTB 'nin düğmelere bağlı pinlerini giriş diğerlerini çıkışa ayarla

        ' Zamanı ayarlamak için bir düğmeye basılmışmı?
        If PortB.7 = 0 Then 
		Dec k
		   If k = 0 Then k = 1
		   s = 0
		   Goto Dakikayi_Artir
	        Else s = 1 
		EndIf
		
		If PortB.6 = 0 Then
		Dec k
		   If k = 0 Then k = 1
		   s = 0
		   Goto Dakikayi_Azalt
	   		Else s = 1 
		EndIf
		
		If PortB.5 = 0 Then k = 25:Goto Gun_Artir
		If PortB.4 = 0 Then k = 25:Goto Gun_Azalt
		If PortB.3 = 0 Then CLS:Goto Menu
		
		If PortB.2 = 0 Then 
		   If ZilCalmaDegeri = 1 Then ZilCalmaDegeri = 0 : Low PortC.6 : m = 25 : Gosub Beklet: Goto Dev
		   If ZilCalmaDegeri = 0 Then ZilCalmaDegeri = 1 : High PortC.6 : m = 25 : Gosub Beklet : Goto Dev
		EndIf
Dev:
        ' Ekran güncellenecek mi?
Kontrol:  If Guncelle = 1 Then
                 Print $fe, 2   	 	 		 	   	  			'1,1 e al :P

        Print dec2 Saat, ":", dec2 Dakika, ".", dec2 Saniye, Str Gun

                Guncelle = 0      ' Ekran güncellendi
'------------------------------------------------------------------------------
FarkIki = AlarmZamaniDakika - UyariDak
AlarmZamaniSaatUyariIcin = AlarmZamaniSaat

If FarkIki < 0 Then FarkIki = 60 + FarkIki : Dec AlarmZamaniSaatUyariIcin

'-----

FarkUc = AlarmZamaniDakika - TenefusDak
AlarmZamaniSaatTenefusIcin = AlarmZamaniSaat

If FarkUc < 0 Then FarkUc = 60 + FarkUc : Dec AlarmZamaniSaatTenefusIcin

'-----

If Saat = AlarmZamaniSaatTenefusIcin And Dakika = FarkUc Then 
   If AlarmZamaniSaat > 0 And ZilDegeri = 1 Then
   	  If Saniye < UyariSan Then
   				   High PortC.6
				   Else
				   Low PortC.6
				   ZilDegeriKritik = 1
	  EndIf
   EndIf
EndIf

'-----

If Saat = AlarmZamaniSaatUyariIcin And Dakika = FarkIki And UyariDak > 0 Then 
   If AlarmZamaniSaat > 0 And ZilDegeri = 1 Then
   	  If Saniye < UyariSan Then
   				   High PortC.6
				   Else
				   Low PortC.6
	  EndIf
   EndIf
EndIf

'-----

If Saat = AlarmZamaniSaat And Dakika = AlarmZamaniDakika Then
   If AlarmZamaniSaat > 0 And ZilDegeri = 1 Then
   	  If Saniye < DersSan Then 
	  	 		   ZilCaliyor = 2
   				   High PortC.6
				   Else
				   Low PortC.6
 				   ZilCaliyor = 1
   				   ZilDegeriKritik = 0
	  EndIf
   EndIf
EndIf

'------------------------------------------------------------------------------

KalanSaat = AlarmZamaniSaat - Saat
KalanDakika = AlarmZamaniDakika - Dakika - 10
KalanSaatLcd = KalanSaat

If KalanDakika < 0 Then KalanDakika = 60 + KalanDakika : KalanSaatLcd = KalanSaat - 1

Gosub Alarm

Print at 2, 8, "Zil="

If AlarmZamaniSaat = 0 And AlarmZamaniDakika = 0 Or ZilDegeri = 0 Then 
Print $FE, $C0, "       "
Print at 2, 12, "  Yok"
Else
	If ZilDegeriKritik = 1 Then
	   	  Print at 2, 1, "Tenefus    ", "00:", Dec2 TenefusDegeri
		  Else
		  If KalanSaatLcd = $FF Then KalanSaatLcd = 0 : KalanDakika = 0 : TenefusDegeri = TenefusDak

	Print at 2, 1, Dec2 KalanSaatLcd , ":", Dec2 KalanDakika, "> Zil=", Dec2 AlarmZamaniSaat, ":", Dec2 AlarmZamaniDakika 
	EndIf
EndIf

If ZilDegeri = 0 Then 
Print $FE, $C0, "Sessiz>"
EndIf

        Endif

        Goto ANADONGU   ' Sonsuz döngü sağla

'------------------------------------------------------------------------------

' Dakikayı Artır
Dakikayi_Artir: 
				Dakika = Dakika + 1
        If Dakika >= 60 Then
                Dakika = 0:Saat = Saat + 1
					   If Saat = 24 Then Saat = 0
        Endif
		Saniye = 0
If ZilDegeriKritik =1 Then Dec TenefusDegeri
        Goto debounce

' Dakikayı Azalt
Dakikayi_Azalt: If Saat = 0 And Dakika = 0 Then Saat = 23:Dakika = 60
				 Dakika = Dakika - 1
        If Dakika = -1 Then
                Dakika = 59: Saat = Saat - 1
		Endif
        Saniye = 0
If ZilDegeriKritik = 1 Then Inc TenefusDegeri
		Goto debounce


' Gun Artır
Gun_Artir: 
Inc gunno
If gunno=7 Then gunno=0
Gosub GunBul
Goto debounce


' Gun Azalt
Gun_Azalt: 
Dec gunno
If gunno=-1 Then gunno=6
Gosub GunBul
Goto debounce


' 250ms bekle
debounce: For i = 1 to k
        Pause 10
        Next i

        Guncelle = 1

        Goto Kontrol


'------------------------------------------------------------------------------
GunBul:
If gunno = 0 Then Str Gun = "  P.tesi"
If gunno = 1 Then Str Gun = "    Sali"
If gunno = 2 Then Str Gun = "Carsamba"
If gunno = 3 Then Str Gun = "Persembe"
If gunno = 4 Then Str Gun = "    Cuma"
If gunno = 5 Then Str Gun = "  C.tesi"
If gunno = 6 Then Str Gun = "   Pazar"
Return

'------------------------------------------------------------------------------

Menu:
i=0:x=0
CLS

Gosub AnaMenuYazilar
Print Str MenuYaz
Inc MenuNo
Gosub AnaMenuYazilar
Print $FE, $C0, Str MenuYaz

Print $FE, $C0, ">"
Print at 2, 16, "<"

m = 15
Gosub Beklet

'------------------------------------------------------------------------------

TusKontrol:
If PortB.4 = 0 Then 
If MenuNo=5 Then 
Goto TusKontrol
EndIf
Goto Menu
EndIf

If PortB.5 = 0 Then 
   If MenuNo=1 Then 
   Goto TusKontrol
   EndIf
MenuNo = MenuNo - 2
Goto Menu
EndIf

If PortB.2 =0 Then Gosub Secim

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
Goto ANADONGU
EndIf

Goto TusKontrol

'------------------------------------------------------------------------------
AnaMenuYazilar:
If MenuNo=0 Then Str MenuYaz = "----ANA MENU----"
If MenuNo=1 Then Str MenuYaz = "  Ders Programi "
If MenuNo=2 Then Str MenuYaz = "   Zamanlamalar "

If MenuNo=3 Then
   If ZilDegeri = 0 Then Str MenuYaz = "        Zili Ac "
   If ZilDegeri = 1 Then Str MenuYaz = "     Zili Kapat "
EndIf

If MenuNo=4 Then Str MenuYaz = " Donanim&Hafiza "
If MenuNo=5 Then Str MenuYaz = "          Cikis "
Return

'------------------------------------------------------------------------------

Secim:
If MenuNo = 1 Then DersProgrami
If MenuNo = 2 Then Zamanlamalar
If MenuNo = 3 Then ZiliKapaAc
If MenuNo = 4 Then Donanim
If MenuNo = 5 Then MenuNo = 0 : Goto ANADONGU
Return

Zamanlamalar:
CLS

Gosub ZamanlamalarMenu
Print Str MenuYaz
Inc ZamanlamalarMenuNo
Gosub ZamanlamalarMenu
Print $FE, $C0, Str MenuYaz
Print $FE, $C0, ">"
Print at 2, 16, "<"

m = 15
Gosub Beklet

TusKontrolZamanlamalar:
If PortB.4 = 0 Then 
If ZamanlamalarMenuNo = 4 Then 
Goto TusKontrolZamanlamalar
EndIf
Goto Zamanlamalar
EndIf

If PortB.5 = 0 Then 
   If ZamanlamalarMenuNo = 1 Then 
   Goto TusKontrolZamanlamalar
   EndIf
ZamanlamalarMenuNo = ZamanlamalarMenuNo - 2
Goto Zamanlamalar
EndIf

If PortB.2 =0 Then Gosub ZamanlamalarSecim

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
Goto ANADONGU
EndIf

Goto TusKontrolZamanlamalar

ZamanlamalarMenu:
If ZamanlamalarMenuNo=0 Then Str MenuYaz = "--Zamanlamalar--"
If ZamanlamalarMenuNo=1 Then Str MenuYaz = "      Ders Zili "
If ZamanlamalarMenuNo=2 Then Str MenuYaz = "     Uyari Zili "
If ZamanlamalarMenuNo=3 Then Str MenuYaz = "   Tenefus Zili "
If ZamanlamalarMenuNo=4 Then Str MenuYaz = "           Geri "
Return

ZamanlamalarSecim:
If ZamanlamalarMenuNo = 1 Then DersZili
If ZamanlamalarMenuNo = 2 Then UyariZili
If ZamanlamalarMenuNo = 3 Then TenefusZiliProg
If ZamanlamalarMenuNo = 4 Then ZamanlamalarMenuNo = 0: Dec MenuNo : Goto Menu
Return
'-------------------------------------------------------------------------------
UyariZili:
Cls
Print "Kac Dakika Once?"
UyariDakika:
Print $FE, $C0, "00 iptal eder>", Dec2 UyariDak, " ", $FE, $10, $FE, $10, $FE, $0E 

m = 25
Gosub Beklet

'-------------------------------------------------------------------------------
KontrDak:
If PortB.5 = 0 Then 
   If UyariDak=60 Then
   Goto UyariDakika
   EndIf
Inc UyariDak
Goto UyariDakika
EndIf

If PortB.4 = 0 Then 
   If UyariDak = 0 Then 
   Goto UyariDakika
   EndIf
Dec UyariDak 
Goto UyariDakika
EndIf

If PortB.2 = 0 Then EWrite 250, [UyariDak] : Goto UyariSaniyeBas 

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
Goto ANADONGU
EndIf

Goto KontrDak

'-------------------------------------------------------------------------------

UyariSaniyeBas:
Cls
Print "Kac Saniye Sure?"

UyariSaniye:
Print $FE, $C0, "              ", Dec2 UyariSan, " ", $FE, $10, $FE, $10, $FE, $0E 
m = 25
Gosub Beklet

KontrSan:
If PortB.5 = 0 Then 
   If UyariSan = 60 Then
   Goto UyariSaniye
   EndIf
Inc UyariSan
Goto UyariSaniye
EndIf

If PortB.4 = 0 Then 
   If UyariSan = 0 Then 
   Goto UyariSaniye
   EndIf
Dec UyariSan 
Goto UyariSaniye
EndIf

If PortB.2 = 0 Then Dec ZamanlamalarMenuNo : EWrite 251, [UyariSan] : Goto Zamanlamalar 

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
Goto ANADONGU
EndIf

Goto KontrSan

'-------------------------------------------------------------------------------

DersZili:
Cls
Print "Kac Saniye Sure?"
DersSaniye:
Print $FE, $C0, "              ", Dec2 DersSan, " ", $FE, $10, $FE, $10, $FE, $0E 
m = 25
Gosub Beklet

DersKontrSan:
If PortB.5 = 0 Then 
   If DersSan = 60 Then
   Goto DersSaniye
   EndIf
Inc DersSan
Goto DersSaniye
EndIf


If PortB.4 = 0 Then 
   If DersSan = 0 Then 
   Goto DersSaniye
   EndIf
Dec DersSan
Goto DersSaniye
EndIf


If PortB.2 = 0 Then Dec ZamanlamalarMenuNo : EWrite 252, [DersSan] : Goto Zamanlamalar 

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
Goto ANADONGU
EndIf

Goto DersKontrSan

'-------------------------------------------------------------------------------

TenefusZiliProg:
Cls
Print "Kac Dakika once?"
TenefusZiliProgIki:
Print $FE, $C0, "              ", Dec2 TenefusDak, " ", $FE, $10, $FE, $10, $FE, $0E 
m = 25
Gosub Beklet

TenefusKont:
If PortB.5 = 0 Then 
   If TenefusDak = 60 Then
   Goto TenefusZiliProgIki
   EndIf
Inc TenefusDak
Goto TenefusZiliProgIki
EndIf

If PortB.4 = 0 Then 
   If TenefusDak = 0 Then 
   Goto TenefusZiliProgIki
   EndIf
Dec TenefusDak
Goto TenefusZiliProgIki
EndIf

If PortB.2 = 0 Then Dec ZamanlamalarMenuNo : EWrite 253, [TenefusDak] : Goto Zamanlamalar 

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
Goto ANADONGU
EndIf

Goto TenefusKont

'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
DersProgrami:
CLS

Gosub DersProgramiYazilar
Print Str MenuYaz
Inc DPMenuNo
Gosub DersProgramiYazilar
Print $FE, $C0, Str MenuYaz
Print $FE, $C0, ">" 
Print at 2, 16, "<"


For i=1 to 15
DelayMs 10
Next

DPKontrolZamanlamalar:
If PortB.4 = 0 Then 
If DPMenuNo = 8 Then 
Goto DPKontrolZamanlamalar
EndIf
Goto DersProgrami
EndIf

If PortB.5 = 0 Then 
   If DPMenuNo = 1 Then 
   Goto DPKontrolZamanlamalar
   EndIf
DPMenuNo = DPMenuNo - 2
Goto DersProgrami
EndIf

If PortB.2 = 0 Then
Dec DPMenuNo
	If DPMenuNo = 7 Then
	DPMenuNo = 0
	Dec MenuNo
	Goto Menu
	EndIf
Gosub DPSecim
EndIf

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
DPMenuNo = 0
Goto ANADONGU
EndIf

Goto DPKontrolZamanlamalar


DersProgramiYazilar:
If DPMenuNo=0 Then Str MenuYaz = "--Ders Programi-"
If DPMenuNo=1 Then Str MenuYaz = "      Pazartesi "
If DPMenuNo=2 Then Str MenuYaz = "           Sali "
If DPMenuNo=3 Then Str MenuYaz = "       Carsamba "
If DPMenuNo=4 Then Str MenuYaz = "       Persembe "
If DPMenuNo=5 Then Str MenuYaz = "           Cuma "
If DPMenuNo=6 Then Str MenuYaz = "      Cumartesi "
If DPMenuNo=7 Then Str MenuYaz = "          Pazar "
If DPMenuNo=8 Then Str MenuYaz = "           Geri "
Return
'------------------------------------------------------------------------------

DPSecim:
CLS

Gosub DersProgramiYazilarIki

Inc DersPMenu

Print $FE, $C0
Gosub DersProgramiYazilarIki

Print $FE, $C0, ">"
Print at 2, 16,"<"


For i=1 to 15
DelayMs 10
Next

DPKontrolZamanlamalarIki:
If PortB.4 = 0 Then 
If DersPMenu = 14 Then 
Goto DPKontrolZamanlamalarIki
EndIf
Goto DPSecim
EndIf

If PortB.5 = 0 Then 
   If DersPMenu = 1 Then 
   Goto DPKontrolZamanlamalarIki
   EndIf
DersPMenu = DersPMenu - 2
Goto DPSecim
EndIf

If PortB.2 =0 Then 
Dec DersPMenu 
   If DersPMenu = 13 Then 
   DersPMenu = 0
   Goto DersProgrami
   EndIf
Gosub DProgramiSecim
EndIf

If PortB.3 = 0 Then 
m = 25
Gosub Beklet

DersPMenu = 0
Goto DersProgrami
EndIf

Goto DPKontrolZamanlamalarIki

DersProgramiYazilarIki:

Address = DPMenuNo*26+DersPMenu*2-2

If DersPMenu = 0 And DPMenuNo=0 Then Print "------Pazartesi-"
If DersPMenu = 0 And DPMenuNo=1 Then Print "-----------Sali-"
If DersPMenu = 0 And DPMenuNo=2 Then Print "-------Carsamba-"
If DersPMenu = 0 And DPMenuNo=3 Then Print "-------Persembe-"
If DersPMenu = 0 And DPMenuNo=4 Then Print "-----------Cuma-"
If DersPMenu = 0 And DPMenuNo=5 Then Print "------Cumartesi-"
If DersPMenu = 0 And DPMenuNo=6 Then Print "----------Pazar-"

If DersPMenu>0 And DersPMenu <14 Then 
Print " ", Dec2 DersPMenu, "-", "            "
Print $FE, $10, $FE, $10, $FE, $10, $FE, $10, $FE, $10, $FE, $10,_ 
 Dec2 DersProgramiVeri[Address], ":", Dec2 DersProgramiVeri[Address+1]
EndIf

If DersPMenu = 14 Then Print "           Geri "
Return

'------------------------------------------------------------------------------

DProgramiSecim:
Print at 2, 11, $FE, $0E
 

For i=1 to 15
DelayMs 10
Next

DProgramiSecimKontrol:
Address = DPMenuNo*26+DersPMenu*2

If PortB.5 = 0 Then 
Inc DersProgramiVeri[Address]
If DersProgramiVeri[Address] = 24 Then DersProgramiVeri[Address] = 0
Print Dec2 DersProgramiVeri[Address]
Goto DProgramiSecim
EndIf

If PortB.4 = 0 Then
If DersProgramiVeri[Address] = 0 Then DersProgramiVeri[Address]= 24 
Dec DersProgramiVeri[Address]
Print Dec2 DersProgramiVeri[Address]
Goto DProgramiSecim
EndIf

If PortB.7 = 0 Then DProgramiSecimDak

If PortB.2 = 0 Then DPSecim

Goto DProgramiSecimKontrol

DProgramiSecimDak:
Print at 2, 14, $FE, $0E

For i=1 to 15
DelayMs 10
Next

DProgramiSecimKontrolDak:
Address = DPMenuNo*26 + DersPMenu*2 + 1

If PortB.5 = 0 Then 
If DersProgramiVeri[Address] = 59 Then DersProgramiVeri[Address] = -1
Inc DersProgramiVeri[Address]
Print Dec2 DersProgramiVeri[Address]
Goto DProgramiSecimDak
EndIf

If PortB.4 = 0 Then
If DersProgramiVeri[Address] = 0 Then DersProgramiVeri[Address]= 60 
Dec DersProgramiVeri[Address]
Print Dec2 DersProgramiVeri[Address]
Goto DProgramiSecimDak
EndIf

If PortB.7 = 0 Then DProgramiSecimDak

If PortB.6 = 0 Then DProgramiSecim

If PortB.2 = 0 Then DPSecim

Goto DProgramiSecimKontrolDak

Donanim:
CLS

Gosub DonanimYazilar
Print Str MenuYaz
Inc DonanimMenuNo
Gosub DonanimYazilar
Print $FE, $C0, Str MenuYaz
Print $FE, $C0, ">"
Print at 2, 16, "<"


For i=1 to 15
DelayMs 10
Next
'------------------------------------------------------------------------------
TusKontrolDonanim:
If PortB.4 = 0 Then 
If DonanimMenuNo=4 Then 
Goto TusKontrolDonanim
EndIf
Goto Donanim
EndIf

If PortB.5 = 0 Then 
   If DonanimMenuNo=1 Then 
   Goto TusKontrolDonanim
   EndIf
DonanimMenuNo = DonanimMenuNo - 2
Goto Donanim
EndIf

If PortB.2 = 0 Then Goto DonanimSecim

If PortB.3 = 0 Then 
m = 25
Gosub Beklet
DonanimMenuNo=0
Goto ANADONGU
EndIf

Goto TusKontrolDonanim

'------------------------------------------------------------------------------
DonanimYazilar:
If DonanimMenuNo=0 Then Str MenuYaz = "-Donanim&Hafiza-"
If DonanimMenuNo=1 Then Str MenuYaz = "    Saat Modulu "
If DonanimMenuNo=2 Then Str MenuYaz = "   Hafiza Kayit "
If DonanimMenuNo=3 Then Str MenuYaz = " **Hafiza Sil** "
If DonanimMenuNo=4 Then Str MenuYaz = "           Geri "
Return
'------------------------------------------------------------------------------
DonanimSecim:
If DonanimMenuNo = 1 Then SaatModuluProg
If DonanimMenuNo = 2 Then HafizaKayit
If DonanimMenuNo = 3 Then HafizaSil
If DonanimMenuNo = 4 Then DonanimMenuNo = 0 : Dec MenuNo : Goto Menu

SaatModuluProg:
If SaatModulu = 1 Then
   SaatModulu = 0
   			   Else
			   SaatModulu = 1
EndIf
m = 25
Gosub Beklet
Dec DonanimMenuNo
Goto ANADONGU

HafizaKayit:
Cls
Print "Kaydediliyor...."
For i=0 to 182
EWrite i, [DersProgramiVeri[i]]
Next
Dec DonanimMenuNo
Goto Donanim

HafizaSil:
Cls
Print at 2, 1, "Tamam <> iptal ?"

For i=1 to 15
DelayMs 10
Next

TKontrol:

If PortB.3 = 0 Then Dec DonanimMenuNo : Goto Donanim

If PortB.2 = 0 Then

   		 For i=0 to 182
		 EWrite i, [0]
		 Next

		 For i=0 to 182
		 [DersProgramiVeri[i]] = ERead i
		 Next

   Dec DonanimMenuNo
   Goto Donanim
EndIf

Goto TKontrol

'------------------------------------------------------------------------------

Alarm:
Adress = GunNo*26
oyle = GunNo*26+1

KarsSonucu = 2359
Oan = Saat*100 + Dakika

For i=0 to 12

SaatHesap = DersProgramiVeri[Adress+i*2] * 100
DakikaHesap = DersProgramiVeri[oyle+i*2]

KarsDeger = SaatHesap + DakikaHesap
KarsSonucuIki = KarsDeger - Oan

If DersProgramiVeri[Adress+i*2] = 0 And DersProgramiVeri[oyle+i*2] = 0 Then Devam


If KarsDeger > Oan And KarsSonucuIki < KarsSonucu And ZilCaliyor = 1 Then 
KarsSonucu = KarsSonucuIki
AlarmZamaniSaat = DersProgramiVeri[Adress+i*2]
AlarmZamaniDakika = DersProgramiVeri[oyle+i*2]
EndIf
Devam:
If i = 12 And KarsSonucu = 2359 And ZilCaliyor = 1 Then AlarmZamaniSaat = 0 : AlarmZamaniDakika = 0
Next
Return

ZiliKapaAc:
If ZilDegeri = 1 Then 
ZilDegeri = 0
Else
ZilDegeri = 1
EndIf
MenuNo = 0
Goto ANADONGU

Beklet:
For i = 0 to m
Delayms 10
Next
Return

'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------

' Her Timer kesmesini işleyecek Interrupt rutini
        disable         ' Interrupt lar devre dışı
TickInt: Tick = Tick + 1      ' Saniye parçacıklarını say
        If Tick < 61 Then tiCik       ' 61 * 16,384ms = 1sn

' Bir saniye geçti zamanı güncelle
        Tick = 0
        Saniye = Saniye + 1
        If Saniye >= 60 Then
                Saniye = 0
                Dakika = Dakika + 1
				Dec TenefusDegeri
                If Dakika >= 60 Then
                        Dakika = 0
                        Saat = Saat + 1
                        If Saat >= 24 Then
                                Saat = 0
								Gosub Gun_artir
                        Endif
                Endif
        Endif

'-------------------------------------------------------------------------------

If SaatModulu = 1 Then
      If ZilDegeriKritik = 1 Then 
   	  				  	  ModulSaat = 0
						  ModulDakika = TenefusDegeri
	  Else
					ModulSaat = KalanSaatLcd 
					ModulDakika = KalanDakika
	  EndIf
	
Else
			   ModulSaat = Saat
			   ModulDakika = Dakika
EndIf

		Low PortC.0

x = Dig ModulDakika, 0
y = Dig ModulDakika, 1
z = Dig ModulSaat, 0
t = Dig ModulSaat, 1

p = LRead DataDondur + x
r = LRead DataDondur + y
j = LRead DataDondur + z
u = LRead DataDondur + t

For i=0 to 7
PortC.5 = GetBit u, i
High PortC.1
Low PortC.1
Next

For i=0 to 7
PortC.5 = GetBit j, i
High PortC.2
Low PortC.2
Next

For i=0 to 7
PortC.5 = GetBit r, i
High PortC.3
Low PortC.3
Next

For i=0 to 7
PortC.5 = GetBit p, i
High PortC.4
Low PortC.4
Next

High PortC.0

'-------------------------------------------------------------------------------

        Guncelle = 1    ' Ekran güncellenmesi aktif

tiCik: INTCON.2 = 0    ' Timer Interrupt bayrağını sıfırla
        Resume
		
DataDondur:
LData %00000001	 	 '0
LData %01001111	 	 '1
LData %00010010	 	 '2
LData %00000110		 '3
LData %01001100		 '4
LData %00100100		 '5
LData %00100000		 '6
LData %00001111		 '7
LData %00000000		 '8
LData %00000100		 '9
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

OG

Derleme hatası yok. Proton'un kusuru uzun adres yoludur. Direk C altında ismi uzun olmayan bir klasör açın, turkce karakter kullanmayın. Dosyayı onun içinde çalışın.

Ben compile ettim, aşağıda:

http://www.hemenpaylas.com/download/825390/zil.zip.html
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

teknikelektronikci

üstadım ilgin için öncelikle teşekür ederim  bu dediğiniz olayı forumdanda okuyup uyguladım yereldiskde (c de) yeni klasör açıp .bas uzantıyı onun içine atıp oradan açtım compile ederken hata verip "scan program" diyor kalıyor ve ayrıca bu protonda microcode studio daki gibi picin adını seçme listesi yok /mu? benimkinde gözükmüyor ilginiz için teşekürler saygılar
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

OG

Device 16F877

Pic i buradan (kod içindeki satırdan) seçiyor. Programı bir daha kurarsan iyi olur sanırım.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

teknikelektronikci

üstad çok sağol haletim protonu ama şimdide micro code studio compile ederken "unable to locate untitled.asm" hatası veriyor baştan kurdum yükledim olmadı 4-5 farklı codlarla denedim aynı hata yeni başlık açayım demedim acaba bunda problem nedir bilginiz varmı? kusura bakmayın basit problemlerle vaktinizi alıyorum ama o kadar uğraştım olmadı teşekürler
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

OG

Problemin basiti olmaz da  dosyayı oluşturamamasının sebebini anlayamadım, bilmiyorum. Kendi içinde samples bas dosyalar var, bunları deneseniz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

teknikelektronikci

teşekürler sayın og
evet kendi içindeki samples leride denedim ama sanırım problem asm oluşturamaması assembler error dior ve "unable to locate .... asm dior neyse sizinde bu kadar başınızı ağrıtım ilginiz için teşekür ederim akşama kadar uğraşacam olmaz ise bilgisayarı formatlicam :-) saygılar
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

mhk

Alıntı yapılan: "teknikelektronikci"üstad çok sağol haletim protonu ama şimdide micro code studio compile ederken "unable to locate untitled.asm" hatası veriyor baştan kurdum yükledim olmadı 4-5 farklı codlarla denedim aynı hata yeni başlık açayım demedim acaba bunda problem nedir bilginiz varmı? kusura bakmayın basit problemlerle vaktinizi alıyorum ama o kadar uğraştım olmadı teşekürler


Proton basic yazıyorsun , micro code studio derleme yapamıyor diyorsun. İkisi farklı programlar farklı kulvarlarda farklı yarışıçıları deniyor olmayasın :) Proton'un kendi editörü var onu kullanmalısın. ;)
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

teknikelektronikci

mhk hocam beni yanlış anlamışınız :-) ben aslında hep pic basic pro ile yazıyorum ve micro code studio da derliyorum bu zamana kadar hiç bi problem yoktu son olarak şu okul zili ni yapayım dedim ve protonda derlemmek gerektiğini anladım proton problemliydi onu halletim (og ustam sayesinde :-) bu seferde micro code studio da pic basic pro ile yazdıklarımla filan problem yaratıyor yani tam şansızlık işi benimki :-) cümlede devrik oldu ama neyse :-)
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!