avatar_haberlesme

Buton hakkında bilgi

Başlatan haberlesme, 22 Nisan 2013, 23:10:22

haberlesme

Hocam müsait zamanınızda bir göz gezdirir misiniz son halinde gözden kaçırdıgım veya şurayıda şöyle yap dediginiz biryer.


'****************************************************************
@ DEVICE pic16F628, XT_OSC
@ DEVICE pic16F628, WDT_OFF                                               
@ DEVICE pic16F628, PWRT_OFF         
@ DEVICE pic16F628, MCLR_OFF
@ DEVICE pic16F628, BOD_OFF
@ DEVICE pic16F628, LVP_OFF
@ DEVICE pic16F628, CPD_OFF
@ DEVICE pic16F628, PROTECT_OFF
;*****************************************************************
    DEFINE OSC 4
    TRISB=0 : PORTB=0 
    TRISA=255 : PORTA=255
    CMCON=7
;*****************************************************************
    SN VAR BYTE
    DAK VAR BYTE
    SAAT VAR BYTE
    MEM VAR BYTE
    GUN VAR BYTE
    AY VAR BYTE
    YIL VAR BYTE
    HGUN VAR BYTE
    BOS  VAR BYTE
    TEMP VAR BYTE
;*****************************************************************
    SYMBOL  RTC_DTA=PORTB.0
    SYMBOL  RTC_CLK=PORTB.1
    SYMBOL  ARTIR=PORTA.0
    SYMBOL  SEC=PORTA.1
    SYMBOL  AZALT=PORTA.2
;*****************************************************************
    DEFINE LCD_DREG PORTB
    DEFINE LCD_DBIT 4
    DEFINE LCD_RSREG PORTB
    DEFINE LCD_RSBIT 2
    DEFINE LCD_EREG PORTB
    DEFINE LCD_EBIT 3
    DEFINE LCD_BITS 4
    DEFINE LCD_LINES 2
    PAUSE 300     
;******************************************************************
BASLA:
    IF SEC=0 THEN TARIHAYAR
    GOSUB ZAMAN_OKU
    GOTO BASLA
    end
;******************************************************************     
TARIHAYAR:
    WHILE SEC=0:WEND
    PAUSE 50
GUNBIR:   
    IF ARTIR=0 THEN GUN=GUN+1
    IF GUN>31 then GUN=1
    IF AZALT=0 THEN GUN=GUN-1
    IF GUN=255  then GUN=31 
    Pause 100
    LCDOUT $FE,$87,$FE,$0E : PAUSE 120 : LCDOUT $FE,$0C :PAUSE 120
    LCDOUT $FE,$80,"TARIH:",dec2(gun),"/",dec2(ay),"/",dec2(YIL)
    lcdout $FE,$C1,"SAAT:",DEC2(SAAT),":",DEC2(DAK),":",DEC2(SN)
    IF SEC=0 THEN GOTO AYARAY
    GOTO GUNBIR
;********************************************************************
AYARAY:
    WHILE SEC=0:WEND
    PAUSE 50
AYBIR:   
    IF ARTIR=0 THEN AY=AY+1
    IF AY>12 THEN AY=0
    IF AZALT=0 THEN AY=AY-1
    IF AY=255 THEN AY=12
    PAUSE 100
    LCDOUT $FE,$8A,$FE,$0E : PAUSE 120 : LCDOUT $FE,$0C :PAUSE 120
    LCDOUT $FE,$80,"TARIH:",dec2(gun),"/",dec2(ay),"/",dec2(YIL)
    lcdout $FE,$C1,"SAAT:",DEC2(SAAT),":",DEC2(DAK),":",DEC2(SN)
    IF SEC=0 THEN YILAYAR
    GOTO AYBIR
;********************************************************************   
YILAYAR:
WHILE SEC=0:WEND
PAUSE 50
YILBIR:   
    IF ARTIR=0 THEN YIL=YIL+1
    IF YIL>99 THEN YIL=0
    IF AZALT=0 THEN YIL=YIL-1
    IF YIL=255 THEN YIL=99
    PAUSE 100
    LCDOUT $FE,$8D,$FE,$0E : PAUSE 120 : LCDOUT $FE,$0C :PAUSE 120
    LCDOUT $FE,$80,"TARIH:",dec2(gun),"/",dec2(ay),"/",dec2(YIL)
    lcdout $FE,$C1,"SAAT:",DEC2(SAAT),":",DEC2(DAK),":",DEC2(SN)
    IF SEC=0 THEN AYAR
    GOTO YILBIR
;*********************************************************************   
AYAR:
     WHILE SEC=0:WEND
     PAUSE 50
AYARBIR:     
    SN=0
    IF ARTIR=0 THEN SAAT=SAAT+1
    IF SAAT>23 then saat=0
    IF AZALT=0 THEN SAAT=SAAT-1
    IF SAAT=255 then SAAT=23
    Pause 100
    LCDOUT $FE,$C7,$FE,$0E : PAUSE 120 : LCDOUT $FE,$0C :PAUSE 120
    LCDOUT $FE,$80,"TARIH:",dec2(gun),"/",dec2(ay),"/",dec2(YIL)
    lcdout $FE,$C1,"SAAT:",DEC2(SAAT),":",DEC2(DAK),":",DEC2(SN)
    IF SEC=0 THEN GOTO DAK_AYAR
    GOTO AYARBIR
;*********************************************************************
DAK_AYAR:
    WHILE SEC=0:WEND
    PAUSE 50
   
