avatar_ete

Saat Projeleri

Başlatan ete, 05 Eylül 2011, 11:13:26

erdoganacun

DS1307  ilgili  satırlar  bunlar  hocam

erdoganacun

hocam  sizin  4477  iletideki  yazınızla  alakalı  bir eksiklik  olabilirmi?

ete

Programdan bir şey anlamadım maalesef. Anlayan varsa yorumlasın. Programın bu işle alakası olduğunu sanmıyorum.
Enerjiyi kesmediğin müddetçe program doğru çalışıyorsa programla alakası yoktur. Alaka pil ve voltaj besleme ile ama onlardanda beklediğimiz kusurlar çıkmadı maalesef. Benim açımdan yapacak bir şey yok.
İleti 4477 de ne olaki acaba?

Ete

erdoganacun

hocam  şöyle  demiştiniz 

Yazılımla alakası yalnızca yeni ayar bilgilerinin DS1307 ye yazılmaması sonucunda bu hatanın meydana gelmesidir.
Ben yazdıktan sonra RTC den okuma yaptırıp bilgileri yenilerim. Böylece saat doğru ise yazılmış demektir.

erdoganacun

hocam  DS1307   patates  baskıymış  tamam  hallettim

erdoganacun

ilginç  olan diğer saatte  çalışıyordu ama

erdoganacun

ete  hocam şimdi de  başka  bir  hata  çıktı   60  ledler, de    saniyede  bir  geçerken bazı yerlerde  anormal geçiş oluyor  sanki  saniyede  ( 1 )  değilde  0.75 saniyede  zamanlı zamansız hızlı yavaş  gibi   geçiş  oluyor   ve ledeler de her gecişlerde   ledler tireşimli  bir şekilde geçiyor  hocam siteye video  yükleye  biliyormuyum  hocam size  programı göndereyimmi

nahro

#232
ETE hocam merhaba pıc16f877 ıle ısı saat devresı yaptım sonra ısıyı tekrar ıptal ettım saat 24 saatte 20-30 dk gec kalıyor yazılıma bakarmısınız tesekkurler asm kodunu attım


_interrupt:
        MOVWF      R15+0
        SWAPF      STATUS+0, 0
        CLRF       STATUS+0
        MOVWF      ___saveSTATUS+0
        MOVF       PCLATH+0, 0
        MOVWF      ___savePCLATH+0
        CLRF       PCLATH+0

