pic basic pro üstatları

Başlatan logem2005, 05 Şubat 2006, 01:11:50

logem2005

pic basic pro ile real time clock entegresi olan ds1302 okuma ve lcd ekrana yazdırma işlerini hallettim fakat saat ve tarihi degistirmek istedigimde bilgisayardan basic kodlarını degistirip yeniden pic e yuklemem gerekiyor. amacım bu saat ve tarih degistirme işini bilgisayara gerek duymadan uzerinde lcd ve pic bulunan devreme ekleyecek oldugum bir 1 den 9 a kadar tusların bulundagu bir numarator yada 2 adet buton (biri mode tusu olucak once gun sonra ay sonra yıl a kayacak, diger tus ilede degisecek olan hanenin degeri artacak;  (cogumunuzn kolundaki dijital saatler ayarlanması gibi) kod konusunda bir kaç bisi yazdım ama duzgun bir sekilde çalisan sonuc alamadım, fikirlerinizi paylasırsanız sevinirim.


if PORTA.0 = 0 then goto degeraktar
goto loop

degeraktar:
   gosub degergir
   sayac = rtcdate
   gosub degergir
   sayac = rtcmonth
   gosub degergir
   sayac = rtcyear
   gosub degergir
   sayac = rtchr
   gosub degergir
   sayac = rtcmin
   gosub degergir
   sayac = rtcsec
   goto loop


degergir:
   sayac = 0
   Lcdout $fe, 1   ' Clear screen
   Lcdout $fe, 1, "m = ", HEX2 sayac
test:
    if porta.1 = 0 then goto arttir
    if porta.2 = 0 then return
    goto test
   
arttir:
sayac = sayac + $1
   

   Lcdout $fe, 1   ' Clear screen
   Lcdout $fe, 1, "sayac = ", HEX2 sayac
   goto test
   end

microcozmoz

Arkadaşım hoşgeldin....Bu linkin sana yardım edeceğini umuyorum...

https://www.picproje.org/index.php/topic,7635&highlight=ds1302
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

ete

Genel amaçlı bir saat ayar bölümü yadım. Gerek isis simulasyonu ve gerekse bas ve hex dosyaları aşağıdaki linkde dir.

http://rapidshare.de/files/12591171/SAAT_AYAR.rar.html

Aslında Rapidshare i sevmiyorum. Ama HemenPaylaş bakımda olduğundan dosya kabul etmedi bu nedenle Rapidshar'e yükledim.

Herkesin görmesi açısından programı burada da veriyorum.

herkese kolay gelsin
ETE

'****************************************************************
'*  Name    : SAAT_AYAR.BAS                                     *
'*  Author  : [E.T.E]                                           *
'*  Notice  : Copyright (c) 2006 Ete]                           *
'*          : All Rights Reserved                               *
'*  Date    : 05.02.2006                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628
@ DEVICE pic16F628, WDT_on
@ DEVICE pic16F628, PWRT_On
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, MCLR_Off
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
TRISA=%00000011
TRISB=0
CMCON=7

DEFINE LCD_DREG PORTB      'LCD data bacakları hangi porta bağlı? 
DEFINE LCD_DBIT 4          'LCD data bacakları hangi bitten başlıyor? 
DEFINE LCD_EREG PORTB      'LCD Enable Bacağı Hangi Porta bağlı? 
DEFINE LCD_EBIT 3          'LCD Enable Bacağı Hangi bite bağlı ? 
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2 
DEFINE LCD_RSREG PORTB     'LCD RS Bacağı Hangi Porta bağlı ? 
DEFINE LCD_RSBIT 1         'LCD RS bacağı Hangi Bite bağlı ? 
DEFINE LCD_BITS 4          'LCD 4 bit mi yoksa 8 bit olarak bağlı? 
DEFINE LCD_LINES 2         'LCD Kaç sıra yazabiliyor 

SN     var  byte
Y_SN   VAR  BYTE
DAK    var  byte
Y_DAK  VAR  BYTE
ESKIDAK VAR BYTE
SAAT   var  byte
Y_SAAT VAR  BYTE
GUN    VAR  BYTE
Y_GUN  VAR  BYTE
HGUN   VAR  BYTE  'HAFTANIN GÜNÜ
Y_HGUN var  byte
AY     var  byte
Y_AY   VAR  BYTE
YIL    var  BYTE
Y_YIL  VAR  BYTE
TAMYIL var  BYTE
ARA    VAR  BYTE
SURE   VAR  BYTE
SYMBOL MODE=PORTA.0
SYMBOL ARTIR=PORTA.1

LCDOUT $FE,$68,$0E,$11,$10,$10,$10,$15,$0E,$4   'Ç dataları Numarası 5
LCDOUT $FE,$70,$00,$0E,$10,$0E,$02,$1C,$0C,$00  'ş dataları NUMARASI 6 DİR
LCDOUT $FE,$78,$0,$0,$0C,$4,$4,$4,$e,$0         'ı dataları NUMARASI 7 DİR

LOW PORTB.2  'R/W BACAĞI LOW YAPILDI

LCDOUT $FE,1
PAUSE 300
TAMYIL=2000  'NORMALDE BU DEĞERLER DS 1302 DEN OKUNACAK
DAK=54
SAAT=8
GUN=5
AY=2
YIL=6
SURE=170


BASLA:
      GOSUB EKRAN
      IF MODE=0 THEN AYAR
      GOTO BASLA
      
      
AYAR:
       lcdout $FE,$0E 'ÇİZGİLİ KURSOR AÇILDI
'       GOSUB SAAT_OKU 'SAAT BİLGİLERİ OKUNDU
       Y_DAK=DAK
       Y_SAAT=SAAT
       Y_GUN =GUN
       Y_HGUN=HGUN
       Y_AY  =AY
       Y_YIL =YIL
       GOSUB EKRAN1
       GOSUB BASBAK
       
AYAR_SAAT:
          IF MODE=0 THEN AYAR_DAKA
          IF ARTIR=0 THEN
             Y_SAAT=Y_SAAT+1
             IF Y_SAAT=24 THEN Y_SAAT=0
          ENDIF
          GOSUB EKRAN1:LCDOUT $FE,$85
          PAUSE SURE
          GOTO AYAR_SAAT
          
AYAR_DAKA: 
           GOSUB BASBAK
AYAR_DAK:  
         IF MODE=0 THEN AYAR_GUNA
         IF ARTIR=0 THEN
             Y_DAK=Y_DAK+1
             IF Y_DAK=60 THEN Y_DAK=0
          ENDIF
          GOSUB EKRAN1:LCDOUT $FE,$88
          PAUSE SURE
          GOTO AYAR_DAK
                             
AYAR_GUNA:
           GOSUB BASBAK
AYAR_GUN:
         IF MODE=0 THEN AYAR_AYA
          IF ARTIR=0 THEN
             Y_GUN=Y_GUN+1
             IF Y_GUN=32 THEN Y_GUN=1
          ENDIF
          GOSUB EKRAN1:LCDOUT $FE,$C0
          PAUSE SURE
          GOTO AYAR_GUN
          
AYAR_AYA:
         GOSUB BASBAK         
AYAR_AY: 
         IF MODE=0 THEN AYAR_YILA
          IF ARTIR=0 THEN
             Y_AY=Y_AY+1
             IF Y_AY=13 THEN Y_AY=1
          ENDIF
          GOSUB EKRAN1:LCDOUT $FE,$C3
          PAUSE SURE
          GOTO AYAR_AY
          
AYAR_YILA:
           GOSUB BASBAK
AYAR_YIL:
          IF MODE=0 THEN AYAR_HGUNA
          IF ARTIR=0 THEN
             Y_YIL=Y_YIL+1
             IF Y_YIL=100 THEN Y_YIL=0
          ENDIF
          GOSUB EKRAN1:LCDOUT $FE,$C6
          PAUSE SURE
          GOTO AYAR_YIL

AYAR_HGUNA:
            GOSUB BASBAK
AYAR_HGUN:
          IF MODE=0 THEN KAYIT
          IF ARTIR=0 THEN
             Y_HGUN=Y_HGUN+1
             IF Y_HGUN=7 THEN Y_HGUN=0
          ENDIF
          GOSUB EKRAN1:LCDOUT $FE,$C9
          PAUSE SURE
          GOTO AYAR_HGUN 

BASBAK:
       WHILE MODE=0
       WEND
       RETURN          
          
KAYIT:
          DAK=Y_DAK
          SAAT=Y_SAAT
          GUN=Y_GUN
          AY=Y_AY
          YIL=Y_YIL
          HGUN=Y_HGUN
'          GOSUB KAYIT_SAAT 'BURADA YENİ SAAT BİLGİLERİ ds1302 YE KAYIT EDİLECEKTIR
           LCDOUT $FE,$0C
           GOSUB BASBAK
          GOTO BASLA 
           
EKRAN: LCDOUT $FE,2,"     "
       LCDOUT DEC2(SAAT),":",DEC2(DAK),":", dec2(SN)
'       LCDOUT DEC2 (SAAT),":",DEC2 (DAK)," S=",DEC2 SIMDI,"Z=",DEC2 ZAMAN
       LCDOUT $FE,192,dec2(GUN),"-",dec2(AY),"-",dec2(YIL+TAMYIL) 
       ARA=HGUN 
DORT: select case ARA
        case 0
         lcdout $fe,$c9,"Pazar  "
       case 1
         lcdout $fe,$c9,"Pazrtsi"
       case 2
         lcdout $fe,$c9,"Sal",7,"   "
       case 3
         lcdout $fe,$c9,5,"ar",6,"amb"
       case 4
         lcdout $fe,$c9,"Per",6,"emb"
       case 5
         lcdout $fe,$c9,"Cuma   "
       case 6
         lcdout $fe,$c9,"Cumarts"
        end select      
       RETURN        
 
EKRAN1: 'BU EKRAN SAAT AYARINDA KULLANILAN İLK EKRAN
       LCDOUT $FE,$0C,$FE,2,"     "
       LCDOUT DEC2(Y_SAAT),":",DEC2(Y_DAK),":", DEC2(SN)
       LCDOUT $FE,192,dec2(Y_GUN),"-",dec2(Y_AY),"-",dec2(Y_YIL+TAMYIL) ,$FE,$0E
        ARA=Y_HGUN
        GOTO DORT  
        
SAAT_OKU: 'BURDA ds1302 SAAT BİLGİLERİNİ OKUMA BÖLÜMÜ OLACAK
          DAK=15
          SAAT=8
          GUN=5  'AYIN GUNU
          HGUN=1 'HAFTANIN GÜNÜ
          AY=2
          YIL=6
          RETURN
          
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com