Saat ile ilgili bir ödev

Başlatan rayman, 02 Nisan 2017, 22:42:31

rayman

Arkadaşlar bir arkadaşımın çocuğu için istenilen bir ödev var. Ve şöyle :
Her saat başı bir element tanıtacak. Sesli anlatım olacak. 24 saat olduğu için 24 farklı element sesi kaydedilecek. Ve araştırma yaptım saat devresi buldum. Ancak geri kalanı Flash disk e kayıt edip saatle haberleştirebilirmiyiz?  Yoksa farklı bir entegre sda entegreleri var ondan mı almak lazım ? http://320volt.com/alarmli-saat-projesi-pic16f628-ds1307-assembly/

huseyin0579

Usta yapmak isteďiğiniz konuşan saat uygulamasına benziyor ve bu proje için ses kayıt entegresi uygun değil bunun sebebi daha önce bu işle ugraştığım için bilgilendirmek istedim. Ses kayıt entegresi ile en fazla 8 adet sesi kolay bir kod ile kontrol edebilir'siniz. Mıso tekniği ile ayrıca kontrol edilebiliyor bu konuda yorum yapamıyorum ama daha zor olacağı kanaatindeyim. Ayrıca bahsettiğiniz proje için yardımcı olabilirim. Bahsettiğiniz proje için sıfırdan tasarım yapılması gerekiyor daha sade anlatmak gerekirse bu iş için harici eepromlu ses kayıt alanı gerektiren bir iş profesyonel uygulama ve tecrübe gerektiriyor.

rayman

Ardunio ile Sd kart uygulaması buldum... Onu denemeye çalışacağım.

huseyin0579


rayman

Mp3 Playerle bu işi çözecez. Ancak , bana her saat başı yada örneğin dakika aralıklı çalışacak Saat devresi lazım... Çünkü 1 saat beklemek istenmezse saat ten dakika aralıklarında alarm çalıştırmak lazım. Oysaki mevcut saatlerde bir kere alarm çalışır diye biliyorum .

rayman

;********************************************************************************************************
;13 MAYIS 2007
;ALARMLI SAAT PROJESİ
;YAZAN : CİHAN YILDIRIM
;********************************************************************************************************
      LIST      P=16F628
      INCLUDE      "P16F628.INC"
      __CONFIG   _INTRC_OSC_NOCLKOUT & _WDT_OFF & _CP_OFF & _LVP_OFF & _MCLRE_OFF
      ERRORLEVEL   -302
      ERRORLEVEL   -306
;********************************************************************************************************
      CBLOCK      0x20
      BUTONSAYAC,AY10,GUN10,YIL10,SAAT10,DAKIKA10,SANIYE10,FLAG,LCD_SAYAC,REG1,REG2,REG3
      DELAY_DATA,DELAY_DATA2,LCD_REG,LCD_TEMP,AY1,GUN1,YIL1,SAAT1,DAKIKA1,SANIYE1
      I2C_VERI,I2C_RETURN,I2C_ADRESLOW,BUFFER_VERI,SANIYE,DAKIKA,SAAT,AY,GUN,YIL
      ALARM_AY10,ALARM_GUN10,ALARM_YIL10,ALARM_SAAT10,ALARM_DAKIKA10,ALARM_SANIYE10,VERIREG
      ALARM_AY1,ALARM_GUN1,ALARM_YIL1,ALARM_SAAT1,ALARM_DAKIKA1,ALARM_SANIYE1,ALARM_SAYAC,SAYAC
      DOT1,DOT2,DOT3,DOT4,DOT5,DOT6,DOT7,DOT8,DOT9,DOT10,DOT11,DOT12,DOT13,DOT14,DOT15,DOT16
      ENDC
;********************************************************************************************************
      CBLOCK      0x70
      SAVE_W
      SAVE_STATUS
      DELAY_DATAX
      DELAY_DATA2X
      ENDC
;********************************************************************************************************      
#DEFINE   LCD_DATA   PORTB
#DEFINE   RS         PORTB,4
#DEFINE   E         PORTB,5      
#DEFINE   I2C_PORT   PORTA
#DEFINE   I2C_TRIS   TRISA
#DEFINE   BUZZER      PORTA,4
#DEFINE   UP         PORTA,0
#DEFINE   DOWN      PORTA,3
#DEFINE   MOD         PORTB,7
#DEFINE   ALARM      PORTB,6
#DEFINE   STOP      PORTA,5
#DEFINE   IPTAL      PORTA,6
#DEFINE   ALARM2      PORTA,7
;*****************************************
SCL      EQU         .1
SDA      EQU         .2
;*****************************************
      ORG         0x00
      GOTO      SETUP
;*****************************************
      ORG         0x04
      GOTO      INT_VEKTOR
;*****************************************
INTRO
      ADDWF      PCL,F
      DT         "SAKARYA UNiVERSiTESi ENDUSTRiYEL ELEKTRONiK BOLUMU iYi GUNLER DiLER...",0x00
;*****************************************
YAZCIHAN
      ADDWF      PCL,F
      DT         "*CiHAN YILDIRIM*",0x00
;*****************************************
SAAT_AYARLANDI
      ADDWF      PCL,F
      DT         "SAAT AYARLANDI",0x00
;*****************************************
YAZIYIGUNLER
      ADDWF      PCL,F
      DT         ".:.iYi GUNLER.:.",0x00
;*****************************************
YAZ_ALARM_AYARLANDI
      ADDWF      PCL,F
      DT         "ALARM AYARLANDI",0x00
;*****************************************
ALARM_ACILDI
      ADDWF      PCL,F
      DT         "ALARM ACILDI",0x00
;*****************************************
ALARM_KAPANDI
      ADDWF      PCL,F
      DT         "ALARM KAPANDI",0x00
;*****************************************
ALARM_GUNLUK
      ADDWF      PCL,F
      DT         "ALM. TURU:GUNLUK",0x00
;*****************************************
ALARM_AYLIK
      ADDWF      PCL,F
      DT         "ALARM TURU:AYLIK",0x00
;*****************************************
INT_VEKTOR
      MOVWF      SAVE_W
      SWAPF      STATUS,W
      MOVWF      SAVE_STATUS
      CLRF      STATUS
      MOVF      DELAY_DATA,W
      MOVWF      DELAY_DATAX
      MOVF      DELAY_DATA2,W
      MOVWF      DELAY_DATA2X
      MOVF      PORTB,W
      BSF         FLAG,1
;*****************************************      
      BTFSC      MOD
      GOTO      $+6
      BTFSC      FLAG,2      
      CLRF      BUTONSAYAC      
      BCF         FLAG,2
      BTFSS      MOD
      GOTO      $-1
      MOVLW      .1
      MOVWF      DELAY_DATA
      CALL      DELAY_MS0
      BTFSS      MOD
      GOTO      $-4
;*****************************************                  
      BTFSC      ALARM
      GOTO      EXIT
      BTFSS      FLAG,2      
      CALL      SETBTSAYAC
      BSF         FLAG,2
      BTFSS      ALARM
      GOTO      $-1
      MOVLW      .1
      MOVWF      DELAY_DATA
      CALL      DELAY_MS0
      BTFSS      ALARM
      GOTO      $-4
;*****************************************            
EXIT
      MOVF      DELAY_DATAX,W
      MOVWF      DELAY_DATA
      MOVF      DELAY_DATA2X,W
      MOVWF      DELAY_DATA2
      SWAPF      SAVE_STATUS,W
      MOVWF      STATUS
      SWAPF      SAVE_W,F
      SWAPF      SAVE_W,W
      BCF         INTCON,RBIF
      RETFIE      
;*****************************************
SETBTSAYAC
      CLRF      BUTONSAYAC
      MOVLW      .3
      BTFSC      FLAG,4
      MOVWF      BUTONSAYAC
      RETURN
;*****************************************
SETUP   
      CLRF      PORTA
      CLRF      PORTB            
      MOVLW      0x07
      MOVWF      CMCON      
      BSF         STATUS,5
      MOVLW      0xEF
      MOVWF      TRISA
      MOVLW      0xC0
      MOVWF      TRISB
      BCF         STATUS,5
      CLRF      BUTONSAYAC
      CLRF      FLAG