;ISI-SAAT.c,11 ::                 void interrupt()
;ISI-SAAT.c,13 ::                 if(pir1.tmr1if){  //her 1 msn'de bu kesme oluşur
        BTFSS      PIR1+0, 0
        GOTO       L_interrupt0
;ISI-SAAT.c,14 ::                 tmr1h = 0xFC;
        MOVLW      252
        MOVWF      TMR1H+0
;ISI-SAAT.c,15 ::                 tmr1l = 0x1D;
        MOVLW      29
        MOVWF      TMR1L+0
;ISI-SAAT.c,16 ::                 t5ms++;
        INCF       _t5ms+0, 1
;ISI-SAAT.c,17 ::                 if(t5ms >= 5){   //5 msn oldu mu?
        MOVLW      5
        SUBWF      _t5ms+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_interrupt1
;ISI-SAAT.c,18 ::                 t5ms = 0;
        CLRF       _t5ms+0
;ISI-SAAT.c,19 ::                 t100ms++;
        INCF       _t100ms+0, 1
;ISI-SAAT.c,20 ::                 timeCtrl.F0 = 1;
        BSF        _timeCtrl+0, 0
;ISI-SAAT.c,21 ::                 if(t100ms >= 20){     //100 msn oldu mu?
        MOVLW      20
        SUBWF      _t100ms+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_interrupt2
;ISI-SAAT.c,22 ::                 t100ms = 0;
        CLRF       _t100ms+0
;ISI-SAAT.c,23 ::                 t500ms++;
        INCF       _t500ms+0, 1
;ISI-SAAT.c,24 ::                 timeCtrl.F1 = 1;
        BSF        _timeCtrl+0, 1
;ISI-SAAT.c,25 ::                 if(t500ms >= 5){   //500 msn oldu mu?
        MOVLW      5
        SUBWF      _t500ms+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_interrupt3
;ISI-SAAT.c,26 ::                 t500ms = 0;
        CLRF       _t500ms+0
;ISI-SAAT.c,27 ::                 t1000ms++;
        INCF       _t1000ms+0, 1
;ISI-SAAT.c,28 ::                 timeCtrl.F2 = 1;
        BSF        _timeCtrl+0, 2
;ISI-SAAT.c,29 ::                 if(t1000ms >= 2){      //1 sn oldu mu?
        MOVLW      2
        SUBWF      _t1000ms+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_interrupt4
;ISI-SAAT.c,30 ::                 t1000ms = 0;
        CLRF       _t1000ms+0
;ISI-SAAT.c,31 ::                 t5000ms++;
        INCF       _t5000ms+0, 1
;ISI-SAAT.c,32 ::                 timeCtrl.F3 = 1;
        BSF        _timeCtrl+0, 3
;ISI-SAAT.c,33 ::                 if(t5000ms >= 10){   //5 sn oldu mu?
        MOVLW      10
        SUBWF      _t5000ms+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_interrupt5
;ISI-SAAT.c,34 ::                 t5000ms = 0;
        CLRF       _t5000ms+0
;ISI-SAAT.c,35 ::                 timeCtrl.F4 = 1;
        BSF        _timeCtrl+0, 4
;ISI-SAAT.c,36 ::                 }
L_interrupt5:
;ISI-SAAT.c,37 ::                 }
L_interrupt4:
;ISI-SAAT.c,38 ::                 }
L_interrupt3:
;ISI-SAAT.c,39 ::                 }
L_interrupt2:
;ISI-SAAT.c,40 ::                 }
L_interrupt1:
;ISI-SAAT.c,41 ::                 pir1.tmr1if = 0;
        BCF        PIR1+0, 0
;ISI-SAAT.c,42 ::                 }
L_interrupt0:
;ISI-SAAT.c,43 ::                 }
L_end_interrupt:
L__interrupt43:
        MOVF       ___savePCLATH+0, 0
        MOVWF      PCLATH+0
        SWAPF      ___saveSTATUS+0, 0
        MOVWF      STATUS+0
        SWAPF      R15+0, 1
        SWAPF      R15+0, 0
        RETFIE
; end of _interrupt

_init:

;ISI-SAAT.c,45 ::                 void init()
;ISI-SAAT.c,47 ::                 adcon1 = 0x80; //Analog girişler açıldı
        MOVLW      128
        MOVWF      ADCON1+0
;ISI-SAAT.c,48 ::                 porta = 0;     //
        CLRF       PORTA+0
;ISI-SAAT.c,49 ::                 portb = 0;     //
        CLRF       PORTB+0
;ISI-SAAT.c,50 ::                 portd = 0;
        CLRF       PORTD+0
;ISI-SAAT.c,51 ::                 trisa = 0x02;
        MOVLW      2
        MOVWF      TRISA+0
;ISI-SAAT.c,52 ::                 trisb = 0x30;
        MOVLW      48
        MOVWF      TRISB+0
;ISI-SAAT.c,53 ::                 trisd = 0;
        CLRF       TRISD+0
;ISI-SAAT.c,54 ::                 timeCtrl = 0;
        CLRF       _timeCtrl+0
;ISI-SAAT.c,55 ::                 saat = 0;
        CLRF       _saat+0
;ISI-SAAT.c,56 ::                 dakika = 0;
        CLRF       _dakika+0
;ISI-SAAT.c,57 ::                 saniye = 0;
        CLRF       _saniye+0
;ISI-SAAT.c,58 ::                 t5ms = 0;
        CLRF       _t5ms+0
;ISI-SAAT.c,59 ::                 t100ms = 0;
        CLRF       _t100ms+0
;ISI-SAAT.c,60 ::                 t500ms = 0;
        CLRF       _t500ms+0
;ISI-SAAT.c,61 ::                 t1000ms = 0;
        CLRF       _t1000ms+0
;ISI-SAAT.c,62 ::                 t5000ms = 0;
        CLRF       _t5000ms+0
;ISI-SAAT.c,63 ::                 sira = 0;
        CLRF       _sira+0
;ISI-SAAT.c,64 ::                 mod = 0;
        CLRF       _mod+0
;ISI-SAAT.c,65 ::                 eportb = 0;
        CLRF       _eportb+0
;ISI-SAAT.c,66 ::                 tuskontrol = 0;
        CLRF       _tuskontrol+0
