7 Segment Display ile Saat

Başlatan dijital74, 05 Şubat 2006, 13:48:42

dijital74

Merhaba Arkadaşlar;
Elimde 7SD ile PIC16f84 ile yaptığım bir saat var. Evvelden bu proje LCD ekran için hazırlanmıştı. Ben bunu 7SD için çevirdim. Ama sanırım interrupt kullanırken bilgim yeterli değil. Şemayı ve kaynak kodları gönderiyorum. Umuyorum ki saat yapmak isteyenlere bir fikir olur ve bu proojeyi birlikte tamamlarız.

Bu arada moderatör arkadaşlar şemayı nasıl upload edebilirim lütfen bana yardımcı olun.Teşekkürler.

Kaynak kodu:
****************************************************************
'*  Name    : Deneme.BAS                                      *
'*  Author  : <Ahmet OKUR>                                     *
'*  Notice  : Copyright (c) 2006 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 04.02.2006                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
dakika  VAR BYTE
saat    vAR BYTE
saniye  var   byte
i       var byte
j       var byte
ticks   var byte
guncelle    var byte

   saat = 0         'Zamanı 00:00:00'a ayarla   
   dakika = 0
   saniye = 0
   ticks = 0

   guncelle = 1      'Güncelleme aktif
                       'Tmr0'ı her 16.384 mS de bir kesme üretecek şekılde kur.
   OPTION_REG = $55   'PORTB çıkışları pull-up ve
                   'TMR0'ı kur.
   INTCON =$a0      

on interrupt goto tickint   
TRISB=%00000000
TRISA=1
PortA=%11111111


'Portb=%11110000

ana_dongu:

if portA.4=0 then dak_arttir
if portA.3=0 then dak_azalt

kontrol:   'LCD Güncellemesi zamanı geldi mi? Kontrol et
      
   If guncelle = 1 then
      'for j=1 to 20
      Portb=(16+(saat/10))
      pause 10
      Portb=(32+(saat//10))
      pause 10
      Portb=(64+(dakika/10))
      pause 10
      portb=(128+(dakika//10))
      pause 10
      'next J
      guncelle = 0         'Ekran güncellendi
       'goto kontrol
     Endif

   Goto ana_dongu   'Ana programla sonsuz döngü sağla    


dak_arttir: ' Dakika arttırma bölümü
   dakika = dakika + 1
   If dakika >= 60 Then
      dakika = 0
      saat   = saat + 1
      If saat >= 24 Then
         saat = 0
      Endif
   Endif
   Goto ark_sondur
'--------------------------------------------------------------------------------
dak_azalt:   'Dakika azaltma Bölümü
   dakika = dakika - 1
   If dakika >= 60 Then
      dakika = 59
      saat = saat -1
      If saat >= 24 Then
         saat = 23
      Endif
   Endif
   goto ark_sondur
'...............................................................................   
ark_sondur:   'Ark söndürme ve 250 ms gecikme bölümü
   For i=1 to 25
      Pause 10   ' Her defasında 10 ms bekle, böylece hiçbir kesme kaçırılmaz
   Next i

   guncelle = 1       'Ekran güncellemesi aktif
   GoTo kontrol
   Disable                ' Kesme alt programı süresince gelecek kesmeleri iptal et
   
tickint:            'Her TMR0 Kesmesinde işleyen alt program
   ticks = ticks + 1      'TMR0 Kesmelerini say
   If ticks < 61 Then tiexit    '61*16,384 ms = 1 sn dolmadıysa alt programdan çık
                          ' 1 sn geçti zamanı güncelle
      ticks = 0
      saniye = saniye + 1
      If saniye >= 60 Then
         saniye = 0
         dakika = dakika + 1
         If dakika >= 60 Then
            dakika = 0
            saat = saat + 1
               If saat >= 24 Then
                  saat = 0
               Endif
         Endif
      Endif
   guncelle = 1    ' LCD Güncellemesi aktif
   'goto kontrol
'-----------------------------------------------------------------------------------
tiexit:      'TIMER Kesme alt programından çıkış bölümü
   INTCON.2 = 0    'TIMER kesme bayrağını 0la
   'guncelle=1
   resume       'alt programından çık
   End

elektro_ery

istersen hemenpaylaş veya rapid de dene çünkü proje ye ihtiyacım var
[/URL]