;*****************************************   
      CLRF      ALARM_AY10
      CLRF      ALARM_GUN10
      CLRF      ALARM_YIL10
      CLRF      ALARM_SAAT10
      CLRF      ALARM_DAKIKA10
      CLRF      ALARM_SANIYE10
      CLRF      ALARM_YIL1
      CLRF      ALARM_SAAT1
      CLRF      ALARM_DAKIKA1
      CLRF      ALARM_SANIYE1
      MOVLW      .1
      MOVWF      ALARM_AY1
      MOVWF      ALARM_GUN1
;*****************************************   
      MOVLW      .200
      CALL      DELAY_MS
      CALL       LCD_INIT
;*****************************************   
      CALL      DS1307_INIT         ;DS1307 SAYMA BITI ENABLE
      CALL      DS1307_SQWE_ON      ;KAREDALGA CIKISI AKTIF
;*****************************************         
      CLRF      INTCON
      BSF         INTCON,GIE
      BSF         INTCON,RBIE
;*****************************************         
      CALL      ANIMASYON
;*****************************************         
MAIN                           ;ANA DONGU BASLANGICI
      CALL      LCD_SHOW         ;SAAT VE TARIHI EKRANA YAZ            
      CALL      BUTON_SOR         ;BUTONLARI SOR
      MOVLW      .3
      CALL      DELAY_MS         ;YAKLASIK 3MS KADAR BEKLE
      GOTO      MAIN            ;REFRESH
;*****************************************      
YAZGUNLUK
      CLRF      LCD_SAYAC
      MOVF      LCD_SAYAC,W
      CALL      ALARM_GUNLUK
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      BEKLE
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      $-7
      GOTO      BEKLE
;*****************************************      
GUNLUKALARM
      BTFSS      ALARM2
      GOTO      GUNLUKALARM
      CALL      MESAJ_YAZ
      BTFSS      FLAG,2
      RETURN
      MOVLW      .1
      MOVWF      BUTONSAYAC
      MOVLW      .4
      BTFSC      FLAG,4
      MOVWF      BUTONSAYAC      
      RETURN
;*****************************************      
MESAJ_YAZ
      MOVLW      0x01
      CALL      SEND_CMD
      MOVLW      0x10
      XORWF      FLAG,F
      BTFSC      FLAG,4
      GOTO      YAZGUNLUK
;*****************************************      
YAZAYLIK
      CLRF      LCD_SAYAC
      MOVF      LCD_SAYAC,W
      CALL      ALARM_AYLIK
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      BEKLE
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      $-7
      GOTO      BEKLE
;*****************************************      
BUTON_SOR
      BTFSS      IPTAL
      GOTO      TEMIZLE

      BTFSS      STOP
      GOTO      ALARM_IPTAL
      
      BTFSS      ALARM2
      GOTO      GUNLUKALARM

      BTFSC      FLAG,1
      GOTO      DEGISTIR            

      CALL      SET_CURSOR

      BTFSS      UP
      GOTO      ARTIR
      BTFSS      DOWN
      GOTO      EKSILT

      BTFSC      FLAG,0
      GOTO      BUTON_SOR

      RETURN
;*****************************************      
TEMIZLE
      BTFSS      IPTAL
      GOTO      TEMIZLE
      MOVLW      0x0C
      CALL      SEND_CMD
      MOVLW      B'00011000'
      ANDWF      FLAG,F
      CLRF      BUTONSAYAC
      CALL      DS1307_INIT
      GOTO      GERI_YUKLE
;*****************************************      
ALARMIAC
      BSF         FLAG,3
      MOVLW      .1
      CALL      SEND_CMD
      CLRF      LCD_SAYAC
;*****************************************
LOOP3
      MOVF      LCD_SAYAC,W
      CALL      ALARM_ACILDI
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      $+4
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      LOOP3
      GOTO      BEKLE
;******************************************   
BEKLE
      MOVLW      .255
      CALL      DELAY_MS
      MOVLW      .255
      CALL      DELAY_MS
;******************************************   
GERI_YUKLE
      MOVLW      .2
      CALL      SEND_CMD
      MOVLW      'T'
      CALL      SEND_CHAR
      MOVLW      'a'
      CALL      SEND_CHAR
      MOVLW      'r'
      CALL      SEND_CHAR
      MOVLW      'i'
      CALL      SEND_CHAR
      MOVLW      'h'
      CALL      SEND_CHAR
      MOVLW      ':'
      CALL      SEND_CHAR
      MOVLW      ' '
      CALL      SEND_CHAR      

      CALL      TARIHI_YAZ

      MOVLW      0xC0
      CALL      SEND_CMD            
      MOVLW      'S'
      CALL      SEND_CHAR
      MOVLW      'a'
      CALL      SEND_CHAR
      MOVLW      'a'
      CALL      SEND_CHAR
      MOVLW      't'
      CALL      SEND_CHAR
      MOVLW      ' '
      CALL      SEND_CHAR
      MOVLW      ':'
      CALL      SEND_CHAR
      MOVLW      ' '
      CALL      SEND_CHAR
      
      GOTO      SAATI_YAZ
;******************************************   
ALARM_IPTAL
      BTFSS      STOP
      GOTO      ALARM_IPTAL

      MOVLW      0x0C
      CALL      SEND_CMD

      BTFSS      FLAG,3
      GOTO      ALARMIAC

      BCF         FLAG,3
      MOVLW      .1
      CALL      SEND_CMD
      CLRF      LCD_SAYAC
;*****************************************
LOOP4
      MOVF      LCD_SAYAC,W
      CALL      ALARM_KAPANDI
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      $+4
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      LOOP4
      GOTO      BEKLE
;******************************************   
CURSOR1
      MOVLW      .136
      CALL      SEND_CMD      
      MOVLW      0x0E
      GOTO      SEND_CMD      
;*****************************************      
CURSOR2
      MOVLW      .139
      CALL      SEND_CMD      
      MOVLW      0x0E
      GOTO      SEND_CMD      
;*****************************************      
CURSOR3
      MOVLW      .142
      CALL      SEND_CMD      
      MOVLW      0x0E
      GOTO      SEND_CMD      
;*****************************************      
CURSOR4
      MOVLW      .200
      CALL      SEND_CMD      
      MOVLW      0x0E
      GOTO      SEND_CMD      
;*****************************************      
CURSOR5
      MOVLW      .203
      CALL      SEND_CMD      
      MOVLW      0x0E
      GOTO      SEND_CMD      
;*****************************************      
CURSOR6
      MOVLW      .206
      CALL      SEND_CMD      
      MOVLW      0x0E
      GOTO      SEND_CMD      
;*****************************************      
SET_CURSOR
      MOVLW      .1
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR1      

      MOVLW      .2
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR2
      MOVLW      .3
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR3      
      MOVLW      .4
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR4      
      MOVLW      .5
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR5      
      MOVLW      .6
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR6      
      RETURN
;*****************************************            
DS1307_STOPX
      BTFSC      FLAG,2
      GOTO      DS1307_INIT
      GOTO      DS1307_STOP
;*****************************************
DEGISTIR
      BTFSS      MOD
      GOTO      DEGISTIR
      MOVLW      .1
      MOVWF      DELAY_DATA
      CALL      DELAY_MS0
      BTFSS      MOD
      GOTO      DEGISTIR
;*****************************************
      BTFSS      ALARM
      GOTO      $-1
      MOVLW      .1
      MOVWF      DELAY_DATA
      CALL      DELAY_MS0
      BTFSS      ALARM
      GOTO      $-4
;*****************************************
      BSF         FLAG,0
      BCF         FLAG,1      
            
      INCF      BUTONSAYAC,F
      MOVLW      .7
      SUBWF      BUTONSAYAC,W
      BTFSS      STATUS,Z
      GOTO      DS1307_STOPX
      CLRF      BUTONSAYAC
      BCF         FLAG,0
      CALL      DS1307_INIT