;ISI-SAAT.c,67 ::                 error = 0;
        CLRF       _error+0
;ISI-SAAT.c,68 ::                 option_reg = 0x01;//Pull_up dirençleri devrede, 1:4 prescaler değere ayarlandı
        MOVLW      1
        MOVWF      OPTION_REG+0
;ISI-SAAT.c,69 ::                 t1con = 0;
        CLRF       T1CON+0
;ISI-SAAT.c,70 ::                 intcon = 0;
        CLRF       INTCON+0
;ISI-SAAT.c,71 ::                 pie1.tmr1ie = 1;
        BSF        PIE1+0, 0
;ISI-SAAT.c,72 ::                 intcon.peie = 1;
        BSF        INTCON+0, 6
;ISI-SAAT.c,73 ::                 intcon.gie = 1;
        BSF        INTCON+0, 7
;ISI-SAAT.c,74 ::                 tmr1h = 0xFC;
        MOVLW      252
        MOVWF      TMR1H+0
;ISI-SAAT.c,75 ::                 tmr1l = 0x1D;
        MOVLW      29
        MOVWF      TMR1L+0
;ISI-SAAT.c,76 ::                 t1con.tmr1on = 1;
        BSF        T1CON+0, 0
;ISI-SAAT.c,78 ::                 }
L_end_init:
        RETURN
; end of _init

_ShowTime:

;ISI-SAAT.c,80 ::                 void ShowTime()
;ISI-SAAT.c,82 ::                 if(mod){
        MOVF       _mod+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_ShowTime6
;ISI-SAAT.c,84 ::                 if(error){
        MOVF       _error+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_ShowTime7
;ISI-SAAT.c,85 ::                 Disp[3] = 0x09;    //99 dereceden fazla olduğu için H yazacak
        MOVLW      9
        MOVWF      _disp+3
;ISI-SAAT.c,86 ::                 Disp[2] = 0x09;
        MOVLW      9
        MOVWF      _disp+2
;ISI-SAAT.c,88 ::                 } else{
        GOTO       L_ShowTime8
L_ShowTime7:
;ISI-SAAT.c,89 ::                 Disp[3] = segment[temp / 10];
        MOVLW      10
        MOVWF      R4+0
        MOVLW      0
        MOVWF      R4+1
        MOVF       _temp+0, 0
        MOVWF      R0+0
        MOVF       _temp+1, 0
        MOVWF      R0+1
        CALL       _Div_16x16_U+0
        MOVLW      _segment+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_segment+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      _disp+3
;ISI-SAAT.c,90 ::                 Disp[2] = segment[temp % 10];
        MOVLW      10
        MOVWF      R4+0
        MOVLW      0
        MOVWF      R4+1
        MOVF       _temp+0, 0
        MOVWF      R0+0
        MOVF       _temp+1, 0
        MOVWF      R0+1
        CALL       _Div_16x16_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVF       R8+1, 0
        MOVWF      R0+1
        MOVLW      _segment+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_segment+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      _disp+2
;ISI-SAAT.c,91 ::                 }
L_ShowTime8:
;ISI-SAAT.c,92 ::                 Disp[1] = 0x1C;       //derece sembolü
        MOVLW      28
        MOVWF      _disp+1
;ISI-SAAT.c,93 ::                 Disp[0] = 0x46;       //C harfi
        MOVLW      70
        MOVWF      _disp+0
;ISI-SAAT.c,94 ::                 }else{
        GOTO       L_ShowTime9
L_ShowTime6:
;ISI-SAAT.c,96 ::                 Disp[3] = segment[saat / 10] | flash;
        MOVLW      10
        MOVWF      R4+0
        MOVF       _saat+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _segment+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_segment+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R0+0
        MOVF       _flash+0, 0
        IORWF      R0+0, 0
        MOVWF      _disp+3
;ISI-SAAT.c,97 ::                 Disp[2] = segment[saat % 10] | flash;
        MOVLW      10
        MOVWF      R4+0
        MOVF       _saat+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _segment+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_segment+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R0+0
        MOVF       _flash+0, 0
        IORWF      R0+0, 0
        MOVWF      _disp+2
;ISI-SAAT.c,98 ::                 Disp[1] = segment[dakika / 10] | flash;
        MOVLW      10
        MOVWF      R4+0
        MOVF       _dakika+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _segment+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_segment+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R0+0
        MOVF       _flash+0, 0
        IORWF      R0+0, 0
        MOVWF      _disp+1
;ISI-SAAT.c,99 ::                 Disp[0] = segment[dakika % 10] | flash;
        MOVLW      10
        MOVWF      R4+0
        MOVF       _dakika+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _segment+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_segment+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R0+0
        MOVF       _flash+0, 0
        IORWF      R0+0, 0
        MOVWF      _disp+0
;ISI-SAAT.c,100 ::                 }
L_ShowTime9:
;ISI-SAAT.c,101 ::                 switch(sira){
        GOTO       L_ShowTime10
;ISI-SAAT.c,103 ::                 case 0: portb = 0x0E; portd = Disp[0]; break;
L_ShowTime12:
        MOVLW      14
        MOVWF      PORTB+0
        MOVF       _disp+0, 0
        MOVWF      PORTD+0
        GOTO       L_ShowTime11
;ISI-SAAT.c,104 ::                 case 1: portb = 0x0D; portd = Disp[1]; break;
L_ShowTime13:
        MOVLW      13
        MOVWF      PORTB+0
        MOVF       _disp+1, 0
        MOVWF      PORTD+0
        GOTO       L_ShowTime11
;ISI-SAAT.c,105 ::                 case 2: portb = 0x0B; portd = Disp[2]; break;
L_ShowTime14:
        MOVLW      11
        MOVWF      PORTB+0
        MOVF       _disp+2, 0
        MOVWF      PORTD+0
        GOTO       L_ShowTime11
;ISI-SAAT.c,106 ::                 case 3: portb = 0x07; portd = Disp[3]; break;
L_ShowTime15:
        MOVLW      7
        MOVWF      PORTB+0
        MOVF       _disp+3, 0
        MOVWF      PORTD+0
        GOTO       L_ShowTime11
;ISI-SAAT.c,112 ::                 }
L_ShowTime10:
        MOVF       _sira+0, 0
        XORLW      0
        BTFSC      STATUS+0, 2
        GOTO       L_ShowTime12
        MOVF       _sira+0, 0
        XORLW      1
        BTFSC      STATUS+0, 2
        GOTO       L_ShowTime13
        MOVF       _sira+0, 0
        XORLW      2
        BTFSC      STATUS+0, 2
        GOTO       L_ShowTime14
        MOVF       _sira+0, 0
        XORLW      3
        BTFSC      STATUS+0, 2
        GOTO       L_ShowTime15