DAKBIR:   
    IF ARTIR=0 THEN DAK=DAK+1
    IF DAK>59 THEN DAK=0
    IF AZALT=0 THEN DAK=DAK-1
    IF DAK=255 THEN DAK=59
    PAUSE 100
    LCDOUT $FE,$CA,$FE,$0E : PAUSE 120 : LCDOUT $FE,$0C :PAUSE 120
    LCDOUT $FE,$80,"TARIH:",dec2(gun),"/",dec2(ay),"/",dec2(YIL)
    lcdout $FE,$C1,"SAAT:",DEC2(SAAT),":",DEC2(DAK),":",DEC2(SN)
    IF SEC=0 THEN KAYIT
    GOTO DAKBIR
;***********************************************************************
KAYIT:
      LCDOUT $FE,1
      GOSUB ZAMAN_YAZ
      GOSUB ZAMAN_OKU
      WHILE SEC=0:WEND
      PAUSE 50
      GOTO BASLA
;*********************************************************************             
ZAMAN_OKU:
    I2CRead RTC_DTA,RTC_CLK,$D0,$00,[SN,DAK,SAAT,HGUN,GUN,AY,YIL,TEMP]
    BOS=((sn>>4) & $0F)*10+(SN & $0F):sn=BOS
    BOS=((DAK>>4) & $0F)*10+(DAK & $0F):DAK=BOS
    BOS=((SAAT>>4) & $0F)*10+(Saat & $0F):SAAT=BOS
    BOS=((GUN>>4) & $0F)*10+(GUN & $0F):GUN=BOS
    BOS=((AY>>4) & $0F)*10+(AY & $0F)  :AY=BOS
    BOS=((YIL>>4) & $0F)*10+(YIL & $0F):YIL=BOS
    LCDOUT $FE,$80,"TARIH:",dec2(gun),"/",dec2(ay),"/",dec2(YIL)
    lcdout $FE,$C1,"SAAT:",DEC2(SAAT),":",DEC2(DAK),":",DEC2(SN)
    RETURN
;**********************************************************************   
ZAMAN_YAZ:
        TEMP=(SN DIG 1)<<4+SN DIG 0:SN=TEMP
        TEMP=(DAK DIG 1)<<4+DAK DIG 0:DAK=TEMP
        TEMP=(SAAT DIG 1)<<4+SAAT DIG 0:SAAT=TEMP
        TEMP=(GUN DIG 1)<<4+GUN DIG 0:GUN=TEMP
        TEMP=(AY DIG 1)<<4+AY DIG 0:AY=TEMP
        TEMP=(YIL DIG 1)<<4+YIL DIG 0:YIL=TEMP
        MEM=$10
        I2CWrite RTC_DTA,RTC_CLK,$D0,$00,[SN,DAK,SAAT,HGUN,GUN,AY,YIL,MEM]
        PAUSEUS 10
        return
;**************************************************************************

ete

Uzun programları gözden geçirmek bana sıkıntı veriyor. Üstelik E-Posta yolu ile bir sürü kişi program yolluyor bakıver diyor.
Sitede başka konularda bakıver diye mesajlar atılıyor. Hangi birine bakacağıma şaşırdım doğrusu.
Ne kadar kolay bakıver demek. Ama birde bana sorun nasıl bakayım. Bir yandan bürodaki mevcut işim bir yandan mesajların takibi ve cevaplar bir yandan program bakma beni yoruyor gerçekten. Elinizden geldiği kadar bakıver demeyin lütfen.

Bu nedenle arıza varsa bildir neredeyse oraya bakayım. Olmuş ise zaten bakmaya gerek yok sanırım.

Ete

MS_59

merhaba
gün ve ay ayar kısmında hatalar var
IF GUN=255  then GUN=31  'satırı yanlış
IF GUN=0  then GUN=31      'bu şekilde olmalı

IF AY>12 THEN AY=0            'satırı yanlış
IF AY>12 THEN AY=1            'olmalı

IF AY=255 THEN AY=12        'satırı yanlış
IF AY=0 THEN AY=12            'olmalı

ve birde tavsiye bilgileri ekrana vermek için tek bir EKRAN adlı etiket kullanıp ekrana gideceğin yerde GOSUB EKRAN demen yeterli birsürü yere LCDOUT.......... yazmana gerek yok

mehmet

haberlesme

Evet hocam çok haklısınız bu konuda size haksızlık ediyoruz öncelikle özür dilerim.

Program bu haliyle çalışıyor.Ayar tuşuna basınca ilk önce tarih ayarına gidiyor.Gün Ay Yıl ayarlandıktan sonra Saat ayarına atlıyor sonra dakika ayarlıyor, en son ayarlanan değerleri rtc ye yazıyor ve çalışmasına devam ediyor.

Ancak şunu yapmak istemiştim belli bir süre tuşa basınca tarıh ayarına geçsin dedim sizin ilk yazdıgınız örnekteki while sec=0 süre=süre+1 : if süre>100 then tarıh ayar şeklinde yaptım ama olmadı ki zaten olsada sonradan şunu farkettim ayar menüsünden kayıta gidince zaman yaz sonra zaman oku ya gittigi için saat geride kalıyordu.Sonra yerlerini değiştirdim zaman oku kısmını üste alıp yaz kısmını bir alt satıra yazdım bu sefer de yeni saati görmedi direk rtcyi okudu yazdı bende bundan vazgeçtim önce tarih ayarını yaptırdım sürekli değişim göstermedigi için en sonda da saat ayarını yapıp kayıt olayına gittim.

aRci

paylaşım için teşekkür edrim çok işime yardımcı oldu tekrar teşekkür ederim

Powered by EzPortal