;*****************************************      
      MOVLW      0x0C
      CALL      SEND_CMD

      BTFSC      FLAG,2
      GOTO      ALARM_AYARLANDI
      CLRF      I2C_ADRESLOW
      SWAPF      SANIYE10,W
      ADDWF      SANIYE1,W
      MOVWF      SANIYE
      CALL      DS1307_WRITE
      INCF      I2C_ADRESLOW,F
      SWAPF      DAKIKA10,W
      ADDWF      DAKIKA1,W
      MOVWF      DAKIKA
      CALL      DS1307_WRITE
      INCF      I2C_ADRESLOW,F
      SWAPF      SAAT10,W
      ADDWF      SAAT1,W
      MOVWF      SAAT
      CALL      DS1307_WRITE
      MOVLW      .4
      MOVWF      I2C_ADRESLOW            
      SWAPF      GUN10,W
      ADDWF      GUN1,W
      MOVWF      GUN
      CALL      DS1307_WRITE
      INCF      I2C_ADRESLOW,F
      SWAPF      AY10,W
      ADDWF      AY1,W
      MOVWF      AY
      CALL      DS1307_WRITE
      INCF      I2C_ADRESLOW,F      
      SWAPF      YIL10,W
      ADDWF      YIL1,W
      MOVWF      YIL
      CALL      DS1307_WRITE
;*****************************************
      MOVLW      .1
      CALL      SEND_CMD
      CLRF      LCD_SAYAC
;*****************************************
LOOP1
      MOVF      LCD_SAYAC,W
      CALL      SAAT_AYARLANDI
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      RELOAD
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      LOOP1
;*****************************************                  
ALARM_AYARLANDI

      BTFSC      FLAG,2
      BSF         FLAG,3
      BCF         FLAG,2

      MOVLW      .1
      CALL      SEND_CMD
      CLRF      LCD_SAYAC
;*****************************************
LOOP2
      MOVF      LCD_SAYAC,W
      CALL      YAZ_ALARM_AYARLANDI
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      RELOAD
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      LOOP2
;*****************************************      
RELOAD
      MOVLW      0xC0
      CALL      SEND_CMD
      MOVLW      .16
      MOVWF      LCD_SAYAC
      MOVLW      0xFF
      CALL      SEND_CHAR
      MOVLW      .40
      CALL      DELAY_MS
      DECFSZ      LCD_SAYAC,F
      GOTO      $-5
      GOTO      GERI_YUKLE
;*****************************************                  
ARTIR
      BTFSS      UP
      GOTO      ARTIR
      
      MOVLW      .1
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      UPGUN
      
      MOVLW      .2
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      UPAY

      MOVLW      .3
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      UPYIL
      
      MOVLW      .4
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      UPSAAT
      
      MOVLW      .5
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      UPDAKIKA
      
      MOVLW      .6
      SUBWF      BUTONSAYAC,W
      BTFSS      STATUS,Z
      RETURN
UPSANIYE
      BTFSC      FLAG,2
      GOTO      ALARM_UPSANIYE
      INCF      SANIYE1,F
      MOVLW      .10
      SUBWF      SANIYE1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      SANIYE1
      INCF      SANIYE10,F
      MOVLW      .6
      SUBWF      SANIYE10,W
      BTFSC      STATUS,Z
      CLRF      SANIYE10
      GOTO      LCD_SHOW
;*****************************************      
UPDAKIKA
      BTFSC      FLAG,2
      GOTO      ALARM_UPDAKIKA
      INCF      DAKIKA1,F
      MOVLW      .10
      SUBWF      DAKIKA1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      DAKIKA1
      INCF      DAKIKA10,F
      MOVLW      .6
      SUBWF      DAKIKA10,W
      BTFSC      STATUS,Z
      CLRF      DAKIKA10
      GOTO      LCD_SHOW   
;*****************************************      
UPSAAT
      BTFSC      FLAG,2
      GOTO      ALARM_UPSAAT
      MOVLW      .2
      SUBWF      SAAT10,W
      BTFSS      STATUS,Z
      GOTO      SAAT_2
      INCF      SAAT1,F
      MOVLW      .4
      SUBWF      SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      SAAT1
      CLRF      SAAT10
      GOTO      LCD_SHOW
SAAT_2
      INCF      SAAT1,F
      MOVLW      .10
      SUBWF      SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      SAAT1
      INCF      SAAT10,F
      GOTO      LCD_SHOW
;*****************************************      
UPGUN
      BTFSC      FLAG,2
      GOTO      ALARM_UPGUN
      MOVLW      .3
      SUBWF      GUN10,W
      BTFSS      STATUS,Z
      GOTO      GUN_2
      INCF      GUN1,F
      MOVLW      .2
      SUBWF      GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .1
      MOVWF      GUN1
      CLRF      GUN10
      GOTO      LCD_SHOW
GUN_2
      INCF      GUN1,F
      MOVLW      .10
      SUBWF      GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      GUN1
      INCF      GUN10,F
      GOTO      LCD_SHOW

;*****************************************      
UPAY
      BTFSC      FLAG,2
      GOTO      ALARM_UPAY
      MOVLW      .1
      SUBWF      AY10,W
      BTFSS      STATUS,Z
      GOTO      AY_2
      INCF      AY1,F
      MOVLW      .3
      SUBWF      AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .1
      MOVWF      AY1
      CLRF      AY10
      GOTO      LCD_SHOW
AY_2
      INCF      AY1,F
      MOVLW      .10
      SUBWF      AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      AY1
      INCF      AY10,F
      GOTO      LCD_SHOW

;*****************************************      
UPYIL
      BTFSC      FLAG,2
      GOTO      ALARM_UPYIL
      INCF      YIL1,F
      MOVLW      .10
      SUBWF      YIL1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      YIL1
      INCF      YIL10,F
      MOVLW      .10
      SUBWF      YIL10,W
      BTFSC      STATUS,Z
      CLRF      YIL10
      GOTO      LCD_SHOW   
;*****************************************      

ALARM_UPSANIYE
      INCF      ALARM_SANIYE1,F
      MOVLW      .10
      SUBWF      ALARM_SANIYE1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_SANIYE1
      INCF      ALARM_SANIYE10,F
      MOVLW      .6
      SUBWF      ALARM_SANIYE10,W
      BTFSC      STATUS,Z
      CLRF      ALARM_SANIYE10
      GOTO      LCD_SHOW
;*****************************************      
ALARM_UPDAKIKA
      INCF      ALARM_DAKIKA1,F
      MOVLW      .10
      SUBWF      ALARM_DAKIKA1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_DAKIKA1
      INCF      ALARM_DAKIKA10,F
      MOVLW      .6
      SUBWF      ALARM_DAKIKA10,W
      BTFSC      STATUS,Z
      CLRF      ALARM_DAKIKA10
      GOTO      LCD_SHOW   
;*****************************************      
ALARM_UPSAAT
      MOVLW      .2
      SUBWF      ALARM_SAAT10,W
      BTFSS      STATUS,Z
      GOTO      ALARM_SAAT_2
      INCF      ALARM_SAAT1,F
      MOVLW      .4
      SUBWF      ALARM_SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_SAAT1
      CLRF      ALARM_SAAT10
      GOTO      LCD_SHOW
ALARM_SAAT_2
      INCF      ALARM_SAAT1,F
      MOVLW      .10
      SUBWF      ALARM_SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_SAAT1
      INCF      ALARM_SAAT10,F
      GOTO      LCD_SHOW
;*****************************************      
ALARM_UPGUN
      MOVLW      .3
      SUBWF      ALARM_GUN10,W
      BTFSS      STATUS,Z
      GOTO      ALARM_GUN_2
      INCF      ALARM_GUN1,F
      MOVLW      .2
      SUBWF      ALARM_GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .1
      MOVWF      ALARM_GUN1
      CLRF      ALARM_GUN10
      GOTO      LCD_SHOW
ALARM_GUN_2
      INCF      ALARM_GUN1,F
      MOVLW      .10
      SUBWF      ALARM_GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_GUN1
      INCF      ALARM_GUN10,F
      GOTO      LCD_SHOW

;*****************************************      
ALARM_UPAY
      MOVLW      .1
      SUBWF      ALARM_AY10,W
      BTFSS      STATUS,Z
      GOTO      ALARM_AY_2
      INCF      ALARM_AY1,F
      MOVLW      .3
      SUBWF      ALARM_AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .1
      MOVWF      ALARM_AY1
      CLRF      ALARM_AY10
      GOTO      LCD_SHOW