L_ShowTime11:
;ISI-SAAT.c,113 ::                 sira++;
        INCF       _sira+0, 1
;ISI-SAAT.c,114 ::                 if(sira >= 4) sira = 0;        //tarama bilgisi gönderilecek display sırasını seçer
        MOVLW      4
        SUBWF      _sira+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_ShowTime16
        CLRF       _sira+0
L_ShowTime16:
;ISI-SAAT.c,115 ::                 }
L_end_ShowTime:
        RETURN
; end of _ShowTime

_main:

;ISI-SAAT.c,117 ::                 void main()
;ISI-SAAT.c,120 ::                 init();
        CALL       _init+0
;ISI-SAAT.c,121 ::                 do
L_main17:
;ISI-SAAT.c,124 ::                 if(timeCtrl.F0){
        BTFSS      _timeCtrl+0, 0
        GOTO       L_main20
;ISI-SAAT.c,125 ::                 ShowTime();
        CALL       _ShowTime+0
;ISI-SAAT.c,126 ::                 timeCtrl.F0 = 0;//5 msn zamanlama bayrağı siliniyor
        BCF        _timeCtrl+0, 0
;ISI-SAAT.c,127 ::                 }
L_main20:
;ISI-SAAT.c,134 ::                 if(timeCtrl.F1){
        BTFSS      _timeCtrl+0, 1
        GOTO       L_main21
;ISI-SAAT.c,135 ::                 if(tuskontrol){
        MOVF       _tuskontrol+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main22
;ISI-SAAT.c,136 ::                 tuskontrol = 0;
        CLRF       _tuskontrol+0
;ISI-SAAT.c,137 ::                 if(!portb.F4){
        BTFSC      PORTB+0, 4
        GOTO       L_main23
;ISI-SAAT.c,138 ::                 saat++;
        INCF       _saat+0, 1
;ISI-SAAT.c,139 ::                 if(saat>=24) saat = 0;
        MOVLW      24
        SUBWF      _saat+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_main24
        CLRF       _saat+0
L_main24:
;ISI-SAAT.c,140 ::                 }
L_main23:
;ISI-SAAT.c,141 ::                 if(!portb.F5){
        BTFSC      PORTB+0, 5
        GOTO       L_main25
;ISI-SAAT.c,142 ::                 dakika++;
        INCF       _dakika+0, 1
;ISI-SAAT.c,143 ::                 if(dakika >= 60) dakika = 0;
        MOVLW      60
        SUBWF      _dakika+0, 0
        BTFSS      STATUS+0, 0
        GOTO       L_main26
        CLRF       _dakika+0
L_main26:
;ISI-SAAT.c,144 ::                 }
L_main25:
;ISI-SAAT.c,145 ::                 } else tuskontrol = 1;
        GOTO       L_main27
L_main22:
        MOVLW      1
        MOVWF      _tuskontrol+0
L_main27:
;ISI-SAAT.c,146 ::                 timeCtrl.F1 = 0;  //100 msn zamanlama bayrağı siliniyor
        BCF        _timeCtrl+0, 1
;ISI-SAAT.c,147 ::                 }
L_main21:
;ISI-SAAT.c,151 ::                 if(timeCtrl.F2){
        BTFSS      _timeCtrl+0, 2
        GOTO       L_main28
;ISI-SAAT.c,153 ::                 if(flash) flash = 0; else flash = 0x80;
        MOVF       _flash+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main29
        CLRF       _flash+0
        GOTO       L_main30
L_main29:
        MOVLW      128
        MOVWF      _flash+0
L_main30:
;ISI-SAAT.c,155 ::                 temp = Adc_Read(1);  //RA1 kanalına bağlı LM35'ten ısı bilgisini oku
        MOVLW      1
        MOVWF      FARG_ADC_Read_channel+0
        CALL       _ADC_Read+0
        MOVF       R0+0, 0
        MOVWF      _temp+0
        MOVF       R0+1, 0
        MOVWF      _temp+1
;ISI-SAAT.c,156 ::                 temp = (temp >> 1);    //Isı değerini elde et  1 derece hassasiyette
        MOVF       R0+0, 0
        MOVWF      R2+0
        MOVF       R0+1, 0
        MOVWF      R2+1
        RRF        R2+1, 1
        RRF        R2+0, 1
        BCF        R2+1, 7
        MOVF       R2+0, 0
        MOVWF      _temp+0
        MOVF       R2+1, 0
        MOVWF      _temp+1
;ISI-SAAT.c,157 ::                 if(temp > 25) temp--; //Isı için hata düzeltme yapılıyor.
        MOVF       R2+1, 0
        SUBLW      0
        BTFSS      STATUS+0, 2
        GOTO       L__main47
        MOVF       R2+0, 0
        SUBLW      25
L__main47:
        BTFSC      STATUS+0, 0
        GOTO       L_main31
        MOVLW      1
        SUBWF      _temp+0, 1
        BTFSS      STATUS+0, 0
        DECF       _temp+1, 1
L_main31:
;ISI-SAAT.c,158 ::                 if(temp > 65) temp--;
        MOVF       _temp+1, 0
        SUBLW      0
        BTFSS      STATUS+0, 2
        GOTO       L__main48
        MOVF       _temp+0, 0
        SUBLW      65
L__main48:
        BTFSC      STATUS+0, 0
        GOTO       L_main32
        MOVLW      1
        SUBWF      _temp+0, 1
        BTFSS      STATUS+0, 0
        DECF       _temp+1, 1
L_main32:
;ISI-SAAT.c,159 ::                 if(temp > 99) error = 1; else error = 0;
        MOVF       _temp+1, 0
        SUBLW      0
        BTFSS      STATUS+0, 2
        GOTO       L__main49
        MOVF       _temp+0, 0
        SUBLW      99
L__main49:
        BTFSC      STATUS+0, 0
        GOTO       L_main33
        MOVLW      1
        MOVWF      _error+0
        GOTO       L_main34
L_main33:
        CLRF       _error+0
L_main34:
;ISI-SAAT.c,160 ::                 timeCtrl.F2 = 0;  //500 msn zamanlama bayrağı siliniyor
        BCF        _timeCtrl+0, 2
;ISI-SAAT.c,161 ::                 }
L_main28:
;ISI-SAAT.c,164 ::                 if(timeCtrl.F3){
        BTFSS      _timeCtrl+0, 3
        GOTO       L_main35
;ISI-SAAT.c,165 ::                 saniye++;
        INCF       _saniye+0, 1
;ISI-SAAT.c,166 ::                 if(saniye>59){
        MOVF       _saniye+0, 0
        SUBLW      59
        BTFSC      STATUS+0, 0
        GOTO       L_main36
;ISI-SAAT.c,167 ::                 saniye = 0;
        CLRF       _saniye+0
;ISI-SAAT.c,168 ::                 dakika++;
        INCF       _dakika+0, 1
;ISI-SAAT.c,169 ::                 if(dakika>59){
        MOVF       _dakika+0, 0
        SUBLW      59
        BTFSC      STATUS+0, 0
        GOTO       L_main37
;ISI-SAAT.c,170 ::                 dakika = 0;
        CLRF       _dakika+0
;ISI-SAAT.c,171 ::                 saat++;
        INCF       _saat+0, 1
;ISI-SAAT.c,172 ::                 if(saat>23) saat = 0;
        MOVF       _saat+0, 0
        SUBLW      23
        BTFSC      STATUS+0, 0
        GOTO       L_main38
        CLRF       _saat+0
L_main38:
;ISI-SAAT.c,173 ::                 }
L_main37:
;ISI-SAAT.c,174 ::                 }
L_main36:
;ISI-SAAT.c,175 ::                 timeCtrl.F3 = 0;  //1 sn zamanlama bayrağı siliniyor
        BCF        _timeCtrl+0, 3
;ISI-SAAT.c,176 ::                 }
L_main35:
;ISI-SAAT.c,180 ::                 if(timeCtrl.F4){
        BTFSS      _timeCtrl+0, 4
        GOTO       L_main39
;ISI-SAAT.c,181 ::                 if(mod) mod = 0; else mod = 1;
        MOVF       _mod+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L_main40
        CLRF       _mod+0
        GOTO       L_main41
L_main40:
        MOVLW      1
        MOVWF      _mod+0
L_main41:
;ISI-SAAT.c,182 ::                 timeCtrl.F4 = 0;  //5 sn zamanlama bayrağı siliniyor
        BCF        _timeCtrl+0, 4
;ISI-SAAT.c,183 ::                 }
L_main39:
;ISI-SAAT.c,184 ::                 }while(1);
        GOTO       L_main17
