proton ile saat bazında röle aktif etme?

Başlatan mc_307, 16 Mayıs 2015, 23:36:15

ergunbt

derdini anladıysam sanırım bunun gibi bişey olması gerekli...


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [ERGUNBT]                                     *
'*  Notice  : Copyright (c) 2015 [    ]                         *
'*          : All Rights Reserved                               *
'*  Date    : 23.8.2015                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************



XTAL 4
Device 16F628A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, CP_OFF, MCLRE_ON, LVP_OFF 

TRISA=%11111
TRISB=%00000000

PORTA=0
PORTB=0


        LCD_DTPIN = PORTB.4	
		LCD_RSPIN = PORTB.2
		LCD_ENPIN = PORTB.3
		LCD_INTERFACE = 4	
		LCD_LINES = 2
		LCD_TYPE = 0


On Interrupt GoTo KESME   
OPTION_REG=%10000101   	 
INTCON=%10100000  		
TMR0=0
CMCON=7    	

    
    Dim     X       As      Word
    Dim     E       As      Byte
    Dim     AY      As      Byte
    Dim     YIL     As      Byte
    Dim     SN      As      Byte
    Dim     DAK     As      Byte
    Dim     SAAT    As      Byte
    Dim     GUN     As      Byte
    Dim     HAFTA   As      Byte
    Dim     MEM     As      Byte
    Dim     DRM     As      Bit
    Dim     ONLAR   As      Byte
    Dim     BIRLER  As      Byte
    Dim     T_SAAT  As      Byte
    Dim     T_DAK   As      Byte
    Dim     T_SYC_SAAT  As      Byte
    Dim     T_SYC_DAK   As      Byte
    Dim     SNY     As      Byte
    Dim     SNS     As      Byte     
    Dim     TRNSFR  As      Bit 
    Dim     ZMN     As      Byte
    Dim     SAYI    As      Byte
    Dim     ZMN1     As      Byte
    CIKIS       VAR     PORTA.0
    RTC_RST     var     PORTA.3
    RTC_CLK     var     PORTA.1
    RTC_DTA     var     PORTA.2
    BUZER       VAR     PORTA.4 
    
 T_SYC_SAAT=00: T_SYC_DAK=00
DelayMS 500 
    Cls  
  
ZMN=0:SNY=0

 DelayMS 10
    Print At 1,1, "3 SAATTE 12 SN  "
    Print At 2,1, "LAMBA YAKMA     "
    DelayMS 1000
    Cls
'***********************************************
BASLANGIC: '***********************************************
'***********************************************
              
SAAT=ERead 2 : If SAAT=24 Then SAAT=0
DAK=ERead 3:If DAK>59 Then DAK=0
SN=ERead 4 :If SN>59 Then SN=0

If SAAT=24 Then SAAT=00
If DAK>59 Then DAK=00
If SN>59 Then SN=00

'***********************************************
BASLA:   '***********************************************
'*********************************************** 
    GoSub EKRANAYAZ
    GoSub ZAMAN_OKU
    GoSub ZAMANA_BAK
    
If ZMN1>150 Then' ZAMANLAMAYI 12 SN OLAYINI BURADAN AYARLAYABİLİRSİN !!!!  KESME BASLIGINDAKIAYARIDA UNUTMA  !!!!
    ZMN1=00
    GoSub BIP
    Toggle CIKIS

      
EndIf

GoTo BASLA  
    
'***********************************************
EKRANAYAZ:    '***********************************************
'***********************************************
TRNSFR=ERead 0
T_SYC_SAAT=ERead 1
   
    Print At 1,1,"LAMBA " ," - ",DEC2 T_SYC_SAAT,":",DEC2 T_SYC_DAK
    Print At 2,1,DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
    
    GoSub ZAMANA_BAK
   
 Return
 
 
 '***********************************************
ZAMANA_BAK:    '***********************************************
'***********************************************
T_SAAT=ERead 8


    If  SN=00 And SNS=00 Then
    T_SYC_DAK=T_SYC_DAK+1
     If  T_SYC_DAK=60 Then T_SYC_DAK=00
     EndIf
        If T_SYC_DAK=00 And SNS=00 Then
        T_SYC_SAAT=T_SYC_SAAT+1
       
        If T_SYC_SAAT=25 Then
            T_SYC_SAAT=0

        EndIf 
   


    If T_SYC_SAAT=3 Then      
        T_SYC_SAAT=0
        Toggle CIKIS
    EndIf

 

EndIf
Return


'***********************************************
ZAMAN_OKU:    '***********************************************
'***********************************************
    High RTC_RST:Output RTC_DTA
    SHOut RTC_DTA, RTC_CLK, 0, [$BF]:Input RTC_DTA
    SHIn RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, HAFTA, YIL, MEM]  '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
         MEM=HAFTA:GoSub CEVIR:HAFTA=SAYI
     Low RTC_RST 
  Return
  
ZAMAN_YAZ:   '***********************************************

         MEM=SN:GoSub TERSCEVIR:SN=SAYI
         MEM=DAK:GoSub TERSCEVIR:DAK=SAYI
         MEM=SAAT:GoSub TERSCEVIR:SAAT=SAYI
         MEM=GUN:GoSub TERSCEVIR:GUN=SAYI
         MEM=AY:GoSub TERSCEVIR:AY=SAYI
         MEM=YIL:GoSub TERSCEVIR:YIL=SAYI
         MEM=HAFTA:GoSub TERSCEVIR:HAFTA=SAYI
    High  RTC_RST
    SHOut RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
     Low RTC_RST:DelayUS 10 
    High RTC_RST          
    SHOut RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, HAFTA, YIL, 128]  'YAZ

     Low RTC_RST
 DelayUS 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
  
Disable
BIP:  '***********************************************

High BUZER
For X=0 To 1000
Next X
Low BUZER
Return

'***********************************************
KESME:'***********************************************
'***********************************************
SNS=SNS+1
If SNS=59 Then
SNS=0
SNY=SNY+1

If SNY>16 Then SNY=0
EndIf


If CIKIS=1  Then
  ZMN1=ZMN1+1
  If ZMN1=200 Then ZMN1=00
EndIf
 
INTCON.2=0    
Resume 
Enable
End