ALARM_AY_2
      INCF      ALARM_AY1,F
      MOVLW      .10
      SUBWF      ALARM_AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_AY1
      INCF      ALARM_AY10,F
      GOTO      LCD_SHOW

;*****************************************      
ALARM_UPYIL
      INCF      ALARM_YIL1,F
      MOVLW      .10
      SUBWF      ALARM_YIL1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      CLRF      ALARM_YIL1
      INCF      ALARM_YIL10,F
      MOVLW      .10
      SUBWF      ALARM_YIL10,W
      BTFSC      STATUS,Z
      CLRF      ALARM_YIL10
      GOTO      LCD_SHOW   
;*****************************************      
DECODE
      MOVLW      0xF0
      ANDWF      SANIYE,W
      MOVWF      SANIYE10
      BCF         SANIYE10,7
      SWAPF      SANIYE10,F
;*****************************************      
      MOVLW      0x0F
      ANDWF      SANIYE,W
      MOVWF      SANIYE1
;*****************************************      
      MOVLW      0xF0
      ANDWF      DAKIKA,W
      MOVWF      DAKIKA10
      SWAPF      DAKIKA10,F
;*****************************************      
      MOVLW      0x0F
      ANDWF      DAKIKA,W
      MOVWF      DAKIKA1
;*****************************************      
      MOVLW      0xF0
      ANDWF      SAAT,W
      MOVWF      SAAT10
      SWAPF      SAAT10,F
;*****************************************      
      MOVLW      0x0F
      ANDWF      SAAT,W
      MOVWF      SAAT1
;*****************************************      
      MOVLW      0xF0
      ANDWF      AY,W
      MOVWF      AY10
      SWAPF      AY10,F
;*****************************************      
      MOVLW      0x0F
      ANDWF      AY,W
      MOVWF      AY1
;*****************************************      
      MOVLW      0xF0
      ANDWF      YIL,W
      MOVWF      YIL10
      SWAPF      YIL10,F
;*****************************************      
      MOVLW      0x0F
      ANDWF      YIL,W
      MOVWF      YIL1
;*****************************************      
      MOVLW      0xF0
      ANDWF      GUN,W
      MOVWF      GUN10
      SWAPF      GUN10,F
;*****************************************      
      MOVLW      0x0F
      ANDWF      GUN,W
      MOVWF      GUN1
;*****************************************      
      BTFSS      FLAG,3      ;ALARM KURULU MU
      RETURN               ;KURULU DEGILSE CIK
;*****************************************      
      MOVF      ALARM_SANIYE1,W
      SUBWF      SANIYE1,W
      BTFSS      STATUS,Z
      RETURN
      
      MOVF      ALARM_DAKIKA1,W
      SUBWF      DAKIKA1,W
      BTFSS      STATUS,Z
      RETURN      
      
      MOVF      ALARM_SAAT1,W
      SUBWF      SAAT1,W
      BTFSS      STATUS,Z
      RETURN      

      MOVF      ALARM_SANIYE10,W
      SUBWF      SANIYE10,W
      BTFSS      STATUS,Z
      RETURN
      
      MOVF      ALARM_DAKIKA10,W
      SUBWF      DAKIKA10,W
      BTFSS      STATUS,Z
      RETURN      
      
      MOVF      ALARM_SAAT10,W
      SUBWF      SAAT10,W
      BTFSS      STATUS,Z
      RETURN      

      BTFSC      FLAG,4
      GOTO      ZAMAN_DOLDU
      
      MOVF      ALARM_AY1,W
      SUBWF      AY1,W
      BTFSS      STATUS,Z
      RETURN            

      MOVF      ALARM_GUN1,W
      SUBWF      GUN1,W
      BTFSS      STATUS,Z
      RETURN            

      MOVF      ALARM_YIL1,W
      SUBWF      YIL1,W
      BTFSS      STATUS,Z
      RETURN            

      MOVF      ALARM_AY10,W
      SUBWF      AY10,W
      BTFSS      STATUS,Z
      RETURN            

      MOVF      ALARM_GUN10,W
      SUBWF      GUN10,W
      BTFSS      STATUS,Z
      RETURN            

      MOVF      ALARM_YIL10,W
      SUBWF      YIL10,W
      BTFSS      STATUS,Z
      RETURN            

ZAMAN_DOLDU
;ZAMAN DOLDU ALARM CALIYIYOR
      MOVLW      .1
      CALL      SEND_CMD
      CLRF      LCD_SAYAC
;*****************************************
LOOP1X
      MOVF      LCD_SAYAC,W
      CALL      YAZIYIGUNLER
      ANDLW      0xFF
      BTFSC      STATUS,Z
      GOTO      PASGEC
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      LOOP1X
;*****************************************
PASGEC
      MOVLW      .64
      MOVWF      ALARM_SAYAC
      MOVLW      .4
      MOVWF      LCD_SAYAC
      MOVLW      0xC0
      CALL      SEND_CMD
;*****************************************
ALARM_CAL
      BTFSS      IPTAL
      GOTO      MUTE      
      BSF         BUZZER
      CALL      WAIT
      BCF         BUZZER
      CALL      WAIT
;*****************************************            
      DECFSZ      LCD_SAYAC,F
      GOTO      PASGECX
      MOVLW      0xFF
      CALL      SEND_CHAR
      MOVLW      .4
      MOVWF      LCD_SAYAC
;*****************************************            
PASGECX
      DECFSZ      ALARM_SAYAC,F
      GOTO      ALARM_CAL
MUTE
      BCF         BUZZER
      GOTO      GERI_YUKLE
;*****************************************            
EKSILT
      BTFSS      DOWN
      GOTO      EKSILT
      
      MOVLW      .1
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      DOWNGUN
      
      MOVLW      .2
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      DOWNAY

      MOVLW      .3
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      DOWNYIL
      
      MOVLW      .4
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      DOWNSAAT
      
      MOVLW      .5
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      DOWNDAKIKA
      
      MOVLW      .6
      SUBWF      BUTONSAYAC,W
      BTFSS      STATUS,Z
      RETURN
DOWNSANIYE
      BTFSC      FLAG,2
      GOTO      ALARM_DOWNSANIYE
      DECF      SANIYE1,F
      MOVLW      .255
      SUBWF      SANIYE1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      SANIYE1
      DECF      SANIYE10,F
      MOVLW      .255
      SUBWF      SANIYE10,W
      MOVLW      .5
      BTFSC      STATUS,Z
      MOVWF      SANIYE10
      GOTO      LCD_SHOW
;*****************************************   
DOWNGUN
      BTFSC      FLAG,2
      GOTO      ALARM_DOWNGUN
      MOVLW      .0
      SUBWF      GUN10,W
      BTFSS      STATUS,Z
      GOTO      GUN_2D
      DECF      GUN1,F
      MOVLW      .0
      SUBWF      GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .1
      MOVWF      GUN1
      MOVLW      .3
      MOVWF      GUN10
      GOTO      LCD_SHOW
GUN_2D
      DECF      GUN1,F
      MOVLW      .255
      SUBWF      GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      GUN1
      DECF      GUN10,F
      MOVLW      .255
      SUBWF      GUN10,W
      MOVLW      .0
      BTFSC      STATUS,Z
      MOVWF      GUN10
      GOTO      LCD_SHOW
;*****************************************   
DOWNAY
      BTFSC      FLAG,2
      GOTO      ALARM_DOWNAY
      MOVLW      .0
      SUBWF      AY10,W
      BTFSS      STATUS,Z
      GOTO      AY_2D
      DECF      AY1,F
      MOVLW      .0
      SUBWF      AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .2
      MOVWF      AY1
      MOVLW      .1
      MOVWF      AY10
      GOTO      LCD_SHOW
AY_2D
      DECF      AY1,F
      MOVLW      .255
      SUBWF      AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      AY1
      DECF      AY10,F
      MOVLW      .255
      SUBWF      AY10,W
      MOVLW      .0
      BTFSC      STATUS,Z
      MOVWF      AY10
      GOTO      LCD_SHOW
