18f452 INTERRUPT kullanarak saat (yardım)

Başlatan recebcolak, 21 Ağustos 2008, 00:35:48

recebcolak

s.a.
asagıdaki kodu  18f452 ye uyarladıgımda ınterrubt ayarları nasıl olması lazım yardım edermisiniz.
device 16f628
PORTA=0:portb=0
TRISB=%00000000   'PortB tamamı çıkış yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı.

declare LCD_DREG PORTB 'LCD data bacaklari hangi porta bagli? portb 
declare LCD_DBIT PORTB.4 'LCD data bacaklari hangi bitten basliyor? portb.4 den itibaren 
DECLARE LCD_ENPIN PORTB.3 'LCD "E" pin portb nin hangi bitine baglidir. 
DECLARE LCD_RSPIN PORTB.1 'LCD "RS" pin portb nin hangi bitine baglidir. 
declare LCD_BITS 4 'LCD 4 bit olarak bağlı 

'-------------------------------------------------------------------------
ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10000101   	 'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000  		 'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
CMCON=7    			'16F628 de komparatör pinleri iptal hepsi giriş çıkış
'----------------------------------------------------------------------------
dim SAYAC   as   BYTE
dim SN      as   BYTE
dim DAK     as   BYTE
dim SAAT    as   BYTE
dim GUN     as   BYTE
'-----------------------------------------------------------------------------
CLEAR  'tüm değişkenler sıfırlandı
delayms 200


'-----------------------------------------------------------------------------
BASLA:
print at 1,5, DEC2 SAAT,":",DEC2 DAK,":",DEC2 SN
   print at 2,5, "ismail usta"
GOTO BASLA
    
DISABLE
KESME:
      SAYAC=SAYAC+1  	    'kesme sayacı  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
      IF SAYAC=61 then  	    '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
         SAYAC=0       	    'sayaç sıfırlanıyor
         SN=SN+1       	    'saniye değeri bir artırılıyor
            IF SN=60 THEN  	   'saniye 60 olmuş ise 1 dakika süre geçti o halde
               SN=0        	   ' saniye sıfırlanıyor
               DAK=DAK+1   	   ' dakika değeri bir artırılıyor
                  IF DAK=60 THEN   'dakika 60 olmuş ise 1 saat süre geçti
                     DAK=0         	   ' dakika sıfırlanıyor
                     SAAT=SAAT+1   ' saat değeri bir artırılıyor
                        IF SAAT=24 THEN  'saat 24 olmuş ise 1 gün geçti
                           SAAT=0        'saat sıfırlanıyor
                           GUN=GUN+1     'gün değeri bir artırılıyor
                              IF GUN=365 THEN GUN=0  'gün 365 olmuş ise
                        ENDIF                    'gün sıfırlanıyor 1 yıl geçti
                  ENDIF 
            ENDIF
         ENDIF
         INTCON.2=0        'TMR0 Kesme bayrağı sıfırlanıyor
         RESUME
         ENABLE
         
END
ben herkesi sevdim bilmiyorum sevildimmi?

gokhangokcen

recebcolak kardeşim benim bildigim kadariyla;

device 18f452

xtal = .....    kristalin kaç mhz ise fakat bu ayarlar 4mhz ye göre

TRISB=%00000000   'PortB tamamı çıkış yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı.
TRISC=%00000000
TRISD=%00000000
TRISE=%000
PORTA=0:portb=0 :portc=0 :portd=0 porte=0




ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10000101       'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000        'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0

cmcon=7 yerine  adcon1=7


geri kalan şeylerde ayni kardeşim bi dene bakalim olmucak olursa yazarsin tekrar
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

recebcolak

S.A.
kardeş öncelikle teşekkürler söylediklerini harfiyen yaptım

bu iki kod hata veriyor.
;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OPTION_REG=%10000101 'Pull up dirençleri İPTAL- Bölme oranı 1/64.
TMR0=0
;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

device 16f877 yapınca çalışıyor 18f452 yapınca hata veriyor.
ben herkesi sevdim bilmiyorum sevildimmi?

hiashua

Ben basic bilmiyorum ama kullandğın derleyici 18f452 i tanımıyor olsa gerek...
/*  Merak ilmin hocasıdır.  */

recebcolak

kullandıgım derleyici (proton & proteus setup) sonsivri sitesinden indirmistim pıcprojedede link verilmisti.
ben herkesi sevdim bilmiyorum sevildimmi?

recebcolak

http://rapidshare.com/files/146646269/DSCLOCK.rar.html

arkadaşlar bu işin içinden nasıl çıkaçagım ds1302 ekledim ve bir program yazmaya çalıştım ekranda saat tarih bilgisi var ama INTERRUPT hatalı galiba yukardaki linkke ekledim ilgilenen olursa çok sevinirim teşekkürler.
ben herkesi sevdim bilmiyorum sevildimmi?

mierdogan


ete

18F452 de Option register yoktur. Oradan ayarlayacağınız TMR0 bölme oranını T0CON registerinden ayarlamanız gerekir.
Option_REG=.... satırını silin yerine
T0CON=%11000101 satırını ilave edin.

Bu Pic de TMR0 sayacı 8 veya 16 bit olabiliyor. Siz 8 bit kullanacaksınız. O halde  TMR0=0 satırınıda silin yerine TMR0L=0 yazın.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

oooben

gene kurtardın bizi teşekkür etmeden geçemedim saygılarımla