geri sayan sayac

Başlatan Metin, 10 Haziran 2014, 08:39:44

Metin

sayın hocalarım aşagıda verdiğim programda 4 saatteen geri sayan ve bunu lcd ekranda göstermek istiyorum.üzerinde biraz uğraştım ama isis de denemelerimde sadece saniyeyi geri saydırabildim.hata nerede yardımcı olabilirimisiniz.16f628 kullandım.
PORTA=0
PORTB=0
TRISA=%00000000
TRISB=%00000000
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
define LCD RWREG PORTB
define LCD_RWBIT 2
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
ON INTERRUPT GoTo KESME 
OPTION_REG=%10001000
INTCON=%00001001
SAYAC VAR BYTE
SN VAR BYTE
DAK VAR BYTE
SAAT VAR BYTE
CLEAR
PAUSE 200
LCDOUT $FE,1
LOW PORTB.2
BASLA:
LCDOUT $FE,$84,DEC2 SAAT,":",DEC2  DAK,":",DEC2 SN
GOTO BASLA
DISABLE
KESME:
SAYAC=SAYAC-1
IF SAYAC=0 then
SAYAC=60
SN=SN-1
IF SN=0 THEN
SN=60
DAK=DAK-1
IF DAK=0 THEN
DAK=60
SAAT=SAAT-1
IF SAAT=0 THEN
SAAT=0
ENDIF
ENDIF
ENDIF
ENDIF
INTCON.2=0
RESUME
ENABLE
END

ete

#1
En başta program hangi işlemci için yazılmış belli değil. Sigorta ayarları yok.
Bundan böyle sigorta ayarı verilmemiş programlara bakmayacağım cevap da yazmayacağım!!!!!!!!!!!
Bu ana hatalardan sonra sana sormak istediğim bir kaç şey var. Hiç saatlere baktınmı ?
Her hangi bir saatte 60 rakamı gördünmü? 1 dakika=60 saniyedir ama sıfır da bir sayıdır ve bir sayılır. Dolayısıyla rakam 59'da biter. 60 olmaz hiç bir zaman. Ama sen maşallah bunları 60 a kadar uzatmışsın. böylece senin zamanın 61sn , 61 dakika şeklinde çalışmış.

Progama başlarken SAYAC değerini ayarlaman gerekirdi aksi halde sayac sıfırdan başlayacak ve 1 çıkartınca 255 olacaktır. Böyle oluncada zaman yine şaşacaktır.
Buna benzer bir sürü hata mevcut onları düzelttim ve hataların hepsine numara verdim bak ve incele.

Ete

PORTA=0
PORTB=0
TRISA=%00000000
TRISB=%00000000
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
define LCD RWREG PORTB
define LCD_RWBIT 2
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
ON INTERRUPT GoTo KESME
SAYAC=60***********************************************************************1
sn=0***************************************************************************2
dak=0**************************************************************************3
saat=4*************************************************************************4
OPTION_REG=%10001000
INTCON=%00001001
SAYAC VAR BYTE
SN VAR BYTE
DAK VAR BYTE
SAAT VAR BYTE
CLEAR
PAUSE 200
LCDOUT $FE,1
LOW PORTB.2

BASLA:
LCDOUT $FE,$84,DEC2 SAAT,":",DEC2  DAK,":",DEC2 SN
GOTO BASLA

DISABLE
KESME:
      SAYAC=SAYAC-1
      IF SAYAC=0 then
        SAYAC=60
        SN=SN-1
        IF SN=255 THEN ********************************************************5
          SN=59 ***************************************************************6
          DAK=DAK-1
          IF DAK=255 THEN******************************************************7
            DAK=59*************************************************************8
            SAAT=SAAT-1
            IF SAAT=255 THEN
              INTCON=0*********************************************************9
            ENDIF
          ENDIF
        ENDIF
      ENDIF
INTCON.2=0
RESUME
ENABLE
END

Metin

Şuan isisde çalıştığım için sigorta ayarları yapmadım.devreyi kurma aşamasına geçtiğimde bunları zaten ekleyecektim.kullandığım işlemcinin ismini de belirttim.bilgilerinizi paylaşırken kırıcı tarzda değilde öğretici tarzda olursa daha iyi olacağı kanaatindeyim.netice olarak bu işlerde fazla bir tecrübemiz yok ve bilgi,tecrübelerinize ihtiyaç duyuyoruz.sitenin başında 'Bilgi Hazinedir Paylaştıkça çoğalır'manidar bir söz olduğunu düşünüyorum.uzun zamandır okuduğum yazılarınızda  bu tavır var ve bu tavır pic programlama işine yeni başlayan kişileri bu işten soğumasına neden olmaktadır.yinede teşekkür eder,iyi çalışmalar dilerim.METİN.

ete

Sen kendine göre haklı olabilirsin. Ama burası bir paylaşım sitesi ve yazdıkların bir paylaşım konusu. Paylaşılan şeylerinde usulüne uygun olmasını sağlamak benim görevim zira bunu yapmadığım zaman kabak hep benim başıma patlıyor.
Neler oluyor söyleyeyim. Bu söylediklerim tamamen gerçek tecrübelere dayanıyor.
Senin yazdıklarını bir başkası alıp kullanmaya kalkıyor. Sonra gerçek devresinide kuruyor ve bana diyorki devre çalışmadı. Nedne çalışmadığı yada çalışmayacağı belli . Sigorta ayarları yok çünki. Bir bakarmısınız. Bu tür sorularla belkide yüzlerce kez karşılaştım. Yazılarımda sürekli söylüyorum usulüne uygun program yazın sigorta ayarları önemlidir. Bunları programın başına koyun . Ne demek sonradan koyacaktım baştan koysan olmuyormu bu tembellik neden? Sonradan koyacaktım lafı beni tatmin etmiyor. Üstelik söylediklerimden alınıyorsan. Bunada kızıyorum, Çünki ben bir şey söylüyorum sen tersini yapıyorsun üstelik birde alınıyorsun. Ne var alınacak ?. İnsanın kusurlarını görmesi kadar güzel bir şey yoktur. Üstelik bunu bir başkası gösterse bile ona teşekkür etmen gerekirken hemen cephe alıyorsun. Senin gibi davransam ne mesajına cevap verirdim nede hatalarını bulurdum ama ne yaptım ikaz ettim ve hatalarınıda gösterdim. Teşekkür beklerken bana cephe almayı yeğledin bravo sana. Böyle devam et hatta başarılı olursun belki.

Ete


Powered by EzPortal