;*****************************************   
DOWNYIL
      BTFSC      FLAG,2
      GOTO      ALARM_DOWNYIL
      DECF      YIL1,F
      MOVLW      .255
      SUBWF      YIL1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      YIL1
      DECF      YIL10,F
      MOVLW      .255
      SUBWF      YIL10,W
      MOVLW      .9
      BTFSC      STATUS,Z
      MOVWF      YIL10
      GOTO      LCD_SHOW
;*****************************************   
DOWNDAKIKA
      BTFSC      FLAG,2
      GOTO      ALARM_DOWNDAKIKA
      DECF      DAKIKA1,F
      MOVLW      .255
      SUBWF      DAKIKA1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      DAKIKA1
      DECF      DAKIKA10,F
      MOVLW      .255
      SUBWF      DAKIKA10,W
      MOVLW      .5
      BTFSC      STATUS,Z
      MOVWF      DAKIKA10
      GOTO      LCD_SHOW
;*****************************************   
DOWNSAAT
      BTFSC      FLAG,2
      GOTO      ALARM_DOWNSAAT
      MOVLW      .0
      SUBWF      SAAT10,W
      BTFSS      STATUS,Z
      GOTO      SAAT_2D
      DECF      SAAT1,F
      MOVLW      .255
      SUBWF      SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .3
      MOVWF      SAAT1
      MOVLW      .2
      MOVWF      SAAT10
      GOTO      LCD_SHOW
SAAT_2D
      DECF      SAAT1,F
      MOVLW      .255
      SUBWF      SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      SAAT1
      DECF      SAAT10,F
      MOVLW      .255
      SUBWF      SAAT10,W
      MOVLW      .0
      BTFSC      STATUS,Z
      MOVWF      SAAT10
      GOTO      LCD_SHOW
;*****************************************   

ALARM_DOWNSANIYE
      DECF      ALARM_SANIYE1,F
      MOVLW      .255
      SUBWF      ALARM_SANIYE1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      ALARM_SANIYE1
      DECF      ALARM_SANIYE10,F
      MOVLW      .255
      SUBWF      ALARM_SANIYE10,W
      MOVLW      .5
      BTFSC      STATUS,Z
      MOVWF      ALARM_SANIYE10
      GOTO      LCD_SHOW
;*****************************************   
ALARM_DOWNGUN
      MOVLW      .0
      SUBWF      ALARM_GUN10,W
      BTFSS      STATUS,Z
      GOTO      ALARM_GUN_2D
      DECF      ALARM_GUN1,F
      MOVLW      .0
      SUBWF      ALARM_GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .1
      MOVWF      ALARM_GUN1
      MOVLW      .3
      MOVWF      ALARM_GUN10
      GOTO      LCD_SHOW
ALARM_GUN_2D
      DECF      ALARM_GUN1,F
      MOVLW      .255
      SUBWF      ALARM_GUN1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      ALARM_GUN1
      DECF      ALARM_GUN10,F
      MOVLW      .255
      SUBWF      ALARM_GUN10,W
      MOVLW      .0
      BTFSC      STATUS,Z
      MOVWF      ALARM_GUN10
      GOTO      LCD_SHOW
;*****************************************   
ALARM_DOWNAY
      MOVLW      .0
      SUBWF      ALARM_AY10,W
      BTFSS      STATUS,Z
      GOTO      ALARM_AY_2D
      DECF      ALARM_AY1,F
      MOVLW      .0
      SUBWF      ALARM_AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .2
      MOVWF      ALARM_AY1
      MOVLW      .1
      MOVWF      ALARM_AY10
      GOTO      LCD_SHOW
ALARM_AY_2D
      DECF      ALARM_AY1,F
      MOVLW      .255
      SUBWF      ALARM_AY1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      ALARM_AY1
      DECF      ALARM_AY10,F
      MOVLW      .255
      SUBWF      ALARM_AY10,W
      MOVLW      .0
      BTFSC      STATUS,Z
      MOVWF      ALARM_AY10
      GOTO      LCD_SHOW
;*****************************************   
ALARM_DOWNYIL
      DECF      ALARM_YIL1,F
      MOVLW      .255
      SUBWF      ALARM_YIL1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      ALARM_YIL1
      DECF      ALARM_YIL10,F
      MOVLW      .255
      SUBWF      ALARM_YIL10,W
      MOVLW      .9
      BTFSC      STATUS,Z
      MOVWF      ALARM_YIL10
      GOTO      LCD_SHOW
;*****************************************   
ALARM_DOWNDAKIKA
      DECF      ALARM_DAKIKA1,F
      MOVLW      .255
      SUBWF      ALARM_DAKIKA1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      ALARM_DAKIKA1
      DECF      ALARM_DAKIKA10,F
      MOVLW      .255
      SUBWF      ALARM_DAKIKA10,W
      MOVLW      .5
      BTFSC      STATUS,Z
      MOVWF      ALARM_DAKIKA10
      GOTO      LCD_SHOW
;*****************************************   
ALARM_DOWNSAAT
      MOVLW      .0
      SUBWF      ALARM_SAAT10,W
      BTFSS      STATUS,Z
      GOTO      ALARM_SAAT_2D
      DECF      ALARM_SAAT1,F
      MOVLW      .255
      SUBWF      ALARM_SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .3
      MOVWF      ALARM_SAAT1
      MOVLW      .2
      MOVWF      ALARM_SAAT10
      GOTO      LCD_SHOW
ALARM_SAAT_2D
      DECF      ALARM_SAAT1,F
      MOVLW      .255
      SUBWF      ALARM_SAAT1,W
      BTFSS      STATUS,Z
      GOTO      LCD_SHOW
      MOVLW      .9
      MOVWF      ALARM_SAAT1
      DECF      ALARM_SAAT10,F
      MOVLW      .255
      SUBWF      ALARM_SAAT10,W
      MOVLW      .0
      BTFSC      STATUS,Z
      MOVWF      ALARM_SAAT10
      GOTO      LCD_SHOW
;*****************************************   
CURSOR1X
      MOVLW      .135
      CALL      SEND_CMD
      BTFSC      FLAG,2
      CALL      ALARM_TARIHI_YAZ      
      BTFSS      FLAG,2
      CALL      TARIHI_YAZ
      MOVLW      .199
      CALL      SEND_CMD
      BTFSC      FLAG,2
      GOTO      ALARM_SAATI_YAZ
      GOTO      SAATI_YAZ
;*****************************************      
CURSOR2X
      MOVLW      .138
      CALL      SEND_CMD      
      BTFSC      FLAG,2
      GOTO      AAYIYAZ
      GOTO      AYIYAZ
;*****************************************      
CURSOR3X
      MOVLW      .141
      CALL      SEND_CMD
      BTFSC      FLAG,2
      GOTO      AYILIYAZ      
      GOTO      YILIYAZ
;*****************************************      
CURSOR4X
      MOVLW      .199
      CALL      SEND_CMD
      BTFSC      FLAG,2
      GOTO      ALARM_SAATI_YAZ
      GOTO      SAATI_YAZ
;*****************************************      
CURSOR5X
      MOVLW      .202
      CALL      SEND_CMD      
      BTFSC      FLAG,2
      GOTO      ADAKIKAYIYAZ
      GOTO      DAKIKAYIYAZ
;*****************************************      
CURSOR6X
      MOVLW      .205
      CALL      SEND_CMD      
      BTFSC      FLAG,2
      GOTO      ASANIYEYIYAZ
      GOTO      SANIYEYIYAZ
;*****************************************      
LCD_SHOWX
      MOVLW      .1
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR1X      
      MOVLW      .2
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR2X
      MOVLW      .3
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR3X   
      MOVLW      .4
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR4X      
      MOVLW      .5
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR5X      
      MOVLW      .6
      SUBWF      BUTONSAYAC,W
      BTFSC      STATUS,Z
      GOTO      CURSOR6X      
      RETURN