;ISI-SAAT.c,185 ::                 }
L_end_main:
        GOTO       $+0
; end of _main

rexo

Saatin ileri gitmesi  ve geri kalması genelde 32.768 Khz kıristalin kalitesiz ve Pcb de bağlantı yollarının uzun olmasından kaynaklanıyor,

Duvar saatlerinin içindeki kristalleri  kulanın ve  gövdesini şaseye lehimleyin.

   

ete

PBP derleyicisi dışında hiç bir derleyiciye ait programla ilgilenmiyorum. Çünki baksamda anlamıyorum.
Basic de bile başkasının yazdığı programı incelyip kusur aramak da bir eziyet. Çünki yazan adamın ne düşündüğünü bilmiyorsun. Bilmeden de programda değişiklik yapmak imkansız.

Ete

xc10

Merhaba ete hocam projeleriniz arasında üstteki 6 adet displayda tarih,alttaki 4 adet displayda saati gösterecek şekilde saat devresi çalışmanız varmı cevabınız için şimdiden teşekkürler....

ete

#236
Öyle bir çalışmam yok maalesef.
Ete

KA

Bu devrelere eprom nasıl ekliyebilriz yazılımda nasıl değişkilk yapmamız gerekiiyor

ete

Sİtede yer alan Basic Derslerinde bu konu detaylıca incelenmiştir. Basic derleri eprom konusunu okuyunuz.
Yapılması gereken bir adet I2C çalışan eprom ilave edip data ve CLK bacaklarını pic' bağlamak ve bu bacaklara birer pullup direnci bağlamak tır. Daha sonra I2CWRITE ve I2CREAD komutları ile bilgi yazılıp okunabilir.

Ete

inan kibar

1. programda 1Mhz kristal bulamadım bunun yerine nasıl bir kristal kullansam sorun olmaz, malzeme konusunda biraz vasat durumdayım

Powered by EzPortal