;*****************************************   
LCD_SHOW
      MOVLW      0x0C
      CALL      SEND_CMD
      
      BCF         INTCON,GIE      
      CALL      DSFULLREAD
      BSF         INTCON,GIE
      
      BTFSC      FLAG,0
      GOTO      LCD_SHOWX
      
      CALL      DECODE
      
      BTFSC      FLAG,1
      RETURN      
      BTFSS      IPTAL
      RETURN

      MOVLW      .2
      CALL      SEND_CMD
      MOVLW      'T'
      CALL      SEND_CHAR
      MOVLW      'a'
      CALL      SEND_CHAR
      MOVLW      'r'
      CALL      SEND_CHAR
      MOVLW      'i'
      CALL      SEND_CHAR
      MOVLW      'h'
      CALL      SEND_CHAR
      MOVLW      ':'
      CALL      SEND_CHAR
      MOVLW      ' '
      CALL      SEND_CHAR      

      BTFSC      FLAG,1
      RETURN
      BTFSS      IPTAL
      RETURN

      CALL      TARIHI_YAZ

      BTFSC      FLAG,1
      RETURN
      BTFSS      IPTAL
      RETURN

      MOVLW      0xC0
      CALL      SEND_CMD            
      MOVLW      'S'
      CALL      SEND_CHAR
      MOVLW      'a'
      CALL      SEND_CHAR
      MOVLW      'a'
      CALL      SEND_CHAR
      MOVLW      't'
      CALL      SEND_CHAR
      MOVLW      ' '
      CALL      SEND_CHAR
      MOVLW      ':'
      CALL      SEND_CHAR
      MOVLW      ' '
      CALL      SEND_CHAR
      
      BTFSC      FLAG,1
      RETURN
      BTFSS      IPTAL
      RETURN

      CALL      SAATI_YAZ

;      MOVLW      .5
;      GOTO      DELAY_MS

      RETURN
;*****************************************      
SAATIYAZ      
      MOVF      SAAT10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      SAAT1,W
      ADDLW      0x30
      GOTO      SEND_CHAR
;*****************************************            
DAKIKAYIYAZ
      MOVF      DAKIKA10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      DAKIKA1,W
      ADDLW      0x30
      GOTO      SEND_CHAR                  
;*****************************************      
SAATI_YAZ
      BTFSC      FLAG,2
      GOTO      ALARM_SAATI_YAZ

      CALL      SAATIYAZ
      MOVLW      ':'
      CALL      SEND_CHAR                  

      CALL      DAKIKAYIYAZ
      MOVLW      ':'
      CALL      SEND_CHAR                  
SANIYEYIYAZ      
      MOVF      SANIYE10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      SANIYE1,W
      ADDLW      0x30
      CALL      SEND_CHAR      

      MOVLW      ' '
      GOTO      SEND_CHAR   
;*****************************************            
ASAATIYAZ
      MOVF      ALARM_SAAT10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      ALARM_SAAT1,W
      ADDLW      0x30
      GOTO      SEND_CHAR      
;*****************************************            
ADAKIKAYIYAZ
      MOVF      ALARM_DAKIKA10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      ALARM_DAKIKA1,W
      ADDLW      0x30
      GOTO      SEND_CHAR      
;*****************************************            
ALARM_SAATI_YAZ
      CALL      ASAATIYAZ
      MOVLW      ':'
      CALL      SEND_CHAR                  

      CALL      ADAKIKAYIYAZ
      MOVLW      ':'
      CALL      SEND_CHAR                  
      
ASANIYEYIYAZ
      MOVF      ALARM_SANIYE10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      ALARM_SANIYE1,W
      ADDLW      0x30
      CALL      SEND_CHAR      

      MOVLW      'A'
      GOTO      SEND_CHAR   
;*****************************************         
GUNUYAZ
      MOVF      GUN10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      GUN1,W
      ADDLW      0x30
      GOTO      SEND_CHAR      
;*****************************************               
AYIYAZ
      MOVF      AY10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      AY1,W
      ADDLW      0x30
      GOTO      SEND_CHAR      
;*****************************************               
TARIHI_YAZ
      BTFSC      FLAG,2
      GOTO      ALARM_TARIHI_YAZ
      
      CALL      GUNUYAZ
      MOVLW      '.'
      CALL      SEND_CHAR

      CALL      AYIYAZ
      MOVLW      '.'
      CALL      SEND_CHAR
YILIYAZ
      MOVF      YIL10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      YIL1,W
      ADDLW      0x30
      CALL      SEND_CHAR      

      MOVLW      ' '
      GOTO      SEND_CHAR   
;*****************************************            
AGUNUYAZ
      MOVF      ALARM_GUN10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      ALARM_GUN1,W
      ADDLW      0x30
      GOTO      SEND_CHAR      
;*****************************************            
AAYIYAZ
      MOVF      ALARM_AY10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      ALARM_AY1,W
      ADDLW      0x30
      GOTO      SEND_CHAR      
;*****************************************            
ALARM_TARIHI_YAZ
      CALL      AGUNUYAZ
      MOVLW      '.'
      CALL      SEND_CHAR

      CALL      AAYIYAZ
      MOVLW      '.'
      CALL      SEND_CHAR
AYILIYAZ
      MOVF      ALARM_YIL10,W
      ADDLW      0x30
      CALL      SEND_CHAR
      MOVF      ALARM_YIL1,W
      ADDLW      0x30
      CALL      SEND_CHAR      

      MOVLW      'A'
      GOTO      SEND_CHAR      
;*****************************************            
DSFULLREAD
      MOVLW      .4
      MOVWF      I2C_ADRESLOW   
      CALL      DS1307_READ      
      MOVWF      GUN

      INCF      I2C_ADRESLOW,F
      CALL      DS1307_READ      
      MOVWF      AY

      INCF      I2C_ADRESLOW,F
      CALL      DS1307_READ      
      MOVWF      YIL

      MOVLW      .2
      MOVWF      I2C_ADRESLOW   
      CALL      DS1307_READ      
      MOVWF      SAAT

      DECF      I2C_ADRESLOW,F   
      CALL      DS1307_READ      
      MOVWF      DAKIKA

      DECF      I2C_ADRESLOW,F
      CALL      DS1307_READ      
      MOVWF      SANIYE
      RETURN
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMM  LCD  KONTROL BOLUMU  MMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
LCD_INIT
      MOVLW      0x33
      CALL      SEND_CMD
      MOVLW      0x32
      CALL      SEND_CMD
      MOVLW      0x28
      CALL      SEND_CMD
      MOVLW      0x01
      CALL      SEND_CMD
      MOVLW      0x06
      CALL      SEND_CMD
      MOVLW      0x0C
;-------------------------------------------------
SEND_CMD   
      BTFSC      FLAG,1
      RETURN

      MOVWF      LCD_REG
      ANDLW      0xF0
      MOVWF      LCD_TEMP
      SWAPF      LCD_TEMP,W
      CALL      SEND_LCD
      MOVLW      0x0F
      ANDWF      LCD_REG,W
      GOTO      SEND_LCD
;+++++++++++++++++++++++++++++++++++++++++++++++++
SEND_CHAR   
      BTFSC      FLAG,1
      RETURN
      MOVWF      LCD_REG
      ANDLW      0xF0
      MOVWF      LCD_TEMP
      SWAPF      LCD_TEMP,F
      BSF         LCD_TEMP,4
      MOVF      LCD_TEMP,W
      CALL      SEND_LCD
      MOVLW      0x0F
      ANDWF      LCD_REG,F
      BSF         LCD_REG,4
      MOVF      LCD_REG,W
;+++++++++++++++++++++++++++++++++++++++++++++++++
SEND_LCD
      MOVWF      LCD_DATA
      BSF         E
      MOVLW      .3
      MOVWF      DELAY_DATA
      BCF         E
;-------------------------------------------------
DELAY_MS0
      MOVLW      .150
      MOVWF      DELAY_DATA2
DELAY_MS1
      NOP
      DECFSZ      DELAY_DATA2,F
      GOTO      DELAY_MS1
      DECFSZ      DELAY_DATA,F
      GOTO      DELAY_MS0
      RETURN
;-------------------------------------------------
DELAY_MS
      MOVWF      DELAY_DATA
DELAY_MS0X
      MOVLW      .255
      MOVWF      DELAY_DATA2
DELAY_MS1X
      BTFSC      FLAG,1
      RETURN
      BTFSS      STOP
      RETURN
      BTFSS      IPTAL
      RETURN
      DECFSZ      DELAY_DATA2,F
      GOTO      DELAY_MS1X
      DECFSZ      DELAY_DATA,F
      GOTO      DELAY_MS0X
      RETURN
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMM  I2C  KONTROL BOLUMU  MMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
I2CSTART
      BCF         I2C_PORT,SDA
      BCF         I2C_PORT,SCL
      BSF         STATUS,5
      BSF         I2C_TRIS,SDA
      BSF         I2C_TRIS,SCL
      NOP
      NOP
      BCF         STATUS,5
      BCF         I2C_PORT,SDA
      BSF         STATUS,5
      BCF         I2C_TRIS,SDA
      NOP
      NOP
      BCF         STATUS,5
      BCF         I2C_PORT,SCL
      BSF         STATUS,5
      BCF         I2C_TRIS,SCL
      BCF         STATUS,5
      RETURN
;-------------------------------------
I2CSTOP
      BCF         I2C_PORT,SDA
      BSF         STATUS,5
      BCF         I2C_TRIS,SDA
      BSF         I2C_TRIS,SCL
      NOP
      NOP
      BSF         I2C_TRIS,SDA
      BCF         STATUS,5
      RETURN
;-------------------------------------
SEND_I2C
      MOVWF      I2C_VERI
      BSF         STATUS,C
SEND_1
      RLF         I2C_VERI,F
      MOVF      I2C_VERI,F
      BTFSS      STATUS,Z
      CALL      BITOUT
      BTFSS      STATUS,Z
      GOTO      SEND_1
;-------------------------------------
BITIN
      BSF         STATUS,5
      BSF         I2C_TRIS,SDA
      BSF         I2C_TRIS,SCL
      NOP
      NOP
      BCF         STATUS,5
      BCF         I2C_RETURN,0
      BTFSC      I2C_PORT,SDA
      BSF         I2C_RETURN,0
      BCF         I2C_PORT,SCL
      BSF         STATUS,5
      BCF         I2C_TRIS,SCL
      BCF         STATUS,5
      RETURN
;-------------------------------------
GET_I2C
      MOVLW      .1
      MOVWF      I2C_RETURN
RX_1
      RLF         I2C_RETURN,F
      CALL      BITIN
      BTFSS      STATUS,C
      GOTO      RX_1
      MOVF      I2C_RETURN,W
      RETURN
;-------------------------------------
ACK
      BCF         STATUS,C
BITOUT
      BCF         I2C_PORT,SDA
      BSF         STATUS,5
      BTFSS      STATUS,C
      BCF         I2C_TRIS,SDA
      BTFSC      STATUS,C
      BSF         I2C_TRIS,SDA
;-------------------------------------
      BSF         I2C_TRIS,SCL
      NOP
      NOP
      BCF         STATUS,5
      BCF         I2C_PORT,SCL
      BSF         STATUS,5
      BCF         I2C_TRIS,SCL
      BCF         STATUS,C
      BCF         STATUS,5
      RETURN
;-------------------------------------
NACK
      BSF         STATUS,C
      GOTO      BITOUT
;-------------------------------------
DS1307_INIT
      CLRF      I2C_ADRESLOW
      CALL      DS1307_READ
;-------------------------------------
      BCF         I2C_RETURN,7
;-------------------------------------
      MOVF      I2C_RETURN,W
      CALL      DS1307_WRITE
      RETURN
;-------------------------------------
DS1307_STOP
      CLRF      I2C_ADRESLOW
      CALL      DS1307_READ
;-------------------------------------
      BSF         I2C_RETURN,7
;-------------------------------------
      MOVF      I2C_RETURN,W
      CALL      DS1307_WRITE
      RETURN
;-------------------------------------
DS1307_READ
      CALL      I2CSTART
      MOVLW      0xD0
      CALL      SEND_I2C
      MOVF      I2C_ADRESLOW,W
      CALL      SEND_I2C
      CALL      I2CSTART
      MOVLW      0xD1
      CALL      SEND_I2C
      CALL      GET_I2C
      CALL      NACK
      CALL      I2CSTOP
      RETURN
;-------------------------------------
DS1307_WRITE
      MOVWF      BUFFER_VERI
      CALL      I2CSTART
      MOVLW      0xD0
      CALL      SEND_I2C
      MOVF      I2C_ADRESLOW,W
      CALL      SEND_I2C
      MOVF      BUFFER_VERI,W
      CALL      SEND_I2C
      CALL      I2CSTOP
      RETURN
;-------------------------------------
DS1307_SQWE_ON
      MOVLW      0x07
      MOVWF      I2C_ADRESLOW
      MOVLW      0x90
      CALL      DS1307_WRITE
      RETURN
;-------------------------------------      
DS1307_SQWE_OFF
      MOVLW      0x07
      MOVWF      I2C_ADRESLOW
      MOVLW      0x80
      CALL      DS1307_WRITE
      RETURN
;-------------------------------------      
DS1307_SQWE_2
      MOVLW      0x07
      MOVWF      I2C_ADRESLOW
      MOVLW      0x91
      CALL      DS1307_WRITE
      RETURN
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMM  I2C  KONTROL BOLUMU  MMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
WAIT
      MOVLW      .1
      MOVWF      REG1
DONGU1
      MOVLW      .255
      MOVWF      REG2
DONGU2
      MOVLW      .255
      MOVWF      REG3
DONGU3
      DECFSZ      REG3,F
      GOTO      DONGU3
      DECFSZ      REG2,F
      GOTO      DONGU2
      DECFSZ      REG1,F
      GOTO      DONGU1
      RETURN
;-------------------------------------   
ANIMASYON
      MOVLW      .1
      CALL      SEND_CMD
      CALL      CIHAN
      CALL      DOTCLEAR
      CLRF      SAYAC
;-------------------------------------   
KAY
      BTFSS      IPTAL
      RETURN
      MOVF      SAYAC,W
      CALL      INTRO   
      MOVWF      VERIREG
      MOVF      VERIREG,W
      BTFSC      STATUS,Z
      GOTO      YAZI_SONU         
      MOVWF      DOT16
      CALL      SHOWSCREEN
      CALL      SHIFTSCREEN      
      MOVLW      .75
      CALL      DELAY_MS
      INCF      SAYAC,F
      GOTO      KAY
;-------------------------------------   
YAZI_SONU
      MOVLW      .16
      MOVWF      SAYAC
      BTFSS      IPTAL
      RETURN
      CALL      SHOWSCREEN
      CALL      SHIFTSCREEN      
      MOVLW      .75
      CALL      DELAY_MS
      DECFSZ      SAYAC,F
      GOTO      $-7
      RETURN
;-------------------------------------   
SHOWSCREEN
      MOVLW      .8
      CALL      SEND_CMD
      MOVLW      .2
      CALL      SEND_CMD
      MOVF      DOT1,W
      CALL      SEND_CHAR
      MOVF      DOT2,W
      CALL      SEND_CHAR
      MOVF      DOT3,W
      CALL      SEND_CHAR
      MOVF      DOT4,W
      CALL      SEND_CHAR
      MOVF      DOT5,W
      CALL      SEND_CHAR
      MOVF      DOT6,W
      CALL      SEND_CHAR
      MOVF      DOT7,W
      CALL      SEND_CHAR
      MOVF      DOT8,W
      CALL      SEND_CHAR
      MOVF      DOT9,W
      CALL      SEND_CHAR
      MOVF      DOT10,W
      CALL      SEND_CHAR
      MOVF      DOT11,W
      CALL      SEND_CHAR
      MOVF      DOT12,W
      CALL      SEND_CHAR
      MOVF      DOT13,W
      CALL      SEND_CHAR
      MOVF      DOT14,W
      CALL      SEND_CHAR
      MOVF      DOT15,W
      CALL      SEND_CHAR
      MOVF      DOT16,W
      CALL      SEND_CHAR
      MOVLW      .1
      CALL      DELAY_MS
      MOVLW      .12
      GOTO      SEND_CMD
;-------------------------------------   
DOTCLEAR
      MOVLW      ' '
      MOVWF      DOT1
      MOVWF      DOT2
      MOVWF      DOT3
      MOVWF      DOT4
      MOVWF      DOT5
      MOVWF      DOT6
      MOVWF      DOT7
      MOVWF      DOT8
      MOVWF      DOT9
      MOVWF      DOT10
      MOVWF      DOT11
      MOVWF      DOT12
      MOVWF      DOT13
      MOVWF      DOT14
      MOVWF      DOT15
      MOVWF      DOT16
      RETURN
;-------------------------------------   
SHIFTSCREEN
      MOVF      DOT2,W
      MOVWF      DOT1
      MOVF      DOT3,W
      MOVWF      DOT2
      MOVF      DOT4,W
      MOVWF      DOT3
      MOVF      DOT5,W
      MOVWF      DOT4
      MOVF      DOT6,W
      MOVWF      DOT5
      MOVF      DOT7,W
      MOVWF      DOT6
      MOVF      DOT8,W
      MOVWF      DOT7
      MOVF      DOT9,W
      MOVWF      DOT8
      MOVF      DOT10,W
      MOVWF      DOT9
      MOVF      DOT11,W
      MOVWF      DOT10
      MOVF      DOT12,W
      MOVWF      DOT11
      MOVF      DOT13,W
      MOVWF      DOT12
      MOVF      DOT14,W
      MOVWF      DOT13
      MOVF      DOT15,W
      MOVWF      DOT14
      MOVF      DOT16,W
      MOVWF      DOT15
      MOVLW      ' '
      MOVWF      DOT16
      RETURN
;-------------------------------------   
CIHAN
      MOVLW      0xC0
      CALL      SEND_CMD
      CLRF      LCD_SAYAC
;*****************************************
ROUTINE
      MOVF      LCD_SAYAC,W
      CALL      YAZCIHAN
      ANDLW      0xFF
      BTFSC      STATUS,Z
      RETURN
      CALL      SEND_CHAR
      INCF      LCD_SAYAC,F
      GOTO      ROUTINE
;*****************************************                  
      END


Yukarıdaki Asm kodunda örneğin kişinin isimini değiştirebilirim tarihide. Ancak her saat başı yada , istediğim zaman saat ayarını nasıl değiştirebiliriz?

huseyin0579

Usta 16F877a ile günde 100 farklı alarm olarak çalışan okul zili isimli bir proje var. Google arama yaptırabilirsin işini görürmü bilemem ama belki bu uygulama yardımcı olur.

huseyin0579

Usta yanlış anlamayın bir sorum olacak bu proje mühendislik öğrenci ödevi galiba bu soruyu sormamdaki neden uzun yıllar öğrenci ödevi yaptım bu proje kasıntı yapacak bir proje ve hiç kolay değil ama ben kritik bir durum varsa yardımcı olmak istedim. Ses uygulamaları ile son 4-5 senedir farklı projeler yaptım sd kartlı, harici eeprom v.s yapmak istediğiniz mp3 player ile olurmu bilemem ama size çok sıkıntı verecek gibi duruyor. Kolay gelsin

huseyin0579

Usta ilk mesaj ile 24 saat dilimi için 24 ayrı ses demişsin ayrıca son mesajda dakika bazında alarmdan bahsediliyor bu kısımı anlayamadım.

rayman

Mp3 playerden çalışacak.... Orasını aştık ancak , birde 24 zaman ayarlı alarm devresi + saat.

rayman

#10
B öyle bir çalışma buldum dosyaları yükledim yapan olabilir. Ancak kaynak sitede çalıştıramamışlar. Sorun olmuş. Yazılımda : https://elektroinfo.blogspot.com.tr/2010/07/okul-zili-projesi.html çözülsede Eeprom orada ne işe yarıyor ?

http://www.dosyaupload.com/d2KV

ete

Okul zili projesinde kimisi çalışıyor diyor kimisi çalışmıyor diyor. Çalışıyor diyen yalnızca bir iki kişi diğerleri çalıştıramıyor.  Blog sahibide projde pin bağlantıları yanlış onları düzelttim diyor. Sizce bu kadar hata bilmeyerek bir araya gelebilirmi?. Bunlar bence kasıtlı yapılan işler. Devre şemasının verilmeyişide kasıtlı bence. Sorun açığa çıkmasın diye. Butonları portB ye bağlıyor programda ama devrede PortD ye bağlıyor!!!!!. LCD farklı pinlere bağlanmış olmaz böyle şey bu bence kasıtlı yapılıyor ne çıkarları olabilir ondan da emin değilim. Ama kişileri siteye bağımlı hale getirmek olabilir

Gelelim saat işine. Her hangi bir saat projesini alsan ve her saat değiştiğinde ayrıca birde alarm çıkışı versen işin görülür.
Bütün yapman gereken şey ESKI_SAAT ile YENI SAAT (Yani SAAT) değişkenlerini karşılaştırmak. Bu işide RTC okumasında yapman gerek. IF ESKI_SAAT!=SAAT THEN GOSUB ALARM bu kadar. Orada ses verdilten sonra ESKI_SAAT=SAAT deyip bir sonraki değişikliğe kadar beklersin.
ALARM kısmında ise saat değerine göre kimi ses olarak vereceksen onuda saat değişkeni üzerinden seçeceksin olacak bu iş.

Ete

rayman

#12
Ete hocam güzel diyorsunuzda zaten komutlardan anlamıyorum. Belki yardım ede ede biraz zor olacak  ama hem ben , hem bu kaynaklara göz atanlar Pic işinide çözebilir.

Şimdi İsis'te baktım bu devreye 60 a yakın günde alarm kurma özelliği var. Mesela ben düşündüm . 1 günde 24 saat var . 1 saatte 60 dakika.. Sistem bana günde 24 kere alarm kurma şansı vermeli sanırım. Ki 1 . alarmı istediğim zaman aralığına  , 2. saati istediğim zaman aralığına , .........24. alarmı istediğim zaman aralığına kurmam lazım. İş bukadar sanırım.

ete

Forumda verdiğim cevaplara bakarsanız bir prensibim olduğunu anlarsınız. Elektronik ve programcılık çok geniş bir alan. Bir elektronik amatörü olarak bu geniş alanın her yerinde yer almam mümkün değil. Bu nedenle yalnızca anladığım işlerle ilgileniyorum. Anlamadıklarıma bu işten anlamam diyorum. Peki sen neden anlamadığın bir işi yapmaya çalışıyorsun? Nereye kadar yürüyecek bu iş? Ortada bir gerçek var. birisi yardım ederse yardımdan ziyade o işi yaparsa yapmış olacaksın. Yoksa taşıma suyla o değirmen dönmeyecek. Ben bu işten anlamam deyip bırakmak senin için çok hayırlı.
Bu işin ses kısmından bende anlamıyorum. Hiç uğraşmadım. Uğraşırsam belki çözerim ama çok uzun vakit ayırmak ve günlerce olaya konsantre olmak gerekir.  Bu nedenle bana gelmiş olsa bu iş, anlamam der geri çevirirdim.

Diğer bir anlamadığım konu ise her saat başı bir element tanıtılacak ise (ne kadar da gerekli bir iş bu tartışılır) neden alarmın istediğin bir zaman aralığında olması özelliği peşinden gidiyorsun? Buda başka bir amacı işaret ediyor gibi geliyor bana. Zira saat başında ilk sn de yada ilk dakika içinde ne elementi tanıtacak isen tanıtırsın olur biter. Neden alarm için zaman aralığı peşindesin? işte bunu anlamıyorum. Her neyse sana kolaylıklar dilerim.

Ete

rayman

#14
Ete Hocam bu iş şuna benzedi : Ozaman siz yazılımdan anlıyorsunuz , bilmediğinizde sizi başkaları '' uğraşma yapamazsın deyip hevesınizi kırdımı ''....
Bu iş için anlamam kısımı benim için yazılım bilmiyorum. Ki bunuda söylüyorum... Yazılım işime yaradığı zaman kıymetli işime yaramadığı zaman hiç bulaşacağım iş . Öyle ya birileri  birşey biliyorsa zamanı varsa çözebilir diye düşündüm.

Alarm zaman aralığına gelince :
Örneğin öğretmene çocuk bu ödevi verdi. 24 saat alarm başında bekleyemezler. Dolayısı ile ödevi teslim ederken , hocaya 10 dakika yada 2 dakika aralıklarla çalıştırıp teslim edecek diye.

Powered by EzPortal