Satır Taramalı Kayan Yazı

Başlatan meyer, 18 Aralık 2011, 15:01:38

meyer

#60
  İyi günler arkadaşlar,
-Programa 1-2 ilave daha yapmaya çalıştım.İlavelerin çalışma şekli;
ISIS'te virtual terminal'den girdiğimiz 12 karakter harfi matrix display'e basıyoruz önce..Yazmak istediğimiz yazı tamam değilse eğer; mod tuşuna basarak ekranı sıfırlıyoruz ve  sonra tekrardan 12 karakter yazımızı yazıyoruz.Yazımız tamam ise kaydet butonuna basarak yazıları eeprom'a kaydediyoruz.Daha sonra da yazdığımız 12 karakter yazımız önce sola sonra da sağa,aşağı ve yukarı doğru hareket etmeye başlıyor.Yazımızdan sonra da saat,sıcaklık,tarih ve gün bilgisini ekrana sırayla basıyoruz.
-Eeprom'a kayıt yapılırken kırmızı led,okuma yapılırken de yeşil led yanmaktadır.
-Kaydettiğimiz yazımızı değiştirmek için mod tuşuna basmamız yeterli olacaktır.
-Programın şu an ki haliyle tek sorunu başlangıçta I=(-8) diye belirtmiş olmamdır.Bu sorunuda en kısa sürede çözmeye çalışacağım.
-Programın .pbp kodunu,.hex kodunu ve isis şemasını da ekte yolluyorum arkadaşlar..


'****************************************************************
'*  Name    : MATRIX_PANO_SAAT_ISI_TARIH_GUN_KAYAN_YAZI.BAS     *
'*  Author  : [HAKAN_ÖZKAN]                                     *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 03.01.2012                                        *
'*  Version : 3.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
DEFINE I2C_SLOW 1
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
'********************************************************
INTCON2.7=0   ' PORTB Pull-up Enable bit
INTCON.7 =1   ' GIE : Global Interrupt Enable
INTCON.6 =1   ' PEIE: Peripheral Interrupt Enable
PIE1.5   =1   ' RCIE: USART Receive Interrupt Enable
ADCON0   =0
ADCON1   =7
'****************************************************************
On Interrupt GoTo KESME
'****************************************************************
DEFINE HSERIAL_BAUD  2400
DEFINE HSERIAL_RCSTA %10010000
DEFINE HSERIAL_TXSTA %00100000
DEFINE HSERIAL_CLEAR = On
'****************************************************************
TRISB=0 : TRISD=0  : TRISC=%10110111  : TRISE=0 : TRISA=0
PORTB=0 : PORTD=0  : PORTC=0          : PORTE=0 : PORTA=0
'74HC595*********************************************************
Symbol CLK1     =PORTB.0
Symbol DTA1     =PORTB.1
Symbol STROBE1  =PORTB.2
'DS18B20*********************************************************
SYMBOL COMM_PIN =PORTC.3
'DS1302**********************************************************
symbol  RTC_RST =PORTB.5         'RTC nin bağlandığı portlar
symbol  RTC_SCLK=PORTB.6
symbol  RTC_DTA =PORTB.7
'24C256**********************************************************
SCL      VAR     PORTB.3        ' Clock pin 
SDA      VAR     PORTB.4        ' Data pin                 
'24C256_DEGISKENLERI*********************************************
adress   VAR     WORD    :adress=0      ' Adres
B1       VAR     BYTE                   ' Data1
B2       VAR     Byte                   ' Data2
'****************************************************************
NEGAT_ISI CON 1                  ' Negatif_Cold = 1
'****************************************************************
TUS         VAR BYTE
T           VAR Byte
HAM         VAR WORD
ISI         var WORD
rtcsec      VAR BYTE
rtcmin      VAR BYTE
rtchour     VAR BYTE
rtcyear     VAR BYTE
rtcmonth    VAR BYTE
rtcday      VAR BYTE
rtcdate     VAR BYTE
TEMP        VAR BYTE
VERI        VAR BYTE
SAYI        VAR BYTE 
SIGN        VAR BYTE
FLOAT       var BYTE
mem         var byte
BIRLER      VAR BYTE
ONLAR       VAR BYTE
SIGN_BITI VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'****************************************************************
SUTUN     var Byte[96]    ' 1497 adet byte tipinde değişken tanımlanabilir.
YEDEK     VAR BYTE[96]
RAKAM     VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var BYTE
'''''''''''''''''''
yazi_reg  var byte
yeri      var byte
z         var byte
y         var byte 
A         VAR BYTE 
B         VAR BYTE
C         VAR BYTE 
D         VAR BYTE
E         var byte
bilgi     var byte
K         VAR BIT
u         var bit
'****************************************************************
gosub SENSORYAZ
GOSUB SENSOROKU
Low RTC_RST              ' RTC yi resetle
Low RTC_SCLK
'****************************************************************
clear
pause 250
I=-8
'****************************************************************
HSEROUT ["KLAYVEDEN GiRiLEN HARFLERiN MATRiX DiSPLAYDE GOSTERiLMESi",13,10]
HSEROUT ["*********************************************************",13,10]
'****************************************************************
BASLA:
    IF PORTC.5=1 THEN ADRESS=0 : GOSUB KAYDET : GOTO BASLA1
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
IF A>0 OR A<13  THEN GOSUB KONTROL2
GOTO BASLA
'****************************************************************
BASLA1:   
ADRESS=0
GOSUB OKU
GOTO AA
''''''''''''''''''''
EE:
    IF PORTC.0=1 THEN GOTO BASLA
FOR I=0 TO 95
    SUTUN[I]=YEDEK[I]
NEXT
''''''''''''''''''''   
AA:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
M=M+1
IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF M<96 THEN GOSUB sola_kay : GOTO AA
        IF M=96 THEN GOTO EE
    IF M>96  AND M<192 THEN GOSUB saga_kay  : GOTO AA
        IF M=192 THEN GOTO EE
    IF M>192 AND M<200 THEN GOSUB asagi_kay : goto aa
        if M=200 then goto EE
    if M>200 and M<208 then gosub yukari_kay: GOTO aa
        if M=208 then M=0
GOSUB TEMIZLE
GOTO SAAT_GOSTER
'****************************************************************
TEMIZLE:
FOR I=0 TO 95
SUTUN[I]=$FF
NEXT
GOSUB GOSTER
RETURN
'****************************************************************
KONTROL2:
IF K=1 THEN RETURN
gosub YERAL1
    for Z=0 TO 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI   
            I=I+1
        yeri=yeri+1
    NEXT   
IF A=12 THEN a=0 : GOSUB GOSTER2 
K=K+1
RETURN
'****************************************************************
GOSTER2:
FOR I=0 TO 95
    YEDEK[I]=SUTUN[I]
NEXT
''''
FOR Z=0 TO 49
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
  NEXT
RETURN
'****************************************************************
KAYDET: 
HIGH PORTE.0     
FOR I=0 TO 95
    adress=adress+1                                      ' B1 Seri EEPROM datası
    I2CWrite SDA,SCL,$A0,adress,[SUTUN[I]]               ' Her adrese datayı yaz
'    LCDOut $fe,$80,"BILGI YAZILIYOR.."                   'Göster
'    lcdout $fe,$C0,"Adres:",#adress,"Data:",#SUTUN[I]    'Göster
    PAUSE 10
NEXT
M=0
LOW PORTE.0
return
''''''''''''''''''''''''
OKU:
HIGH PORTE.1
FOR I=0 TO 95
    ADRESS=ADRESS+1
    I2CRead SDA,SCL,$A0,adress,[SUTUN[I]]                'Her adresteki datayı oku B2 ye aktar
'    LCDOut $fe,$90,"BILGI OKUNUYOR.."                    'Göster
'    LCDOut $fe,$c0,"Adres:",#adress,"Data:",#SUTUN[I]    'Göster
    PAUSE 10
NEXT
LOW PORTE.1
RETURN
'****************************************************************
sola_kay:
For I=0 To 94
    sutun[i]= sutun[i+1]
   If i=95 Then sutun[95]=sutun[0]
Next i
pauseus 10000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
saga_kay:
For I=94 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[95]
Next i
pauseus 10000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
asagi_kay:
for I=0 to 95
   ARA=SUTUN[I]
   z=ARA.7
FOR X=7 to 1 STEP -1
   ARA.0[x]=ARA.0[X-1]
NEXT
   ara.0=Z
   sutun[I]=ARA
next
pauseus 3500
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
yukari_kay:
FOR I=0 to 95
   ARA=SUTUN[I]
   z=ARA.0
FOR X=0 to 6
   ARA.0[X]=ARA.0[X+1]
NEXT
   ARA.7=Z
   SUTUN[I]=ARA
NEXT
pauseus 5000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
GECIKME:
FOR VERI=0 TO 1200
PAUSEUS 1000
NEXT
RETURN
'****************************************************************
GECIKME1:
FOR VERI=0 TO 300
PAUSEUS 1000
NEXT
RETURN
'****************************************************************   
kontrol:
if rtchour=24  then rtchour=0    : rtcdate=rtcdate+1 : rtcday=rtcday+1
if rtcmin=60   then rtcmin=0
  if rtchour=255 then rtchour=23 : rtcdate=rtcdate-1 : rtcday=rtcday-1
if rtcmin=255  then rtcmin=59
gosub zaman_yaz
gosub gecikme
gosub zaman_oku
return
'****************************************************************
SAAT_GOSTER1:
gosub temizle
'''''''''''''''''''''
bb:
FOR W=0 TO 5
GOSUB ZAMAN_OKU
'''''''''''''''''''''
if portc.0=1         then u=u+1             :gosub kontrol 
if u=0 and portc.1=1 then rtchour=rtchour+1 :gosub kontrol   
if u=0 and portc.2=1 then rtchour=rtchour-1 :gosub kontrol
if u=1 and portc.1=1 then rtcmin=rtcmin+1   :gosub kontrol
if u=1 and portc.2=1 then rtcmin=rtcmin-1   :gosub kontrol
'''''''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
NEXT W
    IF PORTC.4=1 THEN gosub gecikme :GOSUB TEMIZLE :m=0: GOTO EE
goto bb
'****************************************************************
SAAT_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=115 THEN C=0:gosub cc:GOTO ISI_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto SAAT_GOSTER
'********************************************************
ISI_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub SENSOROKU
C=C+1
    iF C=100 THEN C=0: gosub cc :GOTO TARIH_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for Z=0 to 23
            GOSUB DATA_AL
        SUTUN[I]=VERI       
        SUTUN[I+64]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=223
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="C"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto ISI_GOSTER
'****************************************************************
TARIH_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOTO GUN_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcDATE dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcdate dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto TARIH_GOSTER
'****************************************************************
GUN_GOSTER: 
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
c=c+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOTO ee
GOSUB ZAMAN_OKU
gosub dd
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
GOTO GUN_GOSTER
'****************************************************************
cc:
E=E+1
If E<80                  Then gosub saga_kay    : GOTO goster1 
If E>80    and E<160     Then gosub sola_kay    : GOTO goster1
If E>160   and E<169     Then gosub asagi_kay   : GOTO goster1
if E>169   and E<178     then gosub yukari_kay  : GOTO goster1 
If E>178   then E=0
return
'****************************************************************
GOSTER1:
gosub zaman_oku
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
goto cc
'****************************************************************
GOSTER:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
RETURN
'****************************************************************
dd:
yazi_reg=0 : i=0
For W=0 To 11
    gosub yazi1 : yazi_reg=yazi_reg+1
        gosub YERAL1
    for z=0 to 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI
                I=I+1
            yeri=yeri+1
        next
    next
     gosub goster
return
'****************************************************************
yazi1:
if rtcday=1 then LookUp yazi_reg,["   PAZAR    "],bilgi
if rtcday=2 then LookUp yazi_reg,[" PAZARTESi  "],bilgi
if rtcday=3 then LookUp yazi_reg,["    SALI    "],bilgi
if rtcday=4 then LookUp yazi_reg,["  CARSAMBA  "],bilgi
if rtcday=5 then LookUp yazi_reg,["  PERSEMBE  "],bilgi
if rtcday=6 then LookUp yazi_reg,["    CUMA    "],bilgi
if rtcday=7 then LookUp yazi_reg,[" CUMARTESi  "],bilgi
Return
'****************************************************************     
YERAL:
select case temp
    case 0   : yeri=0   : return
    case 1   : yeri=8   : return
    case 2   : yeri=16  : return
    case 3   : yeri=24  : return
    case 4   : yeri=32  : return
    case 5   : yeri=40  : return
    case 6   : yeri=48  : return
    case 7   : yeri=56  : return
    case 8   : yeri=64  : return
    case 9   : yeri=72  : return
    case 223 : yeri=80  : return
    case "C" : yeri=88  : return
    case ":" : yeri=96  : return
    case "/" : yeri=104 : return
    case " " : yeri=112 : return
end select
return
'****************************************************************
data_al:
    lookup yeri,[$FF,$C1,$80,$A6,$B2,$80,$C1,$FF,_     '0
                 $FF,$BF,$BD,$80,$80,$BF,$BF,$FF,_     '1
                 $FF,$9D,$8C,$A6,$B2,$98,$9D,$FF,_     '2
                 $FF,$DD,$9C,$B6,$B6,$80,$C9,$FF,_     '3
                 $FF,$E7,$E3,$E9,$80,$80,$E7,$FF,_     '4
                 $FF,$D8,$98,$BA,$BA,$82,$C6,$FF,_     '5
                 $FF,$C3,$81,$B4,$B6,$86,$CF,$FF,_     '6
                 $FF,$FC,$FC,$8E,$86,$F0,$F8,$FF,_     '7
                 $FF,$C9,$80,$B6,$B6,$80,$C9,$FF,_     '8
                 $FF,$F9,$B0,$B6,$96,$C0,$E1,$FF,_     '9
                 $FF,$FF,$F9,$F0,$F6,$F0,$F9,$FF,_     'Derece
                 $FF,$C1,$80,$BE,$BE,$BE,$DD,$FF,_     'C
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ':
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
YERAL1:
select case bilgi
    case "A" : yeri=0   : return
    case "B" : yeri=8   : return
    case "C" : yeri=16  : return
    case "D" : yeri=24  : return
    case "E" : yeri=32  : return
    case "F" : yeri=40  : return
    case "G" : yeri=48  : return
    case "H" : yeri=56  : return
    case "I" : yeri=64  : return
    case "i" : yeri=72  : return
    case "J" : yeri=80  : return
    case "K" : yeri=88  : return
    case "L" : yeri=96  : return
    case "M" : yeri=104 : return
    case "N" : yeri=112 : return
    case "O" : yeri=120 : return
    case "P" : yeri=128 : return
    case "R" : yeri=136 : return
    case "S" : yeri=144 : return
    case "T" : yeri=152 : return
    case "U" : yeri=160 : return
    case "V" : yeri=168 : return
    case "Y" : yeri=176 : return
    case "Z" : yeri=184 : return
    CASE "." : YERI=192 : RETURN
    case "W" : yeri=200 : return
    case "Q" : yeri=208 : return
    case "/" : yeri=216 : return 
    case ":" : yeri=224 : return
    case "-" : yeri=232 : return 
    case " " : yeri=240 : return     
end select
return
'****************************************************************
data_al1:
    LookUp yeri,[$FF,$81,$F6,$F6,$F6,$F6,$81,$FF,_     ;  A
                 $FF,$80,$B6,$B6,$B6,$B6,$C9,$FF,_     ;  B
                 $FF,$C1,$BE,$BE,$BE,$BE,$DD,$FF,_     ;  C
                 $FF,$80,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  D
                 $FF,$80,$B6,$B6,$B6,$B6,$BE,$FF,_     ;  E
                 $FF,$80,$F6,$F6,$F6,$F6,$FE,$FF,_     ;  F
                 $FF,$80,$BE,$B6,$B6,$B6,$86,$FF,_     ;  G
                 $FF,$80,$F7,$F7,$F7,$F7,$80,$FF,_     ;  H
                 $FF,$BE,$BE,$80,$80,$BE,$BE,$FF,_     ;  I
                 $FF,$BF,$BB,$82,$82,$BB,$BF,$FF,_     ;  i
                 $FF,$CE,$BE,$80,$80,$FE,$FF,$FF,_     ;  J
                 $FF,$80,$F7,$EB,$DD,$BE,$FF,$FF,_     ;  K
                 $FF,$80,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                 $FF,$80,$FB,$F7,$F7,$FB,$80,$FF,_     ;  M
                 $FF,$80,$FB,$F7,$EF,$DF,$80,$FF,_     ;  N
                 $FF,$C1,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  O
                 $FF,$80,$F6,$F6,$F6,$F6,$F9,$FF,_     ;  P
                 $FF,$80,$F6,$E6,$D6,$B6,$B9,$FF,_     ;  R
                 $FF,$D9,$B6,$B6,$B6,$B6,$CD,$FF,_     ;  S
                 $FF,$FE,$FE,$80,$80,$FE,$FE,$FF,_     ;  T
                 $FF,$C0,$BF,$BF,$BF,$BF,$C0,$FF,_     ;  U
                 $FF,$E0,$DF,$BF,$BF,$DF,$E0,$FF,_     ;  V
                 $FF,$FC,$FB,$87,$87,$FB,$FC,$FF,_     ;  Y                     
                 $FF,$9E,$AE,$B6,$BA,$BC,$BE,$FF,_     ;  Z
                 $FF,$FF,$FF,$9F,$9F,$FF,$FF,$FF,_     ;  .
                 $FF,$80,$DF,$EF,$EF,$DF,$80,$FF,_     ;  W
                 $FF,$C1,$BE,$BE,$AE,$9E,$81,$FF,_     ;  Q
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     ;  /
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ;  :
                 $FF,$E7,$E7,$E7,$E7,$E7,$E7,$FF,_     ;  _
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
'***Sensör_Oku***************************************************
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
'           OWIN    Comm_Pin, 4, [TEMP]    ' Busy değerini oku
'           IF      TEMP = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'****************************************************************           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
'****************************************************************             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       ham=($ffff-ham)+1
    endif
    ISI = Ham*10/16
GEC:
    FLOAT = (ISI //10)
    ISI=ISI/10
    RETURN                     
'****************************************************************
'****************************************************************
'***********Zaman Oku***********
ZAMAN_OKU:
         High RTC_RST
         SHiftOut RTC_DTA, RTC_SCLK, 0, [$BF]
         SHiftIn RTC_DTA, RTC_SCLK, 1, [rtcsec, rtcmin, rtchour,rtcdate , rtcmonth,rtcday,rtcyear, MEM]
         Low RTC_RST
         MEM=rtcsec  : GoSub CEVIR:rtcsec=SAYI 
         MEM=rtcmin  : GoSub CEVIR:rtcmin=SAYI
         MEM=rtchour : GoSub CEVIR:rtchour=SAYI
         MEM=rtcdate : GoSub CEVIR:rtcdate=SAYI
         MEM=rtcmonth: GoSub CEVIR:rtcmonth=SAYI
         MEM=rtcyear : GoSub CEVIR:rtcyear=SAYI
         MEM=rtcday  : GoSub CEVIR: rtcday=SAYI       
         Return
'***********Zaman Yaz***********
ZAMAN_YAZ:
    MEM=rtcsec   : GoSub TERSCEVIR :rtcsec=SAYI
    MEM=rtcmin   : GoSub TERSCEVIR :rtcmin=SAYI
    MEM=rtchour  : GoSub TERSCEVIR :rtchour=SAYI
    MEM=rtcdate  : GoSub TERSCEVIR :rtcdate=SAYI
    MEM=rtcmonth : GoSub TERSCEVIR :rtcmonth=SAYI
    MEM=rtcyear  : GoSub TERSCEVIR :rtcyear=SAYI
    MEM=rtcday   : GoSub TERSCEVIR :rtcday=SAYI
       
    High  RTC_RST
    SHiftOut RTC_DTA, RTC_SCLK, 0, [$8E, 0]
    Low RTC_RST:pause 1
    High RTC_RST         
    SHiftOut  RTC_DTA, RTC_SCLK, 0, [$BE, rtcsec, rtcmin, rtchour,rtcdate , rtcmonth, rtcday, rtcyear, 0]  'YAZ
    Low RTC_RST
    pause 10
Return
'***********Çevir***********               
CEVIR:
    ONLAR=MEM & %01110000
    ONLAR=ONLAR>>4
    BIRLER=MEM & %00001111
    SAYI=ONLAR*10+BIRLER
RETURN 
'***********Ters Çevir***********
TERSCEVIR:               
    ONLAR=MEM DIG 1
    ONLAR=ONLAR<<4
    BIRLER=MEM DIG 0
    SAYI=ONLAR+BIRLER
RETURN
'****************************************************************
Disable
KESME:
A=A+1 : K=0
If PIR1.5 = 1 Then
    bilgi= RCREG   
        HSEROUT [BILGI,10]
    EndIf
   PIR1.5=0       ' RCIF : USART Receive Interrupt Flag bit 
  Resume
ENABLE
Return   
'****************************************************************
end





ete

Meyer,

Bu program Virtual terminale yazı mı yollamakta yoksa Virtual Terminalden gelen yazı karekterlerini Alıp depolamaktamıdır?

Bu ikincisi programa daha yakışıyor öyle değilmi. Ama programda hep HSEROUT yani yollama komutunu kullanmışsın. Hiç HSERIN komutu görmedim?

Eproma bilgi yazarken yazma gecikmesi olarak en azından 10 ms lik bir gecikme koyulması gerekir.
Ancak Epromdan okuma işlemi bir gecikmeye bağlı değildir. Bu nedenle okumanın hızla yapılabilmesi için Pause 10 komutunu oradan kaldrsan daha uygun olacak.

Programı çok fazla incelemedim. Birinci soruyu yanıtladıktan sonra inceleyeceğim.

Ete

meyer

#62
 İyi günler Hocam,
-Programda virtual terminal'e girdiğimiz karakterleri aynı zamanda virtula terminale geri göndererek terminal ekranında görünmesini sağlıyoruz,girdiğimiz 12 karakter harfimiz de doğru ise kaydet butonuna basarak kaydediyoruz.Yanlış girmişsek eğer mod tuşuna basarak ekranı sıfırlıyoruz.
-Haklısınız hocam 2.yaptığımız şekil programa daha çok yakışıyor.
-Programda hiç Hserin kullanmadım hocam.Nedeni de Kesme alt rutininde PIR1 registerinin 5.biti usart'dan bilgi aldığı anda içeriği 1 oluyor.Bende bu register'in içeriğini bir değişkene aktarıp,registerin içeriğini sıfırladıktan sonra kesme alt rutininden geri dönüyorum ta ki yeni bir kesme oluşana kadar...Bunun yerine alttaki gibi yapsakta sonuç değişmez tabi..

Disable
KESME:
A=A+1 : K=0
Hserin [bilgi] 
        HSEROUT [BILGI,10]
Resume
ENABLE
Return

-Eepromdaki okuma işlemindeki gecikmeyi de kaldırdım hocam..

Disable
KESME:
A=A+1 : K=0
If PIR1.5 = 1 Then
    bilgi= RCREG   
        HSEROUT [BILGI,10]
    EndIf
   PIR1.5=0       ' RCIF : USART Receive Interrupt Flag bit 
  Resume
ENABLE
Return 

ete

Programı simulsyona göre yazma. Gerçek hayatta çalışacak şekline göre yaz.
Burada temel amaç Seri porttan gelen bir yazı dizisini programın alıp epromuna kayıt etmesidir.
Şayet USART kesmesi oluştuğunda RCREG registeri içindeki bilgiyi kullanarak bu işi yapabiliyorsan sorun yok.
Ama düşünsene, işin içinde yanlış bilgi var , parazit var, başka karışan sinyaller var. Bunları göz önüne alarak normal kurallar çerçevesinde bir USART dan alma rutini yazarsan daha gerçerli olur sanıyorum. Yinede sen bilirsin. Fazlada müdahale etmek istemiyorum. Bazen ufkunu açıyorum ama bazende kapamış olmak istemem.

Ete

meyer

#64
 Haklısınız hocam parazit olayını hiç düşünmemiştim..Programı aşağıdaki hali ile değiştirdim..


Disable
KESME:
A=A+1 : K=0
HSERIN [WAIT("H"),BILGI]   
HSEROUT [BILGI,10]
Resume
ENABLE
Return

meyer

 Kesme alt rutinini düzelttim hocam.Yazı yazmaya başlamadan önce "SIFRE" yazısını giriyoruz ve daha sonra 12 karakter yazımızı girip kayıt ediyoruz ya da tekrardan yazımızı giriyoruz..

Disable
KESME:
A=A+1 : K=0
IF A=1 THEN
    HSERIN [WAIT("SIFRE"),BILGI] 
ELSE
    HSERIN [BILGI]
ENDIF
HSEROUT [BILGI,10]
Resume
ENABLE
Return   

meyer

#66
 İyi günler arkadaşlar,
-Daha öncede programın başında belirttiğim  I=(-8) hatalı satırını sonunda düzeltebildim.

-Bundan sonra da programın satır sayısını arttırmaya çalışacağım..Bu şekliyle de yapabilirsek eğer matrix panomuza resim,vs.. gibi özellikler ekleyebileceğiz...


'****************************************************************
'*  Name    : MATRIX_PANO_SAAT_ISI_TARIH_GUN_KAYAN_YAZI.BAS     *
'*  Author  : [HAKAN_ÖZKAN]                                     *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 03.01.2012                                        *
'*  Version : 3.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
DEFINE I2C_SLOW 1
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
'********************************************************
INTCON2.7=0   ' PORTB Pull-up Enable bit
INTCON.7 =1   ' GIE : Global Interrupt Enable
INTCON.6 =1   ' PEIE: Peripheral Interrupt Enable
PIE1.5   =1   ' RCIE: USART Receive Interrupt Enable
ADCON0   =0
ADCON1   =7
'****************************************************************
On Interrupt GoTo KESME
'****************************************************************
DEFINE HSERIAL_BAUD  2400
DEFINE HSERIAL_RCSTA %10010000
DEFINE HSERIAL_TXSTA %00100000
DEFINE HSERIAL_CLEAR = On
'****************************************************************
TRISA=255 : TRISB=0 : TRISD=0 : TRISE=0  : TRISC=%10110111   
PORTA=0   : PORTB=0 : PORTD=0 : PORTE=0  : PORTC=0           
'74HC595*********************************************************
Symbol CLK1     =PORTB.0
Symbol DTA1     =PORTB.1
Symbol STROBE1  =PORTB.2
'DS18B20*********************************************************
SYMBOL COMM_PIN =PORTC.3
'DS1302**********************************************************
symbol  RTC_RST =PORTB.5         'RTC nin bağlandığı portlar
symbol  RTC_SCLK=PORTB.6
symbol  RTC_DTA =PORTB.7
'24C256**********************************************************
SCL      VAR     PORTB.3        ' Clock pin 
SDA      VAR     PORTB.4        ' Data pin                 
'24C256_DEGISKENLERI*********************************************
adress   VAR     WORD    :adress=0      ' Adres
B1       VAR     BYTE                   ' Data1
B2       VAR     Byte                   ' Data2
'****************************************************************
NEGAT_ISI CON 1                  ' Negatif_Cold = 1
'****************************************************************
TUS         VAR BYTE
T           VAR Byte
HAM         VAR WORD
ISI         var WORD
rtcsec      VAR BYTE
rtcmin      VAR BYTE
rtchour     VAR BYTE
rtcyear     VAR BYTE
rtcmonth    VAR BYTE
rtcday      VAR BYTE
rtcdate     VAR BYTE
TEMP        VAR BYTE
VERI        VAR BYTE
SAYI        VAR BYTE 
SIGN        VAR BYTE
FLOAT       var BYTE
mem         var byte
BIRLER      VAR BYTE
ONLAR       VAR BYTE
SIGN_BITI VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'****************************************************************
SUTUN     var Byte[96]    ' 1497 adet byte tipinde değişken tanımlanabilir.
YEDEK     VAR BYTE[96]
RAKAM     VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var BYTE
'''''''''''''''''''
yazi_reg  var byte
yeri      var byte
z         var byte
y         var byte 
A         VAR BYTE 
B         VAR BYTE
C         VAR BYTE 
D         VAR BYTE
E         var byte
bilgi     var byte
K         VAR BIT
u         var bit
'****************************************************************
gosub SENSORYAZ
GOSUB SENSOROKU
Low RTC_RST              ' RTC yi resetle
Low RTC_SCLK
'****************************************************************
clear
pause 250
'****************************************************************
HSEROUT ["KLAYVEDEN GiRiLEN HARFLERiN MATRiX DiSPLAYDE GOSTERiLMESi",13,10]
HSEROUT ["*********************************************************",13,10]
'****************************************************************
BASLA:
    IF PORTC.5=1 THEN ADRESS=0 : GOSUB KAYDET : GOTO BASLA1
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF A=0 THEN GOTO BASLA
    IF A>0 OR A<13 THEN GOSUB KONTROL2
GOTO BASLA
'****************************************************************
BASLA1:   
ADRESS=0
GOSUB OKU
GOTO AA
''''''''''''''''''''
EE:
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
FOR I=0 TO 95
    SUTUN[I]=YEDEK[I]
NEXT
''''''''''''''''''''   
AA:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
M=M+1
IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF M<96 THEN GOSUB sola_kay : GOTO AA
        IF M=96 THEN GOTO EE
    IF M>96  AND M<192 THEN GOSUB saga_kay  : GOTO AA
        IF M=192 THEN GOTO EE
    IF M>192 AND M<200 THEN GOSUB asagi_kay : goto aa
        if M=200 then goto EE
    if M>200 and M<208 then gosub yukari_kay: GOTO aa
        if M=208 then M=0
GOSUB TEMIZLE
GOTO SAAT_GOSTER
'****************************************************************
TEMIZLE:
FOR I=0 TO 95
SUTUN[I]=$FF
NEXT
GOSUB GOSTER
RETURN
'****************************************************************
KONTROL2:
IF K=1 THEN RETURN
gosub YERAL1
    for Z=0 TO 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI   
            I=I+1
        yeri=yeri+1
    NEXT   
IF A=12 THEN a=0 : GOSUB GOSTER2 
K=K+1
RETURN
'****************************************************************
GOSTER2:
FOR I=0 TO 95
    YEDEK[I]=SUTUN[I]
NEXT
''''
FOR Z=0 TO 49
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
  NEXT
RETURN
'****************************************************************
KAYDET: 
HIGH PORTE.0     
FOR I=0 TO 95
    adress=adress+1                           
    I2CWrite SDA,SCL,$A0,adress,[SUTUN[I]] ' Her adrese datayı yaz
    PAUSE 10
NEXT
M=0
LOW PORTE.0
return
''''''''''''''''''''''''
OKU:
HIGH PORTE.1
FOR I=0 TO 95
    ADRESS=ADRESS+1
    I2CRead SDA,SCL,$A0,adress,[SUTUN[I]] 'Her adresteki datayı oku B2 ye aktar
NEXT
LOW PORTE.1
RETURN
'****************************************************************
sola_kay:
For I=0 To 94
    sutun[i]= sutun[i+1]
   If i=95 Then sutun[95]=sutun[0]
Next i
pauseus 10000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
saga_kay:
For I=94 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[95]
Next i
pauseus 10000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
asagi_kay:
for I=0 to 95
   ARA=SUTUN[I]
   z=ARA.7
FOR X=7 to 1 STEP -1
   ARA.0[x]=ARA.0[X-1]
NEXT
   ara.0=Z
   sutun[I]=ARA
next
pauseus 3500
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
yukari_kay:
FOR I=0 to 95
   ARA=SUTUN[I]
   z=ARA.0
FOR X=0 to 6
   ARA.0[X]=ARA.0[X+1]
NEXT
   ARA.7=Z
   SUTUN[I]=ARA
NEXT
pauseus 5000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
GECIKME:
FOR VERI=0 TO 1200
PAUSEUS 1000
NEXT
RETURN
'****************************************************************
GECIKME1:
FOR VERI=0 TO 300
PAUSEUS 1000
NEXT
RETURN
'****************************************************************   
kontrol:
if rtchour=24  then rtchour=0    : rtcdate=rtcdate+1 : rtcday=rtcday+1
if rtcmin=60   then rtcmin=0
  if rtchour=255 then rtchour=23 : rtcdate=rtcdate-1 : rtcday=rtcday-1
if rtcmin=255  then rtcmin=59
gosub zaman_yaz
gosub gecikme
gosub zaman_oku
return
'****************************************************************
SAAT_GOSTER1:
gosub temizle
'''''''''''''''''''''
bb:
FOR W=0 TO 5
GOSUB ZAMAN_OKU
'''''''''''''''''''''
if portc.0=1         then u=u+1             :gosub kontrol 
if u=0 and portc.1=1 then rtchour=rtchour+1 :gosub kontrol   
if u=0 and portc.2=1 then rtchour=rtchour-1 :gosub kontrol
if u=1 and portc.1=1 then rtcmin=rtcmin+1   :gosub kontrol
if u=1 and portc.2=1 then rtcmin=rtcmin-1   :gosub kontrol
'''''''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
NEXT W
    IF PORTC.4=1 THEN gosub gecikme :GOSUB TEMIZLE :m=0: GOTO EE
goto bb
'****************************************************************
SAAT_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=115 THEN C=0:gosub cc:GOTO ISI_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto SAAT_GOSTER
'********************************************************
ISI_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub SENSOROKU
C=C+1
    iF C=100 THEN C=0: gosub cc :GOTO TARIH_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for Z=0 to 23
            GOSUB DATA_AL
        SUTUN[I]=VERI       
        SUTUN[I+64]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=223
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="C"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto ISI_GOSTER
'****************************************************************
TARIH_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOTO GUN_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcDATE dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcdate dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto TARIH_GOSTER
'****************************************************************
GUN_GOSTER: 
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
c=c+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOTO ee
GOSUB ZAMAN_OKU
gosub dd
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
GOTO GUN_GOSTER
'****************************************************************
cc:
E=E+1
If E<80                  Then gosub saga_kay    : GOTO goster1 
If E>80    and E<160     Then gosub sola_kay    : GOTO goster1
If E>160   and E<169     Then gosub asagi_kay   : GOTO goster1
if E>169   and E<178     then gosub yukari_kay  : GOTO goster1 
If E>178   then E=0
return
'****************************************************************
GOSTER1:
gosub zaman_oku
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
goto cc
'****************************************************************
GOSTER:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
RETURN
'****************************************************************
dd:
yazi_reg=0 : i=0
For W=0 To 11
    gosub yazi1 : yazi_reg=yazi_reg+1
        gosub YERAL1
    for z=0 to 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI
                I=I+1
            yeri=yeri+1
        next
    next
     gosub goster
return
'****************************************************************
yazi1:
if rtcday=1 then LookUp yazi_reg,["   PAZAR    "],bilgi
if rtcday=2 then LookUp yazi_reg,[" PAZARTESi  "],bilgi
if rtcday=3 then LookUp yazi_reg,["    SALI    "],bilgi
if rtcday=4 then LookUp yazi_reg,["  CARSAMBA  "],bilgi
if rtcday=5 then LookUp yazi_reg,["  PERSEMBE  "],bilgi
if rtcday=6 then LookUp yazi_reg,["    CUMA    "],bilgi
if rtcday=7 then LookUp yazi_reg,[" CUMARTESi  "],bilgi
Return
'****************************************************************     
YERAL:
select case temp
    case 0   : yeri=0   : return
    case 1   : yeri=8   : return
    case 2   : yeri=16  : return
    case 3   : yeri=24  : return
    case 4   : yeri=32  : return
    case 5   : yeri=40  : return
    case 6   : yeri=48  : return
    case 7   : yeri=56  : return
    case 8   : yeri=64  : return
    case 9   : yeri=72  : return
    case 223 : yeri=80  : return
    case "C" : yeri=88  : return
    case ":" : yeri=96  : return
    case "/" : yeri=104 : return
    case " " : yeri=112 : return
end select
return
'****************************************************************
data_al:
    lookup yeri,[$FF,$C1,$80,$A6,$B2,$80,$C1,$FF,_     '0
                 $FF,$BF,$BD,$80,$80,$BF,$BF,$FF,_     '1
                 $FF,$9D,$8C,$A6,$B2,$98,$9D,$FF,_     '2
                 $FF,$DD,$9C,$B6,$B6,$80,$C9,$FF,_     '3
                 $FF,$E7,$E3,$E9,$80,$80,$E7,$FF,_     '4
                 $FF,$D8,$98,$BA,$BA,$82,$C6,$FF,_     '5
                 $FF,$C3,$81,$B4,$B6,$86,$CF,$FF,_     '6
                 $FF,$FC,$FC,$8E,$86,$F0,$F8,$FF,_     '7
                 $FF,$C9,$80,$B6,$B6,$80,$C9,$FF,_     '8
                 $FF,$F9,$B0,$B6,$96,$C0,$E1,$FF,_     '9
                 $FF,$FF,$F9,$F0,$F6,$F0,$F9,$FF,_     'Derece
                 $FF,$C1,$80,$BE,$BE,$BE,$DD,$FF,_     'C
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ':
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
YERAL1:
select case bilgi
    case "A" : yeri=0   : return
    case "B" : yeri=8   : return
    case "C" : yeri=16  : return
    case "D" : yeri=24  : return
    case "E" : yeri=32  : return
    case "F" : yeri=40  : return
    case "G" : yeri=48  : return
    case "H" : yeri=56  : return
    case "I" : yeri=64  : return
    case "i" : yeri=72  : return
    case "J" : yeri=80  : return
    case "K" : yeri=88  : return
    case "L" : yeri=96  : return
    case "M" : yeri=104 : return
    case "N" : yeri=112 : return
    case "O" : yeri=120 : return
    case "P" : yeri=128 : return
    case "R" : yeri=136 : return
    case "S" : yeri=144 : return
    case "T" : yeri=152 : return
    case "U" : yeri=160 : return
    case "V" : yeri=168 : return
    case "Y" : yeri=176 : return
    case "Z" : yeri=184 : return
    CASE "." : YERI=192 : RETURN
    case "W" : yeri=200 : return
    case "Q" : yeri=208 : return
    case "/" : yeri=216 : return 
    case ":" : yeri=224 : return
    case "-" : yeri=232 : return 
    case " " : yeri=240 : return     
end select
return
'****************************************************************
data_al1:
    LookUp yeri,[$FF,$81,$F6,$F6,$F6,$F6,$81,$FF,_     ;  A
                 $FF,$80,$B6,$B6,$B6,$B6,$C9,$FF,_     ;  B
                 $FF,$C1,$BE,$BE,$BE,$BE,$DD,$FF,_     ;  C
                 $FF,$80,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  D
                 $FF,$80,$B6,$B6,$B6,$B6,$BE,$FF,_     ;  E
                 $FF,$80,$F6,$F6,$F6,$F6,$FE,$FF,_     ;  F
                 $FF,$80,$BE,$B6,$B6,$B6,$86,$FF,_     ;  G
                 $FF,$80,$F7,$F7,$F7,$F7,$80,$FF,_     ;  H
                 $FF,$BE,$BE,$80,$80,$BE,$BE,$FF,_     ;  I
                 $FF,$BF,$BB,$82,$82,$BB,$BF,$FF,_     ;  i
                 $FF,$CE,$BE,$80,$80,$FE,$FF,$FF,_     ;  J
                 $FF,$80,$F7,$EB,$DD,$BE,$FF,$FF,_     ;  K
                 $FF,$80,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                 $FF,$80,$FB,$F7,$F7,$FB,$80,$FF,_     ;  M
                 $FF,$80,$FB,$F7,$EF,$DF,$80,$FF,_     ;  N
                 $FF,$C1,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  O
                 $FF,$80,$F6,$F6,$F6,$F6,$F9,$FF,_     ;  P
                 $FF,$80,$F6,$F6,$E6,$D6,$B9,$FF,_     ;  R
                 $FF,$D9,$B6,$B6,$B6,$B6,$CD,$FF,_     ;  S
                 $FF,$FE,$FE,$80,$80,$FE,$FE,$FF,_     ;  T
                 $FF,$C0,$BF,$BF,$BF,$BF,$C0,$FF,_     ;  U
                 $FF,$E0,$DF,$BF,$BF,$DF,$E0,$FF,_     ;  V
                 $FF,$FC,$FB,$87,$87,$FB,$FC,$FF,_     ;  Y                     
                 $FF,$9E,$AE,$B6,$BA,$BC,$BE,$FF,_     ;  Z
                 $FF,$FF,$FF,$9F,$9F,$FF,$FF,$FF,_     ;  .
                 $FF,$80,$DF,$EF,$EF,$DF,$80,$FF,_     ;  W
                 $FF,$C1,$BE,$BE,$AE,$9E,$81,$FF,_     ;  Q
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     ;  /
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ;  :
                 $FF,$E7,$E7,$E7,$E7,$E7,$E7,$FF,_     ;  _
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
'***Sensör_Oku***************************************************
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
'           OWIN    Comm_Pin, 4, [TEMP]    ' Busy değerini oku
'           IF      TEMP = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'****************************************************************           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
'****************************************************************             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       ham=($ffff-ham)+1
    endif
    ISI = Ham*10/16
GEC:
    FLOAT = (ISI //10)
    ISI=ISI/10
    RETURN                     
'****************************************************************
'****************************************************************
'***********Zaman Oku***********
ZAMAN_OKU:
         High RTC_RST
         SHiftOut RTC_DTA, RTC_SCLK, 0, [$BF]
         SHiftIn RTC_DTA, RTC_SCLK, 1, [rtcsec, rtcmin, rtchour,rtcdate , rtcmonth,rtcday,rtcyear, MEM]
         Low RTC_RST
         MEM=rtcsec  : GoSub CEVIR:rtcsec=SAYI 
         MEM=rtcmin  : GoSub CEVIR:rtcmin=SAYI
         MEM=rtchour : GoSub CEVIR:rtchour=SAYI
         MEM=rtcdate : GoSub CEVIR:rtcdate=SAYI
         MEM=rtcmonth: GoSub CEVIR:rtcmonth=SAYI
         MEM=rtcyear : GoSub CEVIR:rtcyear=SAYI
         MEM=rtcday  : GoSub CEVIR: rtcday=SAYI       
         Return
'***********Zaman Yaz***********
ZAMAN_YAZ:
    MEM=rtcsec   : GoSub TERSCEVIR :rtcsec=SAYI
    MEM=rtcmin   : GoSub TERSCEVIR :rtcmin=SAYI
    MEM=rtchour  : GoSub TERSCEVIR :rtchour=SAYI
    MEM=rtcdate  : GoSub TERSCEVIR :rtcdate=SAYI
    MEM=rtcmonth : GoSub TERSCEVIR :rtcmonth=SAYI
    MEM=rtcyear  : GoSub TERSCEVIR :rtcyear=SAYI
    MEM=rtcday   : GoSub TERSCEVIR :rtcday=SAYI
       
    High  RTC_RST
    SHiftOut RTC_DTA, RTC_SCLK, 0, [$8E, 0]
    Low RTC_RST:pause 1
    High RTC_RST         
    SHiftOut  RTC_DTA, RTC_SCLK, 0, [$BE, rtcsec, rtcmin, rtchour,rtcdate , rtcmonth, rtcday, rtcyear, 0]  'YAZ
    Low RTC_RST
    pause 10
Return
'***********Çevir***********               
CEVIR:
    ONLAR=MEM & %01110000
    ONLAR=ONLAR>>4
    BIRLER=MEM & %00001111
    SAYI=ONLAR*10+BIRLER
RETURN 
'***********Ters Çevir***********
TERSCEVIR:               
    ONLAR=MEM DIG 1
    ONLAR=ONLAR<<4
    BIRLER=MEM DIG 0
    SAYI=ONLAR+BIRLER
RETURN
'****************************************************************
Disable
KESME:
A=A+1 : K=0
IF A=1 THEN
    HSERIN [WAIT("SIFRE"),BILGI] 
ELSE
    HSERIN [BILGI]
ENDIF
HSEROUT [BILGI,10]
  Resume
ENABLE
Return   
'****************************************************************
end




askin

#67
Meyer Arkadaşım ;

Deneme4.hex   çalışmıyor,  dosyayı kendimde derledim ama çalıştıramadım.
isis te bir değişiklik yapmışmıydıynız ?   yada şifre v.s.

meyer

 İyi günler askin hocam,
-ISIS'te bir değişiklik yaptım ama 1-2 mesaj önce o devreyi paylaşmıştım.Devrenin son halini tekrardan yüklüyorum..
İyi günler...

askin

Evet  çalıştı...

Özür dilerim kaçırmışım,  sizi sıkı bir şekilde takip ediyorum. 
çalışmalarınızda başarılar.

meyer


meyer

#71
 İyi günler arkadaşlar,
-Şimdi de devrenin 16*96'lık halini paylaşıyorum.
-Programın çalışmasını  kısaca anlatmak gerekirse;
İlk anda virtual terminal ekranına büyük harflerle "SIFRE" yazısını girdikten sonra 12 karakter yazımızı giriyoruz..12 karakter yazımızı girdikten sonra matrix displayimizde girdiğimiz karakterler gözükecektir.Girdiğimiz karakterler doğru ise matrix displayimizden yazı kaybolduktan sonra kaydet butonuna basıyoruz.Değil ise mod tuşuna basıp hafızayı ve ekranı sıfırlıyoruz.
Yazımızı kaydettikten sonra girdiğimiz 12 karakter önce sola sonra da sağa doğru kayacaktır.Daha sonra da saat,sıcaklık,tarih ve gün bilgisini ekrana bastıktan sonra tekrardan başa dönecektir..Girdiğimiz 12 karakter yazımızı değiştirmek istersek eğer mod tuşuna basıp yazımızı tekrardan yazıyoruz.. Programın çalışması bu kadar arkadaşlar..
Devrenin isis şemasını,.pbp kodunu,.hex kodunu da ekte yolluyorum...
İyi günler...


'****************************************************************
'*  Name    : MATRIX_PANO_SAAT_ISI_TARIH_GUN_KAYAN_YAZI.BAS     *
'*  Author  : [HAKAN_ÖZKAN]                                     *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 05.01.2012                                        *
'*  Version : 3.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
DEFINE I2C_SLOW 1
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
'********************************************************
INTCON2.7=0   ' PORTB Pull-up Enable bit
INTCON.7 =1   ' GIE : Global Interrupt Enable
INTCON.6 =1   ' PEIE: Peripheral Interrupt Enable
PIE1.5   =1   ' RCIE: USART Receive Interrupt Enable
ADCON0   =0
ADCON1   =7
'****************************************************************
On Interrupt GoTo KESME
'****************************************************************
DEFINE HSERIAL_BAUD  2400
DEFINE HSERIAL_RCSTA %10010000
DEFINE HSERIAL_TXSTA %00100000
DEFINE HSERIAL_CLEAR = On
'****************************************************************
TRISB=0 : TRISD=0 : TRISE=0  : TRISC=%10110111   
PORTB=0 : PORTD=0 : PORTE=0  : PORTC=0     : PORTA=0     
'74HC595*********************************************************
Symbol CLK1     =PORTB.0
Symbol DTA1     =PORTB.1
Symbol STROBE1  =PORTB.2
''''''''''''''''''''''''
Symbol CLK      =PORTB.5
Symbol DTA      =PORTB.6
Symbol STROBE   =PORTB.7
'DS18B20*********************************************************
SYMBOL COMM_PIN =PORTC.3
'DS1302**********************************************************
symbol  RTC_RST =PORTA.0                'RTC nin bağlandığı portlar
symbol  RTC_SCLK=PORTA.1
symbol  RTC_DTA =PORTA.2
'24C256**********************************************************
SCL      VAR     PORTB.3                ' Clock pin 
SDA      VAR     PORTB.4                ' Data pin                 
'24C256_DEGISKENLERI*********************************************
adress   VAR     WORD    :adress=0      ' Adres
B1       VAR     BYTE                   ' Data1
B2       VAR     Byte                   ' Data2
'****************************************************************
NEGAT_ISI CON 1                         ' Negatif_Cold = 1
'****************************************************************
TUS         VAR BYTE
T           VAR Byte
HAM         VAR WORD
ISI         var WORD
rtcsec      VAR BYTE
rtcmin      VAR BYTE
rtchour     VAR BYTE
rtcyear     VAR BYTE
rtcmonth    VAR BYTE
rtcday      VAR BYTE
rtcdate     VAR BYTE
TEMP        VAR BYTE
VERI        VAR BYTE
SAYI        VAR BYTE 
SIGN        VAR BYTE
FLOAT       var BYTE
mem         var byte
BIRLER      VAR BYTE
ONLAR       VAR BYTE
SIGN_BITI VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'****************************************************************
SUTUN     var Byte[96]    ' 1497 adet byte tipinde değişken tanımlanabilir.
YEDEK     VAR BYTE[96]
SUTUN1    VAR BYTE[96]
YEDEK1    VAR BYTE[96]
RAKAM     VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var BYTE
'''''''''''''''''''
yazi_reg  var byte
yeri      var byte
z         var byte
y         var byte 
A         VAR BYTE 
B         VAR BYTE
C         VAR BYTE 
D         VAR BYTE
E         var byte
bilgi     var byte
K         VAR BIT
u         var bit
'****************************************************************
gosub SENSORYAZ
GOSUB SENSOROKU
Low RTC_RST              ' RTC yi resetle
Low RTC_SCLK
'****************************************************************
clear
pause 250
'****************************************************************
HSEROUT ["KLAYVEDEN GiRiLEN HARFLERiN MATRiX DiSPLAYDE GOSTERiLMESi",13,10]
HSEROUT ["*********************************************************",13,10]
'****************************************************************
BASLA:
    IF PORTC.5=1 THEN ADRESS=0 : GOSUB KAYDET : GOTO BASLA1
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF A=0 THEN GOTO BASLA
    IF A>0 OR A<13 THEN GOSUB KONTROL2
GOTO BASLA
'****************************************************************
BASLA1:   
ADRESS=0
GOSUB OKU
FOR I=0 TO 95
    SUTUN[I]=YEDEK[I]
    SUTUN1[I]=YEDEK1[I]
NEXT
GOTO AA
''''''''''''''''''''
EE:
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
FOR I=0 TO 95
    SUTUN[I]=YEDEK[I]
    SUTUN1[I]=YEDEK1[I]
NEXT
''''''''''''''''''''   
AA:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
M=M+1
IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF M<96 THEN GOSUB sola_kay : GOTO AA
        IF M=96 THEN GOTO EE
    IF M>96  AND M<192 THEN GOSUB saga_kay  : GOTO AA
        if M=192 then M=0
GOSUB TEMIZLE
GOTO SAAT_GOSTER
'****************************************************************
TEMIZLE:
FOR I=0 TO 95
SUTUN[I]=$FF
SUTUN1[I]=$FF
NEXT
GOSUB GOSTER
RETURN
'****************************************************************
KONTROL2:
IF K=1 THEN RETURN
gosub YERAL1
    for Z=0 TO 7
        GOSUB DATA_AL1_UST
            SUTUN[I]=VERI
        GOSUB DATA_AL1_ALT
            SUTUN1[I]=VERI   
            I=I+1
        yeri=yeri+1
    NEXT   
IF A=12 THEN a=0 : GOSUB GOSTER2 
K=K+1
RETURN
'****************************************************************
GOSTER2:
FOR I=0 TO 95
    YEDEK[I]=SUTUN[I]
    YEDEK1[I]=SUTUN1[I]
NEXT
''''
FOR Z=0 TO 49
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
  NEXT
RETURN
'****************************************************************
KAYDET: 
HIGH PORTE.0     
FOR I=0 TO 95
    adress=adress+1                           
    I2CWrite SDA,SCL,$A0,adress,[SUTUN[I]] ' Her adrese datayı yaz
    I2CWrite SDA,SCL,$A0,adress,[SUTUN1[I]]
    PAUSE 10
NEXT
M=0
LOW PORTE.0
return
''''''''''''''''''''''''
OKU:
HIGH PORTE.1
FOR I=0 TO 95
    ADRESS=ADRESS+1
    I2CRead SDA,SCL,$A0,adress,[SUTUN[I]] 'Her adresteki datayı oku B2 ye aktar
    I2CRead SDA,SCL,$A0,adress,[SUTUN1[I]]
NEXT
LOW PORTE.1
RETURN
'****************************************************************
sola_kay:
For I=0 To 94
    sutun[i]= sutun[i+1]
    sutun1[i]= sutun1[i+1]
   If i=95 Then sutun[95]=sutun[0]
   If i=95 Then sutun1[95]=sutun1[0]
Next i
pauseus 7500
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
saga_kay:
For I=94 to 0 step -1
    sutun[i]= sutun[i-1]
    sutun1[i]= sutun1[i-1]
   If i=0 Then sutun[0]=sutun[95]
   If i=0 Then sutun1[0]=sutun1[95]
Next i 
pauseus 7500
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
GECIKME:
FOR VERI=0 TO 1200
PAUSEUS 1000
NEXT
RETURN
'****************************************************************
GECIKME1:
FOR VERI=0 TO 300
PAUSEUS 1000
NEXT
RETURN
'****************************************************************   
kontrol:
if rtchour=24  then rtchour=0    : rtcdate=rtcdate+1 : rtcday=rtcday+1
if rtcmin=60   then rtcmin=0
  if rtchour=255 then rtchour=23 : rtcdate=rtcdate-1 : rtcday=rtcday-1
if rtcmin=255  then rtcmin=59
gosub zaman_yaz
gosub gecikme
gosub zaman_oku
return
'****************************************************************
SAAT_GOSTER1:
gosub temizle
'''''''''''''''''''''
bb:
FOR W=0 TO 5
GOSUB ZAMAN_OKU
'''''''''''''''''''''
if portc.0=1         then u=u+1             :gosub kontrol 
if u=0 and portc.1=1 then rtchour=rtchour+1 :gosub kontrol   
if u=0 and portc.2=1 then rtchour=rtchour-1 :gosub kontrol
if u=1 and portc.1=1 then rtcmin=rtcmin+1   :gosub kontrol
if u=1 and portc.2=1 then rtcmin=rtcmin-1   :gosub kontrol
'''''''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
        SUTUN1[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI     
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
NEXT W
    IF PORTC.4=1 THEN gosub gecikme :GOSUB TEMIZLE :m=0: GOTO EE
goto bb
'****************************************************************
SAAT_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=115 THEN C=0:gosub cc:GOSUB TEMIZLE:GOTO ISI_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
        SUTUN1[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI   
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
             GOSUB DATA_AL_ust
        SUTUN[I]=VERI
             GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
             GOSUB DATA_AL_ust
        SUTUN[I]=VERI
             GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto SAAT_GOSTER
'********************************************************
ISI_GOSTER:
gosub SENSOROKU
GG:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
C=C+1
    iF C=100 THEN C=0: gosub cc :GOSUB TEMIZLE:GOTO TARIH_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for Z=0 to 23
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI       
        SUTUN[I+64]=VERI
            GOSUB DATA_AL_ust
        SUTUN1[I]=VERI       
        SUTUN1[I+64]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI   
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=223
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="C"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto GG
'****************************************************************
TARIH_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOSUB TEMIZLE:GOTO GUN_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
        SUTUN1[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcDATE dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcdate dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto TARIH_GOSTER
'****************************************************************
GUN_GOSTER: 
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
c=c+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOSUB TEMIZLE:GOTO ee
GOSUB ZAMAN_OKU
gosub dd
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
GOTO GUN_GOSTER
'****************************************************************
cc:
E=E+1
If E<80                  Then gosub saga_kay    : GOTO goster1 
If E>80    and E<160     Then gosub sola_kay    : GOTO goster1
If E>160   then E=0
return
'****************************************************************
GOSTER1:
gosub zaman_oku
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
  SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
goto cc
'****************************************************************
GOSTER:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
  SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
RETURN
'****************************************************************
dd:
yazi_reg=0 : i=0
For W=0 To 11
    gosub yazi1 : yazi_reg=yazi_reg+1
        gosub YERAL1
    for z=0 to 7
        GOSUB DATA_AL1_UST
            SUTUN[I]=VERI
        GOSUB DATA_AL1_ALT
            SUTUN1[I]=VERI
                I=I+1
            yeri=yeri+1
        next
    next
     gosub goster
return
'****************************************************************
yazi1:
if rtcday=1 then LookUp yazi_reg,["   PAZAR    "],bilgi
if rtcday=2 then LookUp yazi_reg,[" PAZARTESi  "],bilgi
if rtcday=3 then LookUp yazi_reg,["    SALI    "],bilgi
if rtcday=4 then LookUp yazi_reg,["  CARSAMBA  "],bilgi
if rtcday=5 then LookUp yazi_reg,["  PERSEMBE  "],bilgi
if rtcday=6 then LookUp yazi_reg,["    CUMA    "],bilgi
if rtcday=7 then LookUp yazi_reg,[" CUMARTESi  "],bilgi
Return
'****************************************************************     
YERAL:
select case temp
    case 0   : yeri=0   : return
    case 1   : yeri=8   : return
    case 2   : yeri=16  : return
    case 3   : yeri=24  : return
    case 4   : yeri=32  : return
    case 5   : yeri=40  : return
    case 6   : yeri=48  : return
    case 7   : yeri=56  : return
    case 8   : yeri=64  : return
    case 9   : yeri=72  : return
    case 223 : yeri=80  : return
    case "C" : yeri=88  : return
    case ":" : yeri=96  : return
    case "/" : yeri=104 : return
    case " " : yeri=112 : return
end select
return
'****************************************************************
data_al_ust:
    lookup yeri,[$03,$01,$F9,$F9,$F9,$01,$03,$FF,_     '0
                 $F7,$F3,$01,$01,$01,$FF,$FF,$FF,_     '1
                 $F3,$F1,$F9,$F9,$79,$01,$83,$FF,_     '2
                 $F3,$F1,$79,$79,$79,$01,$83,$FF,_     '3
                 $1F,$0F,$87,$C3,$01,$01,$FF,$FF,_     '4
                 $01,$01,$39,$39,$39,$39,$79,$FF,_     '5
                 $1F,$0F,$07,$63,$71,$79,$FD,$FF,_     '6
                 $F1,$F1,$F9,$F9,$79,$01,$81,$FF,_     '7
                 $83,$01,$79,$79,$79,$01,$83,$FF,_     '8
                 $03,$01,$79,$79,$79,$01,$01,$FF,_     '9
                 $FF,$FF,$C7,$83,$93,$83,$C7,$FF,_     'Derece
                 $03,$01,$F9,$F9,$F9,$F1,$F3,$FF,_     'C
                 $FF,$FF,$8F,$8F,$8F,$8F,$FF,$FF,_     ':
                 $FF,$FF,$7F,$3F,$1F,$0F,$87,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
data_al_alt:
    lookup yeri,[$C0,$80,$9F,$9F,$9F,$80,$C0,$FF,_     '0
                 $9F,$9F,$80,$80,$80,$9F,$9F,$FF,_     '1
                 $87,$83,$99,$9C,$9E,$8F,$8F,$FF,_     '2
                 $CF,$8F,$9E,$9E,$9E,$80,$C1,$FF,_     '3
                 $F8,$F8,$F8,$80,$80,$80,$FC,$FF,_     '4
                 $CF,$8E,$9E,$9E,$9E,$80,$C0,$FF,_     '5
                 $C0,$80,$80,$9C,$9C,$80,$C1,$FF,_     '6
                 $FF,$FF,$81,$80,$FE,$FF,$FF,$FF,_     '7
                 $C1,$80,$9E,$9E,$9E,$80,$C1,$FF,_     '8
                 $9F,$9E,$9E,$9E,$9E,$80,$80,$FF,_     '9
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,_     'Derece
                 $C0,$80,$9F,$9F,$9F,$8F,$CF,$FF,_     'C
                 $FF,$FF,$F1,$F1,$F1,$FF,$FF,$FF,_     ':
                 $E1,$F0,$F8,$FC,$FE,$FF,$FF,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
YERAL1:
select case bilgi
    case "A" : yeri=0   : return
    case "B" : yeri=8   : return
    case "C" : yeri=16  : return
    case "D" : yeri=24  : return
    case "E" : yeri=32  : return
    case "F" : yeri=40  : return
    case "G" : yeri=48  : return
    case "H" : yeri=56  : return
    case "I" : yeri=64  : return
    case "i" : yeri=72  : return
    case "J" : yeri=80  : return
    case "K" : yeri=88  : return
    case "L" : yeri=96  : return
    case "M" : yeri=104 : return
    case "N" : yeri=112 : return
    case "O" : yeri=120 : return
    case "P" : yeri=128 : return
    case "R" : yeri=136 : return
    case "S" : yeri=144 : return
    case "T" : yeri=152 : return
    case "U" : yeri=160 : return
    case "V" : yeri=168 : return
    case "Y" : yeri=176 : return
    case "Z" : yeri=184 : return
    CASE "." : YERI=192 : RETURN
    case "W" : yeri=200 : return
    case "Q" : yeri=208 : return
    case "/" : yeri=216 : return 
    case ":" : yeri=224 : return
    case "_" : yeri=232 : return 
    case "X" : yeri=240 : return
    case " " : yeri=248 : return     
end select
return
'****************************************************************
data_al1_ust:
    LookUp yeri,[$03,$01,$79,$79,$79,$01,$03,$FF,_     ;  A
                 $01,$01,$79,$79,$79,$01,$83,$FF,_     ;  B
                 $03,$01,$F9,$F9,$F9,$F1,$F3,$FF,_     ;  C
                 $01,$01,$F9,$F9,$F9,$01,$03,$FF,_     ;  D
                 $01,$01,$79,$79,$79,$31,$31,$FF,_     ;  E
                 $01,$01,$79,$79,$39,$31,$F1,$FF,_     ;  F
                 $01,$01,$F9,$79,$79,$79,$79,$FF,_     ;  G
                 $01,$01,$3F,$3F,$3F,$01,$01,$FF,_     ;  H
                 $F9,$F9,$01,$01,$01,$F9,$F9,$FF,_     ;  I
                 $CF,$CF,$09,$09,$09,$CF,$CF,$FF,_     ;  i
                 $CF,$CF,$09,$09,$09,$CF,$CF,$FF,_     ;  J
                 $01,$01,$3F,$1F,$8F,$C1,$E1,$FF,_     ;  K
                 $01,$01,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                 $01,$01,$3F,$7F,$3F,$01,$01,$FF,_     ;  M
                 $01,$01,$7F,$FF,$FF,$01,$01,$FF,_     ;  N
                 $03,$01,$F9,$F9,$F9,$01,$03,$FF,_     ;  O
                 $01,$01,$79,$79,$79,$01,$83,$FF,_     ;  P
                 $01,$01,$79,$79,$79,$01,$03,$FF,_     ;  R
                 $83,$01,$79,$79,$79,$61,$E3,$FF,_     ;  S
                 $E1,$F9,$01,$01,$01,$F9,$E1,$FF,_     ;  T
                 $01,$01,$FF,$FF,$FF,$01,$01,$FF,_     ;  U
                 $01,$01,$FF,$FF,$FF,$01,$01,$FF,_     ;  V
                 $81,$01,$7F,$7F,$7F,$01,$81,$FF,_     ;  Y                     
                 $E1,$E1,$71,$31,$01,$81,$C1,$FF,_     ;  Z
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,_     ;  .
                 $01,$01,$FF,$7F,$FF,$01,$01,$FF,_     ;  W
                 $03,$01,$F9,$F9,$F9,$01,$03,$FF,_     ;  Q
                 $FF,$FF,$7F,$3F,$1F,$0F,$87,$FF,_     ;  /
                 $FF,$FF,$8F,$8F,$8F,$8F,$FF,$FF,_     ;  :
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,_     ;  _
                 $C1,$81,$3F,$7F,$3F,$81,$C1,$FF,_     ;  X
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
data_al1_alt:
    LookUp yeri,[$80,$80,$FC,$FC,$FC,$80,$80,$FF,_     ;  A
                 $80,$80,$9E,$9E,$9E,$80,$C1,$FF,_     ;  B
                 $C0,$80,$9F,$9F,$9F,$87,$C7,$FF,_     ;  C
                 $80,$80,$9F,$9F,$9F,$80,$C0,$FF,_     ;  D
                 $80,$80,$9E,$9E,$9E,$8C,$8C,$FF,_     ;  E
                 $80,$80,$FE,$FE,$FC,$FC,$FF,$FF,_     ;  F
                 $80,$80,$9F,$9E,$9E,$80,$80,$FF,_     ;  G
                 $80,$80,$FC,$FC,$FC,$80,$80,$FF,_     ;  H
                 $9F,$9F,$80,$80,$80,$9F,$9F,$FF,_     ;  I
                 $9F,$9F,$80,$80,$80,$9F,$9F,$FF,_     ;  i
                 $87,$9F,$80,$80,$80,$FF,$FF,$FF,_     ;  J
                 $80,$80,$FC,$FC,$F8,$81,$83,$FF,_     ;  K
                 $80,$80,$8F,$8F,$8F,$8F,$8F,$FF,_     ;  L
                 $80,$80,$FF,$FE,$FF,$80,$80,$FF,_     ;  M
                 $80,$80,$FC,$F8,$F1,$80,$80,$FF,_     ;  N
                 $C0,$80,$9F,$9F,$9F,$80,$C0,$FF,_     ;  O
                 $80,$80,$FE,$FE,$FE,$FE,$FF,$FF,_     ;  P
                 $80,$80,$F8,$F0,$82,$86,$8F,$FF,_     ;  R
                 $C7,$86,$9E,$9E,$9E,$80,$C0,$FF,_     ;  S
                 $FF,$FF,$80,$80,$80,$FF,$FF,$FF,_     ;  T
                 $C0,$80,$9F,$9F,$9F,$80,$C0,$FF,_     ;  U
                 $F0,$E0,$CF,$9F,$CF,$E0,$F0,$FF,_     ;  V
                 $FF,$FF,$80,$80,$80,$FF,$FF,$FF,_     ;  Y                     
                 $81,$80,$80,$8E,$8F,$83,$83,$FF,_     ;  Z
                 $FF,$FF,$8F,$8F,$8F,$FF,$FF,$FF,_     ;  .
                 $80,$80,$FC,$FE,$FC,$80,$80,$FF,_     ;  W
                 $C0,$80,$9F,$91,$83,$80,$C0,$FF,_     ;  Q
                 $E1,$F0,$F8,$FC,$FE,$FF,$FF,$FF,_     ;  /
                 $FF,$FF,$F1,$F1,$F1,$FF,$FF,$FF,_     ;  :
                 $8F,$8F,$8F,$8F,$8F,$8F,$8F,$FF,_     ;  _
                 $83,$81,$FC,$FE,$FC,$81,$83,$FF,_     ;  X
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
'***Sensör_Oku***************************************************
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
'           OWIN    Comm_Pin, 4, [TEMP]    ' Busy değerini oku
'           IF      TEMP = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'****************************************************************           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
'****************************************************************             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       ham=($ffff-ham)+1
    endif
    ISI = Ham*10/16
GEC:
    FLOAT = (ISI //10)
    ISI=ISI/10
    RETURN                     
'****************************************************************
'****************************************************************
'***********Zaman Oku***********
ZAMAN_OKU:
         High RTC_RST
         SHiftOut RTC_DTA, RTC_SCLK, 0, [$BF]
         SHiftIn RTC_DTA, RTC_SCLK, 1, [rtcsec, rtcmin, rtchour,rtcdate , rtcmonth,rtcday,rtcyear, MEM]
         Low RTC_RST
         MEM=rtcsec  : GoSub CEVIR:rtcsec=SAYI 
         MEM=rtcmin  : GoSub CEVIR:rtcmin=SAYI
         MEM=rtchour : GoSub CEVIR:rtchour=SAYI
         MEM=rtcdate : GoSub CEVIR:rtcdate=SAYI
         MEM=rtcmonth: GoSub CEVIR:rtcmonth=SAYI
         MEM=rtcyear : GoSub CEVIR:rtcyear=SAYI
         MEM=rtcday  : GoSub CEVIR: rtcday=SAYI       
         Return
'***********Zaman Yaz***********
ZAMAN_YAZ:
    MEM=rtcsec   : GoSub TERSCEVIR :rtcsec=SAYI
    MEM=rtcmin   : GoSub TERSCEVIR :rtcmin=SAYI
    MEM=rtchour  : GoSub TERSCEVIR :rtchour=SAYI
    MEM=rtcdate  : GoSub TERSCEVIR :rtcdate=SAYI
    MEM=rtcmonth : GoSub TERSCEVIR :rtcmonth=SAYI
    MEM=rtcyear  : GoSub TERSCEVIR :rtcyear=SAYI
    MEM=rtcday   : GoSub TERSCEVIR :rtcday=SAYI
       
    High  RTC_RST
    SHiftOut RTC_DTA, RTC_SCLK, 0, [$8E, 0]
    Low RTC_RST:pause 1
    High RTC_RST         
    SHiftOut  RTC_DTA, RTC_SCLK, 0, [$BE, rtcsec, rtcmin, rtchour,rtcdate , rtcmonth, rtcday, rtcyear, 0]  'YAZ
    Low RTC_RST
    pause 10
Return
'***********Çevir***********               
CEVIR:
    ONLAR=MEM & %01110000
    ONLAR=ONLAR>>4
    BIRLER=MEM & %00001111
    SAYI=ONLAR*10+BIRLER
RETURN 
'***********Ters Çevir***********
TERSCEVIR:               
    ONLAR=MEM DIG 1
    ONLAR=ONLAR<<4
    BIRLER=MEM DIG 0
    SAYI=ONLAR+BIRLER
RETURN
'****************************************************************
Disable
KESME:
A=A+1 : K=0
IF A=1 THEN
    HSERIN [WAIT("SIFRE"),BILGI] 
ELSE
    HSERIN [BILGI]
ENDIF
HSEROUT [BILGI,10]
  Resume
ENABLE
Return   
'****************************************************************
end




meyer

#72
 Programda ufak bir değişiklik yaptım arkadaşlar..12 karakter harfimizi girdikten sonra ekranda beliren yazılar belli bir süre sonra ekradan kayboluyorlardı.Yaptığım değişiklik ile ekranda kalmalarını sağladım.Ondan sonra da kaydet veya mod tuşları ile işlemlerimizi yapıyoruz..


'****************************************************************
'*  Name    : MATRIX_PANO_SAAT_ISI_TARIH_GUN_KAYAN_YAZI.BAS     *
'*  Author  : [HAKAN_ÖZKAN]                                     *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 05.01.2012                                        *
'*  Version : 3.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
DEFINE I2C_SLOW 1
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
'********************************************************
INTCON2.7=0   ' PORTB Pull-up Enable bit
INTCON.7 =1   ' GIE : Global Interrupt Enable
INTCON.6 =1   ' PEIE: Peripheral Interrupt Enable
PIE1.5   =1   ' RCIE: USART Receive Interrupt Enable
ADCON0   =0
ADCON1   =7
'****************************************************************
On Interrupt GoTo KESME
'****************************************************************
DEFINE HSERIAL_BAUD  2400
DEFINE HSERIAL_RCSTA %10010000
DEFINE HSERIAL_TXSTA %00100000
DEFINE HSERIAL_CLEAR = On
'****************************************************************
TRISB=0 : TRISD=0 : TRISE=0  : TRISC=%10110111   
PORTB=0 : PORTD=0 : PORTE=0  : PORTC=0     : PORTA=0     
'74HC595*********************************************************
Symbol CLK1     =PORTB.0
Symbol DTA1     =PORTB.1
Symbol STROBE1  =PORTB.2
''''''''''''''''''''''''
Symbol CLK      =PORTB.5
Symbol DTA      =PORTB.6
Symbol STROBE   =PORTB.7
'DS18B20*********************************************************
SYMBOL COMM_PIN =PORTC.3
'DS1302**********************************************************
symbol  RTC_RST =PORTA.0                'RTC nin bağlandığı portlar
symbol  RTC_SCLK=PORTA.1
symbol  RTC_DTA =PORTA.2
'24C256**********************************************************
SCL      VAR     PORTB.3                ' Clock pin 
SDA      VAR     PORTB.4                ' Data pin                 
'24C256_DEGISKENLERI*********************************************
adress   VAR     WORD    :adress=0      ' Adres
B1       VAR     BYTE                   ' Data1
B2       VAR     Byte                   ' Data2
'****************************************************************
NEGAT_ISI CON 1                         ' Negatif_Cold = 1
'****************************************************************
TUS         VAR BYTE
T           VAR Byte
HAM         VAR WORD
ISI         var WORD
rtcsec      VAR BYTE
rtcmin      VAR BYTE
rtchour     VAR BYTE
rtcyear     VAR BYTE
rtcmonth    VAR BYTE
rtcday      VAR BYTE
rtcdate     VAR BYTE
TEMP        VAR BYTE
VERI        VAR BYTE
SAYI        VAR BYTE 
SIGN        VAR BYTE
FLOAT       var BYTE
mem         var byte
BIRLER      VAR BYTE
ONLAR       VAR BYTE
SIGN_BITI VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'****************************************************************
SUTUN     var Byte[96]    ' 1497 adet byte tipinde değişken tanımlanabilir.
YEDEK     VAR BYTE[96]
SUTUN1    VAR BYTE[96]
YEDEK1    VAR BYTE[96]
RAKAM     VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var BYTE
'''''''''''''''''''
yazi_reg  var byte
yeri      var byte
z         var byte
y         var byte 
A         VAR BYTE 
B         VAR BYTE
C         VAR BYTE 
D         VAR BYTE
E         var byte
bilgi     var byte
K         VAR BIT
u         var bit
'****************************************************************
gosub SENSORYAZ
GOSUB SENSOROKU
Low RTC_RST              ' RTC yi resetle
Low RTC_SCLK
'****************************************************************
clear
pause 250
'****************************************************************
HSEROUT ["KLAYVEDEN GiRiLEN HARFLERiN MATRiX DiSPLAYDE GOSTERiLMESi",13,10]
HSEROUT ["*********************************************************",13,10]
'****************************************************************
BASLA:
    IF PORTC.5=1 THEN ADRESS=0 : GOSUB KAYDET : GOTO BASLA1
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF A=0 THEN GOTO BASLA
    IF A>0 OR A<13 THEN GOSUB KONTROL2
GOTO BASLA
'****************************************************************
BASLA1:   
ADRESS=0
GOSUB OKU
FOR I=0 TO 95
    SUTUN[I]=YEDEK[I]
    SUTUN1[I]=YEDEK1[I]
NEXT
GOTO AA
''''''''''''''''''''
EE:
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
FOR I=0 TO 95
    SUTUN[I]=YEDEK[I]
    SUTUN1[I]=YEDEK1[I]
NEXT
''''''''''''''''''''   
AA:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
M=M+1
IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
    IF M<96 THEN GOSUB sola_kay : GOTO AA
        IF M=96 THEN GOTO EE
    IF M>96  AND M<192 THEN GOSUB saga_kay  : GOTO AA
        if M=192 then M=0
GOSUB TEMIZLE
GOTO SAAT_GOSTER
'****************************************************************
TEMIZLE:
FOR I=0 TO 95
SUTUN[I]=$FF
SUTUN1[I]=$FF
NEXT
GOSUB GOSTER
RETURN
'****************************************************************
KONTROL2:
IF K=1 THEN RETURN
gosub YERAL1
    for Z=0 TO 7
        GOSUB DATA_AL1_UST
            SUTUN[I]=VERI
        GOSUB DATA_AL1_ALT
            SUTUN1[I]=VERI   
            I=I+1
        yeri=yeri+1
    NEXT   
IF A=12 THEN a=0 : GOTO GOSTER2 
K=K+1
RETURN
'****************************************************************
GOSTER2:
    IF PORTC.5=1 THEN ADRESS=0 : GOSUB KAYDET : GOTO BASLA1
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : GOTO BASLA
FOR I=0 TO 95
    YEDEK[I]=SUTUN[I]
    YEDEK1[I]=SUTUN1[I]
NEXT
''''
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
GOTO GOSTER2
'****************************************************************
KAYDET: 
HIGH PORTE.0     
FOR I=0 TO 95
    adress=adress+1                           
    I2CWrite SDA,SCL,$A0,adress,[SUTUN[I]] ' Her adrese datayı yaz
    I2CWrite SDA,SCL,$A0,adress,[SUTUN1[I]]
    PAUSE 10
NEXT
M=0
LOW PORTE.0
return
''''''''''''''''''''''''
OKU:
HIGH PORTE.1
FOR I=0 TO 95
    ADRESS=ADRESS+1
    I2CRead SDA,SCL,$A0,adress,[SUTUN[I]] 'Her adresteki datayı oku B2 ye aktar
    I2CRead SDA,SCL,$A0,adress,[SUTUN1[I]]
NEXT
LOW PORTE.1
RETURN
'****************************************************************
sola_kay:
For I=0 To 94
    sutun[i]= sutun[i+1]
    sutun1[i]= sutun1[i+1]
   If i=95 Then sutun[95]=sutun[0]
   If i=95 Then sutun1[95]=sutun1[0]
Next i
pauseus 2000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
saga_kay:
For I=94 to 0 step -1
    sutun[i]= sutun[i-1]
    sutun1[i]= sutun1[i-1]
   If i=0 Then sutun[0]=sutun[95]
   If i=0 Then sutun1[0]=sutun1[95]
Next i 
pauseus 2000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
GECIKME:
FOR VERI=0 TO 1200
PAUSEUS 1000
NEXT
RETURN
'****************************************************************
GECIKME1:
FOR VERI=0 TO 300
PAUSEUS 1000
NEXT
RETURN
'****************************************************************   
kontrol:
if rtchour=24  then rtchour=0    : rtcdate=rtcdate+1 : rtcday=rtcday+1
if rtcmin=60   then rtcmin=0
  if rtchour=255 then rtchour=23 : rtcdate=rtcdate-1 : rtcday=rtcday-1
if rtcmin=255  then rtcmin=59
gosub zaman_yaz
gosub gecikme
gosub zaman_oku
return
'****************************************************************
SAAT_GOSTER1:
gosub temizle
'''''''''''''''''''''
bb:
FOR W=0 TO 5
GOSUB ZAMAN_OKU
'''''''''''''''''''''
if portc.0=1         then u=u+1             :gosub kontrol 
if u=0 and portc.1=1 then rtchour=rtchour+1 :gosub kontrol   
if u=0 and portc.2=1 then rtchour=rtchour-1 :gosub kontrol
if u=1 and portc.1=1 then rtcmin=rtcmin+1   :gosub kontrol
if u=1 and portc.2=1 then rtcmin=rtcmin-1   :gosub kontrol
'''''''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
        SUTUN1[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI     
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_UST
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
NEXT W
    IF PORTC.4=1 THEN gosub gecikme :GOSUB TEMIZLE :m=0: GOTO EE
goto bb
'****************************************************************
SAAT_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=115 THEN C=0:gosub cc:GOSUB TEMIZLE:GOTO ISI_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
        SUTUN1[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI   
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
             GOSUB DATA_AL_ust
        SUTUN[I]=VERI
             GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
             GOSUB DATA_AL_ust
        SUTUN[I]=VERI
             GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_ALT
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto SAAT_GOSTER
'********************************************************
ISI_GOSTER:
gosub SENSOROKU
GG:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
C=C+1
    iF C=100 THEN C=0: gosub cc :GOSUB TEMIZLE:GOTO TARIH_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for Z=0 to 23
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI       
        SUTUN[I+64]=VERI
            GOSUB DATA_AL_ust
        SUTUN1[I]=VERI       
        SUTUN1[I+64]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI   
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=223
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="C"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            GOSUB DATA_AL_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto GG
'****************************************************************
TARIH_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOSUB TEMIZLE:GOTO GUN_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
        SUTUN1[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcDATE dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcdate dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL_ust
        SUTUN[I]=VERI
            gosub data_al_alt
        SUTUN1[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
goto TARIH_GOSTER
'****************************************************************
GUN_GOSTER: 
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
c=c+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOSUB TEMIZLE:GOTO ee
GOSUB ZAMAN_OKU
gosub dd
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
GOTO GUN_GOSTER
'****************************************************************
cc:
E=E+1
If E<80                  Then gosub saga_kay    : GOTO goster1 
If E>80    and E<160     Then gosub sola_kay    : GOTO goster1
If E>160   then E=0
return
'****************************************************************
GOSTER1:
gosub zaman_oku
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
  SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
goto cc
'****************************************************************
GOSTER:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
  SHiftOut DTA,CLK,1,[SUTUN1[I+88],SUTUN1[I+80],SUTUN1[I+72],_
SUTUN1[I+64],SUTUN1[I+56],SUTUN1[I+48],SUTUN1[I+40],_
  SUTUN1[I+32],SUTUN1[I+24],SUTUN1[I+16],SUTUN1[I+8],SUTUN1[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        High STROBE  : pauseus 200 : Low STROBE
        X=X*2
        pause 3
      Next
RETURN
'****************************************************************
dd:
yazi_reg=0 : i=0
For W=0 To 11
    gosub yazi1 : yazi_reg=yazi_reg+1
        gosub YERAL1
    for z=0 to 7
        GOSUB DATA_AL1_UST
            SUTUN[I]=VERI
        GOSUB DATA_AL1_ALT
            SUTUN1[I]=VERI
                I=I+1
            yeri=yeri+1
        next
    next
     gosub goster
return
'****************************************************************
yazi1:
if rtcday=1 then LookUp yazi_reg,["   PAZAR    "],bilgi
if rtcday=2 then LookUp yazi_reg,[" PAZARTESi  "],bilgi
if rtcday=3 then LookUp yazi_reg,["    SALI    "],bilgi
if rtcday=4 then LookUp yazi_reg,["  CARSAMBA  "],bilgi
if rtcday=5 then LookUp yazi_reg,["  PERSEMBE  "],bilgi
if rtcday=6 then LookUp yazi_reg,["    CUMA    "],bilgi
if rtcday=7 then LookUp yazi_reg,[" CUMARTESi  "],bilgi
Return
'****************************************************************     
YERAL:
select case temp
    case 0   : yeri=0   : return
    case 1   : yeri=8   : return
    case 2   : yeri=16  : return
    case 3   : yeri=24  : return
    case 4   : yeri=32  : return
    case 5   : yeri=40  : return
    case 6   : yeri=48  : return
    case 7   : yeri=56  : return
    case 8   : yeri=64  : return
    case 9   : yeri=72  : return
    case 223 : yeri=80  : return
    case "C" : yeri=88  : return
    case ":" : yeri=96  : return
    case "/" : yeri=104 : return
    case " " : yeri=112 : return
end select
return
'****************************************************************
data_al_ust:
    lookup yeri,[$03,$01,$F9,$F9,$F9,$01,$03,$FF,_     '0
                 $F7,$F3,$01,$01,$01,$FF,$FF,$FF,_     '1
                 $F3,$F1,$F9,$F9,$79,$01,$83,$FF,_     '2
                 $F3,$F1,$79,$79,$79,$01,$83,$FF,_     '3
                 $1F,$0F,$87,$C3,$01,$01,$FF,$FF,_     '4
                 $01,$01,$39,$39,$39,$39,$79,$FF,_     '5
                 $1F,$0F,$07,$63,$71,$79,$FD,$FF,_     '6
                 $F1,$F1,$F9,$F9,$79,$01,$81,$FF,_     '7
                 $83,$01,$79,$79,$79,$01,$83,$FF,_     '8
                 $03,$01,$79,$79,$79,$01,$01,$FF,_     '9
                 $FF,$FF,$C7,$83,$93,$83,$C7,$FF,_     'Derece
                 $03,$01,$F9,$F9,$F9,$F1,$F3,$FF,_     'C
                 $FF,$FF,$8F,$8F,$8F,$8F,$FF,$FF,_     ':
                 $FF,$FF,$7F,$3F,$1F,$0F,$87,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
data_al_alt:
    lookup yeri,[$C0,$80,$9F,$9F,$9F,$80,$C0,$FF,_     '0
                 $9F,$9F,$80,$80,$80,$9F,$9F,$FF,_     '1
                 $87,$83,$99,$9C,$9E,$8F,$8F,$FF,_     '2
                 $CF,$8F,$9E,$9E,$9E,$80,$C1,$FF,_     '3
                 $F8,$F8,$F8,$80,$80,$80,$FC,$FF,_     '4
                 $CF,$8E,$9E,$9E,$9E,$80,$C0,$FF,_     '5
                 $C0,$80,$80,$9C,$9C,$80,$C1,$FF,_     '6
                 $FF,$FF,$81,$80,$FE,$FF,$FF,$FF,_     '7
                 $C1,$80,$9E,$9E,$9E,$80,$C1,$FF,_     '8
                 $9F,$9E,$9E,$9E,$9E,$80,$80,$FF,_     '9
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,_     'Derece
                 $C0,$80,$9F,$9F,$9F,$8F,$CF,$FF,_     'C
                 $FF,$FF,$F1,$F1,$F1,$FF,$FF,$FF,_     ':
                 $E1,$F0,$F8,$FC,$FE,$FF,$FF,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
YERAL1:
select case bilgi
    case "A" : yeri=0   : return
    case "B" : yeri=8   : return
    case "C" : yeri=16  : return
    case "D" : yeri=24  : return
    case "E" : yeri=32  : return
    case "F" : yeri=40  : return
    case "G" : yeri=48  : return
    case "H" : yeri=56  : return
    case "I" : yeri=64  : return
    case "i" : yeri=72  : return
    case "J" : yeri=80  : return
    case "K" : yeri=88  : return
    case "L" : yeri=96  : return
    case "M" : yeri=104 : return
    case "N" : yeri=112 : return
    case "O" : yeri=120 : return
    case "P" : yeri=128 : return
    case "R" : yeri=136 : return
    case "S" : yeri=144 : return
    case "T" : yeri=152 : return
    case "U" : yeri=160 : return
    case "V" : yeri=168 : return
    case "Y" : yeri=176 : return
    case "Z" : yeri=184 : return
    CASE "." : YERI=192 : RETURN
    case "W" : yeri=200 : return
    case "Q" : yeri=208 : return
    case "/" : yeri=216 : return 
    case ":" : yeri=224 : return
    case "_" : yeri=232 : return 
    case "X" : yeri=240 : return
    case " " : yeri=248 : return     
end select
return
'****************************************************************
data_al1_ust:
    LookUp yeri,[$03,$01,$79,$79,$79,$01,$03,$FF,_     ;  A
                 $01,$01,$79,$79,$79,$01,$83,$FF,_     ;  B
                 $03,$01,$F9,$F9,$F9,$F1,$F3,$FF,_     ;  C
                 $01,$01,$F9,$F9,$F9,$01,$03,$FF,_     ;  D
                 $01,$01,$79,$79,$79,$31,$31,$FF,_     ;  E
                 $01,$01,$79,$79,$39,$31,$F1,$FF,_     ;  F
                 $01,$01,$F9,$79,$79,$79,$79,$FF,_     ;  G
                 $01,$01,$3F,$3F,$3F,$01,$01,$FF,_     ;  H
                 $F9,$F9,$01,$01,$01,$F9,$F9,$FF,_     ;  I
                 $CF,$CF,$09,$09,$09,$CF,$CF,$FF,_     ;  i
                 $CF,$CF,$09,$09,$09,$CF,$CF,$FF,_     ;  J
                 $01,$01,$3F,$1F,$8F,$C1,$E1,$FF,_     ;  K
                 $01,$01,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                 $01,$01,$3F,$7F,$3F,$01,$01,$FF,_     ;  M
                 $01,$01,$7F,$FF,$FF,$01,$01,$FF,_     ;  N
                 $03,$01,$F9,$F9,$F9,$01,$03,$FF,_     ;  O
                 $01,$01,$79,$79,$79,$01,$83,$FF,_     ;  P
                 $01,$01,$79,$79,$79,$01,$03,$FF,_     ;  R
                 $83,$01,$79,$79,$79,$61,$E3,$FF,_     ;  S
                 $E1,$F9,$01,$01,$01,$F9,$E1,$FF,_     ;  T
                 $01,$01,$FF,$FF,$FF,$01,$01,$FF,_     ;  U
                 $01,$01,$FF,$FF,$FF,$01,$01,$FF,_     ;  V
                 $81,$01,$7F,$7F,$7F,$01,$81,$FF,_     ;  Y                     
                 $E1,$E1,$71,$31,$01,$81,$C1,$FF,_     ;  Z
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,_     ;  .
                 $01,$01,$FF,$7F,$FF,$01,$01,$FF,_     ;  W
                 $03,$01,$F9,$F9,$F9,$01,$03,$FF,_     ;  Q
                 $FF,$FF,$7F,$3F,$1F,$0F,$87,$FF,_     ;  /
                 $FF,$FF,$8F,$8F,$8F,$8F,$FF,$FF,_     ;  :
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,_     ;  _
                 $C1,$81,$3F,$7F,$3F,$81,$C1,$FF,_     ;  X
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
data_al1_alt:
    LookUp yeri,[$80,$80,$FC,$FC,$FC,$80,$80,$FF,_     ;  A
                 $80,$80,$9E,$9E,$9E,$80,$C1,$FF,_     ;  B
                 $C0,$80,$9F,$9F,$9F,$87,$C7,$FF,_     ;  C
                 $80,$80,$9F,$9F,$9F,$80,$C0,$FF,_     ;  D
                 $80,$80,$9E,$9E,$9E,$8C,$8C,$FF,_     ;  E
                 $80,$80,$FE,$FE,$FC,$FC,$FF,$FF,_     ;  F
                 $80,$80,$9F,$9E,$9E,$80,$80,$FF,_     ;  G
                 $80,$80,$FC,$FC,$FC,$80,$80,$FF,_     ;  H
                 $9F,$9F,$80,$80,$80,$9F,$9F,$FF,_     ;  I
                 $9F,$9F,$80,$80,$80,$9F,$9F,$FF,_     ;  i
                 $87,$9F,$80,$80,$80,$FF,$FF,$FF,_     ;  J
                 $80,$80,$FC,$FC,$F8,$81,$83,$FF,_     ;  K
                 $80,$80,$8F,$8F,$8F,$8F,$8F,$FF,_     ;  L
                 $80,$80,$FF,$FE,$FF,$80,$80,$FF,_     ;  M
                 $80,$80,$FC,$F8,$F1,$80,$80,$FF,_     ;  N
                 $C0,$80,$9F,$9F,$9F,$80,$C0,$FF,_     ;  O
                 $80,$80,$FE,$FE,$FE,$FE,$FF,$FF,_     ;  P
                 $80,$80,$F8,$F0,$82,$86,$8F,$FF,_     ;  R
                 $C7,$86,$9E,$9E,$9E,$80,$C0,$FF,_     ;  S
                 $FF,$FF,$80,$80,$80,$FF,$FF,$FF,_     ;  T
                 $C0,$80,$9F,$9F,$9F,$80,$C0,$FF,_     ;  U
                 $F0,$E0,$CF,$9F,$CF,$E0,$F0,$FF,_     ;  V
                 $FF,$FF,$80,$80,$80,$FF,$FF,$FF,_     ;  Y                     
                 $81,$80,$80,$8E,$8F,$83,$83,$FF,_     ;  Z
                 $FF,$FF,$8F,$8F,$8F,$FF,$FF,$FF,_     ;  .
                 $80,$80,$FC,$FE,$FC,$80,$80,$FF,_     ;  W
                 $C0,$80,$9F,$91,$83,$80,$C0,$FF,_     ;  Q
                 $E1,$F0,$F8,$FC,$FE,$FF,$FF,$FF,_     ;  /
                 $FF,$FF,$F1,$F1,$F1,$FF,$FF,$FF,_     ;  :
                 $8F,$8F,$8F,$8F,$8F,$8F,$8F,$FF,_     ;  _
                 $83,$81,$FC,$FE,$FC,$81,$83,$FF,_     ;  X
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
'***Sensör_Oku***************************************************
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
'           OWIN    Comm_Pin, 4, [TEMP]    ' Busy değerini oku
'           IF      TEMP = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'****************************************************************           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
'****************************************************************             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       ham=($ffff-ham)+1
    endif
    ISI = Ham*10/16
GEC:
    FLOAT = (ISI //10)
    ISI=ISI/10
    RETURN                     
'****************************************************************
'****************************************************************
'***********Zaman Oku***********
ZAMAN_OKU:
         High RTC_RST
         SHiftOut RTC_DTA, RTC_SCLK, 0, [$BF]
         SHiftIn RTC_DTA, RTC_SCLK, 1, [rtcsec, rtcmin, rtchour,rtcdate , rtcmonth,rtcday,rtcyear, MEM]
         Low RTC_RST
         MEM=rtcsec  : GoSub CEVIR:rtcsec=SAYI 
         MEM=rtcmin  : GoSub CEVIR:rtcmin=SAYI
         MEM=rtchour : GoSub CEVIR:rtchour=SAYI
         MEM=rtcdate : GoSub CEVIR:rtcdate=SAYI
         MEM=rtcmonth: GoSub CEVIR:rtcmonth=SAYI
         MEM=rtcyear : GoSub CEVIR:rtcyear=SAYI
         MEM=rtcday  : GoSub CEVIR: rtcday=SAYI       
         Return
'***********Zaman Yaz***********
ZAMAN_YAZ:
    MEM=rtcsec   : GoSub TERSCEVIR :rtcsec=SAYI
    MEM=rtcmin   : GoSub TERSCEVIR :rtcmin=SAYI
    MEM=rtchour  : GoSub TERSCEVIR :rtchour=SAYI
    MEM=rtcdate  : GoSub TERSCEVIR :rtcdate=SAYI
    MEM=rtcmonth : GoSub TERSCEVIR :rtcmonth=SAYI
    MEM=rtcyear  : GoSub TERSCEVIR :rtcyear=SAYI
    MEM=rtcday   : GoSub TERSCEVIR :rtcday=SAYI
       
    High  RTC_RST
    SHiftOut RTC_DTA, RTC_SCLK, 0, [$8E, 0]
    Low RTC_RST:pause 1
    High RTC_RST         
    SHiftOut  RTC_DTA, RTC_SCLK, 0, [$BE, rtcsec, rtcmin, rtchour,rtcdate , rtcmonth, rtcday, rtcyear, 0]  'YAZ
    Low RTC_RST
    pause 10
Return
'***********Çevir***********               
CEVIR:
    ONLAR=MEM & %01110000
    ONLAR=ONLAR>>4
    BIRLER=MEM & %00001111
    SAYI=ONLAR*10+BIRLER
RETURN 
'***********Ters Çevir***********
TERSCEVIR:               
    ONLAR=MEM DIG 1
    ONLAR=ONLAR<<4
    BIRLER=MEM DIG 0
    SAYI=ONLAR+BIRLER
RETURN
'****************************************************************
Disable
KESME:
A=A+1 : K=0
IF A=1 THEN
    HSERIN [WAIT("SIFRE"),BILGI] 
ELSE
    HSERIN [BILGI]
ENDIF
HSEROUT [BILGI,10]
  Resume
ENABLE
Return   
'****************************************************************
end




meyer

#73
 İyi günler arkadaşlar,
-Programa yeni bir özellik daha eklemeye çalıştım..Özellik kısaca şöyle..
Programın bir önceki versiyonunda virtual terminalden "SIFRE" yazısını girdikten sonra 12 karakter yazımızı girip,kaydet diyorduk..Bu özellik artık şöyle ;
  "SIFRE"yazısını girdikten sonra max. 90 karaktere kadar yazımızı virtual terminal'e yazıyoruz..Yazımızı enter tuşuna basarak bitiriyoruz.Virtual terminale girdiğimiz her karakter eeproma kaydediliyor  ve entere bastıktan sonra bu bilgileri okuyup ekrana basıyoruz..
-Daha sonra program,yazdığımız karakterleri sola doğru kaydırıp,saat,sıcaklık,tarih ve gün bilgisini ekrana basıyor..
-Karakterin max.90 olması da 18f452'nin eepromu ile alakalı..İnternette max.255 karakter olan kayan yazılar var ama nasıl yapıldıklarını henüz anlayamadım..Bilen varsa bilgilerini esirgemesin lütfen..
-Bu özelliği yazarken fikirlerini esirgemeyen "BAHAR"nickli üyemize de teşekkür ederim..
-Devre ile ilgili dosyalar da ektedir arkadaşlar..İyi günler...

'****************************************************************
'*  Name    : MATRIX_PANO_SAAT_ISI_TARIH_GUN_KAYAN_YAZI.BAS     *
'*  Author  : [HAKAN_ÖZKAN]                                     *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 08.01.2012                                        *
'*  Version : 3.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
DEFINE I2C_SLOW 1
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
'********************************************************
INTCON2.7=0   ' PORTB Pull-up Enable bit
INTCON.7 =1   ' GIE : Global Interrupt Enable
INTCON.6 =1   ' PEIE: Peripheral Interrupt Enable
PIE1.5   =1   ' RCIE: USART Receive Interrupt Enable
ADCON0   =0
ADCON1   =7
'****************************************************************
On Interrupt GoTo KESME
'****************************************************************
DEFINE HSERIAL_BAUD  2400
DEFINE HSERIAL_RCSTA %10010000
DEFINE HSERIAL_TXSTA %00100000
DEFINE HSERIAL_CLEAR = On
'****************************************************************
TRISA=255 : TRISB=0 : TRISD=0 : TRISE=0  : TRISC=%10110111   
PORTA=0   : PORTB=0 : PORTD=0 : PORTE=0  : PORTC=0           
'74HC595*********************************************************
Symbol CLK1     =PORTB.0
Symbol DTA1     =PORTB.1
Symbol STROBE1  =PORTB.2
'DS18B20*********************************************************
SYMBOL COMM_PIN =PORTC.3
'DS1302**********************************************************
symbol  RTC_RST =PORTB.5                'RTC nin bağlandığı portlar
symbol  RTC_SCLK=PORTB.6
symbol  RTC_DTA =PORTB.7
'24C256**********************************************************
SCL      VAR     PORTB.3                ' Clock pin 
SDA      VAR     PORTB.4                ' Data pin                 
'24C256_DEGISKENLERI*********************************************
adress   VAR     WORD                   ' Adres
B1       VAR     BYTE                   ' Data1
B2       VAR     Byte                   ' Data2
'****************************************************************
NEGAT_ISI CON 1                         ' Negatif_Cold = 1
'****************************************************************
TUS         VAR BYTE
T           VAR Byte
HAM         VAR WORD
ISI         var WORD
rtcsec      VAR BYTE
rtcmin      VAR BYTE
rtchour     VAR BYTE
rtcyear     VAR BYTE
rtcmonth    VAR BYTE
rtcday      VAR BYTE
rtcdate     VAR BYTE
TEMP        VAR BYTE
VERI        VAR BYTE
SAYI        VAR BYTE 
SIGN        VAR BYTE
FLOAT       var BYTE
mem         var byte
BIRLER      VAR BYTE
ONLAR       VAR BYTE
SIGN_BITI VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'****************************************************************
SUTUN     var Byte[728]   ' 1497 adet byte tipinde değişken tanımlanabilir.
YEDEK     VAR BYTE[728]
RAKAM     VAR BYTE
ARA       VAR BYTE
I         var WORD
X         var Byte
W         var Byte
M         var WORD
'''''''''''''''''''
yazi_reg  var byte
yeri      var byte
z         var byte
y         var byte 
A         VAR BYTE 
B         VAR BYTE
C         VAR BYTE 
D         VAR BYTE
E         var byte
bilgi     var byte
L         VAR BYTE
K         VAR BIT
u         var bit
V         VAR BIT
'****************************************************************
gosub SENSORYAZ
GOSUB SENSOROKU
Low RTC_RST              ' RTC yi resetle
Low RTC_SCLK
'****************************************************************
clear
pause 250
'****************************************************************
HSEROUT ["KLAYVEDEN GiRiLEN HARFLERiN MATRiX DiSPLAYDE GOSTERiLMESi",13,10]
HSEROUT ["*********************************************************",13,10]
'****************************************************************
GOSUB TEMIZLE : I=0
'****************************************************************
BASLA:
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : a=0 : M=0 : GOTO BASLA
    IF A=0 THEN GOTO BASLA
    IF V=1 THEN GOTO KONTROL2
GOTO BASLA
'****************************************************************
BASLA1:   
ADRESS=0
GOTO AA
''''''''''''''''''''
EE:
    IF PORTC.0=1 THEN I=0 : a=0 : GOSUB TEMIZLE : GOTO BASLA
FOR I=0 TO (A*8)-1
    SUTUN[I]=YEDEK[I]
NEXT
''''''''''''''''''''
AA:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause L
      Next
M=M+1
IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : a=0 : M=0 :  GOTO BASLA
    IF M<(A*8) THEN GOSUB sola_kay1 : GOTO AA
    if M=(A*8) then M=0
GOSUB TEMIZLE
GOTO SAAT_GOSTER
'****************************************************************
TEMIZLE:
FOR I=0 TO 95
SUTUN[I]=$FF
NEXT
GOSUB GOSTER
RETURN
'****************************************************************
KONTROL2:
IF K=1 THEN RETURN
HIGH PORTE.1
adress=0
FOR X=0 TO (A-2)
''
    I2CRead SDA,SCL,$A0,adress,[bilgi] 'Her adresteki datayı oku B2 ye aktar
    ADRESS=ADRESS+1
''
gosub YERAL1
    for Z=0 TO 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI   
            I=I+1
        yeri=yeri+1
    NEXT   
next
    FOR I=0 TO ((A*8)-1)
        YEDEK[I]=SUTUN[I]
    NEXT 
K=K+1
adress=0
LOW PORTE.1 : low porte.2       
GOTO GOSTER2
'****************************************************************
GOSTER2:
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : a=0 : M=0 :  GOTO BASLA
''''
    FOR Z=0 TO 2
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 1
      Next
    NEXT
GOTO BASLA1     
'****************************************************************
sola_kay1:
For I=0 To (A*8)-2
    sutun[i]= sutun[i+1]
   If i=((A*8)-1) Then sutun[(A*8)-1]=sutun[0]
Next i
pauseus 1000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
sola_kay:
For I=0 To 94
    sutun[i]= sutun[i+1]
   If i=95 Then sutun[95]=sutun[0]
Next i
pauseus 1000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
saga_kay:
For I=94 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[95]
Next i
pauseus 10000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : a=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
asagi_kay:
for I=0 to 95
   ARA=SUTUN[I]
   z=ARA.7
FOR X=7 to 1 STEP -1
   ARA.0[x]=ARA.0[X-1]
NEXT
   ara.0=Z
   sutun[I]=ARA
next
pauseus 3500
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : a=0 : GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
yukari_kay:
FOR I=0 to 95
   ARA=SUTUN[I]
   z=ARA.0
FOR X=0 to 6
   ARA.0[X]=ARA.0[X+1]
NEXT
   ARA.7=Z
   SUTUN[I]=ARA
NEXT
pauseus 5000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
GECIKME:
FOR VERI=0 TO 1200
PAUSEUS 1000
NEXT
RETURN
'****************************************************************
GECIKME1:
FOR VERI=0 TO 300
PAUSEUS 1000
NEXT
RETURN
'****************************************************************   
kontrol:
if rtchour=24  then rtchour=0    : rtcdate=rtcdate+1 : rtcday=rtcday+1
if rtcmin=60   then rtcmin=0
  if rtchour=255 then rtchour=23 : rtcdate=rtcdate-1 : rtcday=rtcday-1
if rtcmin=255  then rtcmin=59
gosub zaman_yaz
gosub gecikme
gosub zaman_oku
return
'****************************************************************
SAAT_GOSTER1:
gosub temizle
'''''''''''''''''''''
bb:
FOR W=0 TO 5
GOSUB ZAMAN_OKU
'''''''''''''''''''''
if portc.0=1         then u=u+1             :gosub kontrol 
if u=0 and portc.1=1 then rtchour=rtchour+1 :gosub kontrol   
if u=0 and portc.2=1 then rtchour=rtchour-1 :gosub kontrol
if u=1 and portc.1=1 then rtcmin=rtcmin+1   :gosub kontrol
if u=1 and portc.2=1 then rtcmin=rtcmin-1   :gosub kontrol
'''''''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
NEXT W
    IF PORTC.4=1 THEN gosub gecikme :GOSUB TEMIZLE :m=0: GOTO EE
goto bb
'****************************************************************
SAAT_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=115 THEN C=0:gosub cc:GOTO ISI_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
goto SAAT_GOSTER
'********************************************************
ISI_GOSTER:
gosub SENSOROKU
''''''
FF:
FOR W=0 TO 9
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
C=C+1
    iF C=100 THEN C=0: gosub cc :GOTO TARIH_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for Z=0 to 23
            GOSUB DATA_AL
        SUTUN[I]=VERI       
        SUTUN[I+64]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=223
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="C"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
NEXT
goto ISI_GOSTER
'****************************************************************
TARIH_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOTO GUN_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcDATE dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcdate dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
goto TARIH_GOSTER
'****************************************************************
GUN_GOSTER: 
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
c=c+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOSUB TEMIZLE:GOTO ee
GOSUB ZAMAN_OKU
gosub dd
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
GOTO GUN_GOSTER
'****************************************************************
cc:
E=E+1
If E<80                  Then gosub saga_kay    : GOTO goster1 
If E>80    and E<160     Then gosub sola_kay    : GOTO goster1
If E>160   and E<169     Then gosub asagi_kay   : GOTO goster1
if E>169   and E<178     then gosub yukari_kay  : GOTO goster1 
If E>178   then E=0
return
'****************************************************************
GOSTER1:
gosub zaman_oku
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
goto cc
'****************************************************************
GOSTER:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
RETURN
'****************************************************************
dd:
yazi_reg=0 : i=0
For W=0 To 11
    gosub yazi1 : yazi_reg=yazi_reg+1
        gosub YERAL1
    for z=0 to 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI
                I=I+1
            yeri=yeri+1
        next
    next
     gosub goster
return
'****************************************************************
yazi1:
if rtcday=1 then LookUp yazi_reg,["   PAZAR    "],bilgi
if rtcday=2 then LookUp yazi_reg,[" PAZARTESi  "],bilgi
if rtcday=3 then LookUp yazi_reg,["    SALI    "],bilgi
if rtcday=4 then LookUp yazi_reg,["  CARSAMBA  "],bilgi
if rtcday=5 then LookUp yazi_reg,["  PERSEMBE  "],bilgi
if rtcday=6 then LookUp yazi_reg,["    CUMA    "],bilgi
if rtcday=7 then LookUp yazi_reg,[" CUMARTESi  "],bilgi
Return
'****************************************************************     
YERAL:
select case temp
    case 0   : yeri=0   : return
    case 1   : yeri=8   : return
    case 2   : yeri=16  : return
    case 3   : yeri=24  : return
    case 4   : yeri=32  : return
    case 5   : yeri=40  : return
    case 6   : yeri=48  : return
    case 7   : yeri=56  : return
    case 8   : yeri=64  : return
    case 9   : yeri=72  : return
    case 223 : yeri=80  : return
    case "C" : yeri=88  : return
    case ":" : yeri=96  : return
    case "/" : yeri=104 : return
    case " " : yeri=112 : return
end select
return
'****************************************************************
data_al:
    lookup yeri,[$FF,$C1,$80,$A6,$B2,$80,$C1,$FF,_     '0
                 $FF,$BF,$BD,$80,$80,$BF,$BF,$FF,_     '1
                 $FF,$9D,$8C,$A6,$B2,$98,$9D,$FF,_     '2
                 $FF,$DD,$9C,$B6,$B6,$80,$C9,$FF,_     '3
                 $FF,$E7,$E3,$E9,$80,$80,$E7,$FF,_     '4
                 $FF,$D8,$98,$BA,$BA,$82,$C6,$FF,_     '5
                 $FF,$C3,$81,$B4,$B6,$86,$CF,$FF,_     '6
                 $FF,$FC,$FC,$8E,$86,$F0,$F8,$FF,_     '7
                 $FF,$C9,$80,$B6,$B6,$80,$C9,$FF,_     '8
                 $FF,$F9,$B0,$B6,$96,$C0,$E1,$FF,_     '9
                 $FF,$FF,$F9,$F0,$F6,$F0,$F9,$FF,_     'Derece
                 $FF,$C1,$80,$BE,$BE,$BE,$DD,$FF,_     'C
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ':
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
YERAL1:
select case bilgi
    case "A" : yeri=0   : return
    case "B" : yeri=8   : return
    case "C" : yeri=16  : return
    case "D" : yeri=24  : return
    case "E" : yeri=32  : return
    case "F" : yeri=40  : return
    case "G" : yeri=48  : return
    case "H" : yeri=56  : return
    case "I" : yeri=64  : return
    case "i" : yeri=72  : return
    case "J" : yeri=80  : return
    case "K" : yeri=88  : return
    case "L" : yeri=96  : return
    case "M" : yeri=104 : return
    case "N" : yeri=112 : return
    case "O" : yeri=120 : return
    case "P" : yeri=128 : return
    case "R" : yeri=136 : return
    case "S" : yeri=144 : return
    case "T" : yeri=152 : return
    case "U" : yeri=160 : return
    case "V" : yeri=168 : return
    case "Y" : yeri=176 : return
    case "Z" : yeri=184 : return
    CASE "." : YERI=192 : RETURN
    case "W" : yeri=200 : return
    case "Q" : yeri=208 : return
    case "/" : yeri=216 : return 
    case ":" : yeri=224 : return
    case "-" : yeri=232 : return 
    case " " : yeri=240 : return     
end select
return
'****************************************************************
data_al1:
    LookUp yeri,[$FF,$81,$F6,$F6,$F6,$F6,$81,$FF,_     ;  A
                 $FF,$80,$B6,$B6,$B6,$B6,$C9,$FF,_     ;  B
                 $FF,$C1,$BE,$BE,$BE,$BE,$DD,$FF,_     ;  C
                 $FF,$80,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  D
                 $FF,$80,$B6,$B6,$B6,$B6,$BE,$FF,_     ;  E
                 $FF,$80,$F6,$F6,$F6,$F6,$FE,$FF,_     ;  F
                 $FF,$80,$BE,$B6,$B6,$B6,$86,$FF,_     ;  G
                 $FF,$80,$F7,$F7,$F7,$F7,$80,$FF,_     ;  H
                 $FF,$BE,$BE,$80,$80,$BE,$BE,$FF,_     ;  I
                 $FF,$BF,$BB,$82,$82,$BB,$BF,$FF,_     ;  i
                 $FF,$CE,$BE,$80,$80,$FE,$FF,$FF,_     ;  J
                 $FF,$80,$F7,$EB,$DD,$BE,$FF,$FF,_     ;  K
                 $FF,$80,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                 $FF,$80,$FB,$F7,$F7,$FB,$80,$FF,_     ;  M
                 $FF,$80,$FB,$F7,$EF,$DF,$80,$FF,_     ;  N
                 $FF,$C1,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  O
                 $FF,$80,$F6,$F6,$F6,$F6,$F9,$FF,_     ;  P
                 $FF,$80,$F6,$F6,$E6,$D6,$B9,$FF,_     ;  R
                 $FF,$D9,$B6,$B6,$B6,$B6,$CD,$FF,_     ;  S
                 $FF,$FE,$FE,$80,$80,$FE,$FE,$FF,_     ;  T
                 $FF,$C0,$BF,$BF,$BF,$BF,$C0,$FF,_     ;  U
                 $FF,$E0,$DF,$BF,$BF,$DF,$E0,$FF,_     ;  V
                 $FF,$FC,$FB,$87,$87,$FB,$FC,$FF,_     ;  Y                     
                 $FF,$9E,$AE,$B6,$BA,$BC,$BE,$FF,_     ;  Z
                 $FF,$FF,$FF,$9F,$9F,$FF,$FF,$FF,_     ;  .
                 $FF,$80,$DF,$EF,$EF,$DF,$80,$FF,_     ;  W
                 $FF,$C1,$BE,$BE,$AE,$9E,$81,$FF,_     ;  Q
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     ;  /
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ;  :
                 $FF,$E7,$E7,$E7,$E7,$E7,$E7,$FF,_     ;  _
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
'***Sensör_Oku***************************************************
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
'           OWIN    Comm_Pin, 4, [TEMP]    ' Busy değerini oku
'           IF      TEMP = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'****************************************************************           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
'****************************************************************             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       ham=($ffff-ham)+1
    endif
    ISI = Ham*10/16
GEC:
    FLOAT = (ISI //10)
    ISI=ISI/10
    RETURN                     
'****************************************************************
'****************************************************************
'***********Zaman Oku***********
ZAMAN_OKU:
         High RTC_RST
         SHiftOut RTC_DTA, RTC_SCLK, 0, [$BF]
         SHiftIn RTC_DTA, RTC_SCLK, 1, [rtcsec, rtcmin, rtchour,rtcdate , rtcmonth,rtcday,rtcyear, MEM]
         Low RTC_RST
         MEM=rtcsec  : GoSub CEVIR:rtcsec=SAYI 
         MEM=rtcmin  : GoSub CEVIR:rtcmin=SAYI
         MEM=rtchour : GoSub CEVIR:rtchour=SAYI
         MEM=rtcdate : GoSub CEVIR:rtcdate=SAYI
         MEM=rtcmonth: GoSub CEVIR:rtcmonth=SAYI
         MEM=rtcyear : GoSub CEVIR:rtcyear=SAYI
         MEM=rtcday  : GoSub CEVIR: rtcday=SAYI       
         Return
'***********Zaman Yaz***********
ZAMAN_YAZ:
    MEM=rtcsec   : GoSub TERSCEVIR :rtcsec=SAYI
    MEM=rtcmin   : GoSub TERSCEVIR :rtcmin=SAYI
    MEM=rtchour  : GoSub TERSCEVIR :rtchour=SAYI
    MEM=rtcdate  : GoSub TERSCEVIR :rtcdate=SAYI
    MEM=rtcmonth : GoSub TERSCEVIR :rtcmonth=SAYI
    MEM=rtcyear  : GoSub TERSCEVIR :rtcyear=SAYI
    MEM=rtcday   : GoSub TERSCEVIR :rtcday=SAYI
       
    High  RTC_RST
    SHiftOut RTC_DTA, RTC_SCLK, 0, [$8E, 0]
    Low RTC_RST:pause 1
    High RTC_RST         
    SHiftOut  RTC_DTA, RTC_SCLK, 0, [$BE, rtcsec, rtcmin, rtchour,rtcdate , rtcmonth, rtcday, rtcyear, 0]  'YAZ
    Low RTC_RST
    pause 10
Return
'***********Çevir***********               
CEVIR:
    ONLAR=MEM & %01110000
    ONLAR=ONLAR>>4
    BIRLER=MEM & %00001111
    SAYI=ONLAR*10+BIRLER
RETURN 
'***********Ters Çevir***********
TERSCEVIR:               
    ONLAR=MEM DIG 1
    ONLAR=ONLAR<<4
    BIRLER=MEM DIG 0
    SAYI=ONLAR+BIRLER
RETURN
'****************************************************************
Disable
KESME:
A=A+1 : K=0 : V=0
'''''
    IF A=1 THEN
        HSERIN [WAIT("SIFRE"),BILGI]
            I2CWrite SDA,SCL,$A0,adress,[bilgi] ' Her adrese datayı yaz
            adress=adress+1
        PAUSE 10
    ELSE
        HSERIN [BILGI]
            I2CWrite SDA,SCL,$A0,adress,[bilgi] ' Her adrese datayı yaz
            adress=adress+1
        PAUSE 10
    ENDIF
'''''
        IF adress>89 then high porte.2      ' Uyarı ledini yak
        IF adress<15                THEN L=4
        IF adress<15 AND adress<30  THEN L=3
        IF adress>30 AND adress<60  THEN L=2
        if adress>60 AND adress<100 THEN L=1
'''''
HSEROUT [BILGI,10]
    IF BILGI=13 THEN V=1
PIR1.5=0       ' RCIF : USART Receive Interrupt Flag bit
  Resume
ENABLE
Return   
'****************************************************************
end




meyer

 İyi günler arkadaşlar,
Programla ilgili 1-2 düzenleme daha yapmaya çalıştım..
-"SIFRE"yazısını girdikten sonra max.90 karaktere kadar yazımı girebiliyoruz..Uyarı ledi yandıktan sonra da bir boşluk bırakıp enter'e basıyoruz..Daha sonra girdiğimiz karakterler eepromdan okunup displayde gösterilmeye başlıyor..


'****************************************************************
'*  Name    : MATRIX_PANO_SAAT_ISI_TARIH_GUN_KAYAN_YAZI.BAS     *
'*  Author  : [HAKAN_ÖZKAN]                                     *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 08.01.2012                                        *
'*  Version : 3.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
DEFINE I2C_SLOW 1
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
'********************************************************
INTCON2.7=0   ' PORTB Pull-up Enable bit
INTCON.7 =1   ' GIE : Global Interrupt Enable
INTCON.6 =1   ' PEIE: Peripheral Interrupt Enable
PIE1.5   =1   ' RCIE: USART Receive Interrupt Enable
ADCON0   =0
ADCON1   =7
'****************************************************************
On Interrupt GoTo KESME
'****************************************************************
DEFINE HSERIAL_BAUD  2400
DEFINE HSERIAL_RCSTA %10010000
DEFINE HSERIAL_TXSTA %00100000
DEFINE HSERIAL_CLEAR = On
'****************************************************************
TRISA=255 : TRISB=0 : TRISD=0 : TRISE=0  : TRISC=%10110111   
PORTA=0   : PORTB=0 : PORTD=0 : PORTE=0  : PORTC=0           
'74HC595*********************************************************
Symbol CLK1     =PORTB.0
Symbol DTA1     =PORTB.1
Symbol STROBE1  =PORTB.2
'DS18B20*********************************************************
SYMBOL COMM_PIN =PORTC.3
'DS1302**********************************************************
symbol  RTC_RST =PORTB.5                'RTC nin bağlandığı portlar
symbol  RTC_SCLK=PORTB.6
symbol  RTC_DTA =PORTB.7
'24C256**********************************************************
SCL      VAR     PORTB.3                ' Clock pin 
SDA      VAR     PORTB.4                ' Data pin                 
'24C256_DEGISKENLERI*********************************************
adress   VAR     WORD                   ' Adres
B1       VAR     BYTE                   ' Data1
B2       VAR     Byte                   ' Data2
'****************************************************************
NEGAT_ISI CON 1                         ' Negatif_Cold = 1
'****************************************************************
TUS         VAR BYTE
T           VAR Byte
HAM         VAR WORD
ISI         var WORD
rtcsec      VAR BYTE
rtcmin      VAR BYTE
rtchour     VAR BYTE
rtcyear     VAR BYTE
rtcmonth    VAR BYTE
rtcday      VAR BYTE
rtcdate     VAR BYTE
TEMP        VAR BYTE
VERI        VAR BYTE
SAYI        VAR BYTE 
SIGN        VAR BYTE
FLOAT       var BYTE
mem         var byte
BIRLER      VAR BYTE
ONLAR       VAR BYTE
SIGN_BITI VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
'****************************************************************
SUTUN     var Byte[728]   ' 1497 adet byte tipinde değişken tanımlanabilir.
YEDEK     VAR BYTE[728]
RAKAM     VAR BYTE
ARA       VAR BYTE
I         var WORD
X         var Byte
W         var Byte
M         var WORD
'''''''''''''''''''
yazi_reg  var byte
yeri      var byte
z         var byte
y         var byte 
A         VAR BYTE 
B         VAR BYTE
C         VAR BYTE 
D         VAR BYTE
E         var byte
bilgi     var byte
L         VAR BYTE
H         VAR BYTE
K         VAR BIT
u         var bit
V         VAR BIT
'****************************************************************
gosub SENSORYAZ
GOSUB SENSOROKU
Low RTC_RST              ' RTC yi resetle
Low RTC_SCLK
'****************************************************************
clear
pause 250
'****************************************************************
HSEROUT ["KLAYVEDEN GiRiLEN HARFLERiN MATRiX DiSPLAYDE GOSTERiLMESi",13,10]
HSEROUT ["*********************************************************",13,10]
'****************************************************************
GOSUB TEMIZLE : I=0
'****************************************************************
BASLA:
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : a=0 : M=0 : GOTO BASLA
    IF A=0 THEN GOTO BASLA
    IF V=1 THEN GOTO KONTROL2
GOTO BASLA
'****************************************************************
BASLA1:   
ADRESS=0
GOTO AA       
''''''''''''''''''''
EE:
    IF PORTC.0=1 THEN I=0 : a=0 : GOSUB TEMIZLE : GOTO BASLA
FOR I=0 TO (A*8)-1
    SUTUN[I]=YEDEK[I]
NEXT
''''''''''''''''''''
AA:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause L
      Next
M=M+1
IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : a=0 : M=0 :  GOTO BASLA
    IF M<(A*8) THEN GOSUB sola_kay1 : GOTO AA
    if M=(A*8) then M=0
GOSUB TEMIZLE
GOTO SAAT_GOSTER
'****************************************************************
TEMIZLE:
FOR I=0 TO 95
SUTUN[I]=$FF
NEXT
GOSUB GOSTER
RETURN
'****************************************************************
KONTROL2:
IF K=1 THEN RETURN
HIGH PORTE.1
adress=0
    IF BILGI=8 THEN GOTO GOSTER2
FOR X=0 TO (A-1)
''
    I2CRead SDA,SCL,$A0,adress,[bilgi] 'Her adresteki datayı oku B2 ye aktar
    ADRESS=ADRESS+1
''
gosub YERAL1
    for Z=0 TO 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI   
            I=I+1
        yeri=yeri+1
    NEXT   
next
    FOR I=0 TO ((A*8)-1)
        YEDEK[I]=SUTUN[I]
    NEXT 
K=K+1
adress=0
LOW PORTE.1 : low porte.2       
GOTO GOSTER2
'****************************************************************
GOSTER2:
    IF PORTC.0=1 THEN GOSUB TEMIZLE : I=0 : a=0 : M=0 :  GOTO BASLA
''''
    FOR Z=0 TO 2
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 1
      Next
    NEXT
GOTO BASLA1     
'****************************************************************
sola_kay1:
For I=0 To (A*8)-2
    sutun[i]= sutun[i+1]
   If i=((A*8)-1) Then sutun[(A*8)-1]=sutun[0]
Next i
pauseus 1000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
sola_kay:
For I=0 To 94
    sutun[i]= sutun[i+1]
   If i=95 Then sutun[95]=sutun[0]
Next i
pauseus 1000
    if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
    IF PORTC.0=1 THEN I=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
saga_kay:
For I=94 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[95]
Next i
pauseus 10000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : a=0 : GOSUB TEMIZLE : GOTO BASLA
return
'****************************************************************
asagi_kay:
for I=0 to 95
   ARA=SUTUN[I]
   z=ARA.7
FOR X=7 to 1 STEP -1
   ARA.0[x]=ARA.0[X-1]
NEXT
   ara.0=Z
   sutun[I]=ARA
next
pauseus 3500
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : a=0 : GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
yukari_kay:
FOR I=0 to 95
   ARA=SUTUN[I]
   z=ARA.0
FOR X=0 to 6
   ARA.0[X]=ARA.0[X+1]
NEXT
   ARA.7=Z
   SUTUN[I]=ARA
NEXT
pauseus 5000
     if portc.4=1 then GOSUB TEMIZLE :  goto SAAT_GOSTER1
     IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
Return
'****************************************************************
GECIKME:
FOR VERI=0 TO 1200
PAUSEUS 1000
NEXT
RETURN
'****************************************************************
GECIKME1:
FOR VERI=0 TO 300
PAUSEUS 1000
NEXT
RETURN
'****************************************************************   
kontrol:
if rtchour=24  then rtchour=0    : rtcdate=rtcdate+1 : rtcday=rtcday+1
if rtcmin=60   then rtcmin=0
  if rtchour=255 then rtchour=23 : rtcdate=rtcdate-1 : rtcday=rtcday-1
if rtcmin=255  then rtcmin=59
gosub zaman_yaz
gosub gecikme
gosub zaman_oku
return
'****************************************************************
SAAT_GOSTER1:
gosub temizle
'''''''''''''''''''''
bb:
FOR W=0 TO 5
GOSUB ZAMAN_OKU
'''''''''''''''''''''
if portc.0=1         then u=u+1             :gosub kontrol 
if u=0 and portc.1=1 then rtchour=rtchour+1 :gosub kontrol   
if u=0 and portc.2=1 then rtchour=rtchour-1 :gosub kontrol
if u=1 and portc.1=1 then rtcmin=rtcmin+1   :gosub kontrol
if u=1 and portc.2=1 then rtcmin=rtcmin-1   :gosub kontrol
'''''''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
NEXT W
    IF PORTC.4=1 THEN gosub gecikme :GOSUB TEMIZLE :m=0: GOTO EE
goto bb
'****************************************************************
SAAT_GOSTER:
E=0
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=115 THEN C=0:gosub cc:GOTO ISI_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtchour dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmin dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=":"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcsec dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
goto SAAT_GOSTER
'********************************************************
ISI_GOSTER:
gosub SENSOROKU
''''''
FF:
FOR W=0 TO 9
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
C=C+1
    iF C=100 THEN C=0: gosub cc :GOTO TARIH_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for Z=0 to 23
            GOSUB DATA_AL
        SUTUN[I]=VERI       
        SUTUN[I+64]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=ISI dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=223
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="C"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
NEXT
goto ISI_GOSTER
'****************************************************************
TARIH_GOSTER:
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
gosub zaman_oku
C=C+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOTO GUN_GOSTER
''''''''''''''''
temp=" "
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
        SUTUN[I+80]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcDATE dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcdate dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcmonth dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp="/"
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 1
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
temp=rtcyear dig 0
    gosub YERAL
        for z=0 to 7
            GOSUB DATA_AL
        SUTUN[I]=VERI
     I=I+1
    yeri=yeri+1
NEXT
''''''''''''''''
GOSUB GOSTER
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
goto TARIH_GOSTER
'****************************************************************
GUN_GOSTER: 
        if portc.4=1 then GOSUB TEMIZLE :goto SAAT_GOSTER1
c=c+1
    iF C=100 THEN C=0: gosub cc:gosub gecikme1:GOSUB TEMIZLE:GOTO ee
GOSUB ZAMAN_OKU
gosub dd
    IF PORTC.0=1 THEN I=0 : a=0 : M=0 :  GOSUB TEMIZLE : GOTO BASLA
GOTO GUN_GOSTER
'****************************************************************
cc:
E=E+1
If E<80                  Then gosub saga_kay    : GOTO goster1 
If E>80    and E<160     Then gosub sola_kay    : GOTO goster1
If E>160   and E<169     Then gosub asagi_kay   : GOTO goster1
if E>169   and E<178     then gosub yukari_kay  : GOTO goster1 
If E>178   then E=0
return
'****************************************************************
GOSTER1:
gosub zaman_oku
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
goto cc
'****************************************************************
GOSTER:
      X=1
      For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+88],SUTUN[I+80],SUTUN[I+72],_
SUTUN[I+64],SUTUN[I+56],SUTUN[I+48],SUTUN[I+40],_
  SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
RETURN
'****************************************************************
dd:
yazi_reg=0 : i=0
For W=0 To 11
    gosub yazi1 : yazi_reg=yazi_reg+1
        gosub YERAL1
    for z=0 to 7
        GOSUB DATA_AL1
            SUTUN[I]=VERI
                I=I+1
            yeri=yeri+1
        next
    next
     gosub goster
return
'****************************************************************
yazi1:
if rtcday=1 then LookUp yazi_reg,["   PAZAR    "],bilgi
if rtcday=2 then LookUp yazi_reg,[" PAZARTESi  "],bilgi
if rtcday=3 then LookUp yazi_reg,["    SALI    "],bilgi
if rtcday=4 then LookUp yazi_reg,["  CARSAMBA  "],bilgi
if rtcday=5 then LookUp yazi_reg,["  PERSEMBE  "],bilgi
if rtcday=6 then LookUp yazi_reg,["    CUMA    "],bilgi
if rtcday=7 then LookUp yazi_reg,[" CUMARTESi  "],bilgi
Return
'****************************************************************     
YERAL:
select case temp
    case 0   : yeri=0   : return
    case 1   : yeri=8   : return
    case 2   : yeri=16  : return
    case 3   : yeri=24  : return
    case 4   : yeri=32  : return
    case 5   : yeri=40  : return
    case 6   : yeri=48  : return
    case 7   : yeri=56  : return
    case 8   : yeri=64  : return
    case 9   : yeri=72  : return
    case 223 : yeri=80  : return
    case "C" : yeri=88  : return
    case ":" : yeri=96  : return
    case "/" : yeri=104 : return
    case " " : yeri=112 : return
end select
return
'****************************************************************
data_al:
    lookup yeri,[$FF,$C1,$80,$A6,$B2,$80,$C1,$FF,_     '0
                 $FF,$BF,$BD,$80,$80,$BF,$BF,$FF,_     '1
                 $FF,$9D,$8C,$A6,$B2,$98,$9D,$FF,_     '2
                 $FF,$DD,$9C,$B6,$B6,$80,$C9,$FF,_     '3
                 $FF,$E7,$E3,$E9,$80,$80,$E7,$FF,_     '4
                 $FF,$D8,$98,$BA,$BA,$82,$C6,$FF,_     '5
                 $FF,$C3,$81,$B4,$B6,$86,$CF,$FF,_     '6
                 $FF,$FC,$FC,$8E,$86,$F0,$F8,$FF,_     '7
                 $FF,$C9,$80,$B6,$B6,$80,$C9,$FF,_     '8
                 $FF,$F9,$B0,$B6,$96,$C0,$E1,$FF,_     '9
                 $FF,$FF,$F9,$F0,$F6,$F0,$F9,$FF,_     'Derece
                 $FF,$C1,$80,$BE,$BE,$BE,$DD,$FF,_     'C
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ':
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     '/
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],VERI 'Boşluk
RETURN
'****************************************************************
YERAL1:
select case bilgi
    case "A" : yeri=0   : return
    case "B" : yeri=8   : return
    case "C" : yeri=16  : return
    case "D" : yeri=24  : return
    case "E" : yeri=32  : return
    case "F" : yeri=40  : return
    case "G" : yeri=48  : return
    case "H" : yeri=56  : return
    case "I" : yeri=64  : return
    case "i" : yeri=72  : return
    case "J" : yeri=80  : return
    case "K" : yeri=88  : return
    case "L" : yeri=96  : return
    case "M" : yeri=104 : return
    case "N" : yeri=112 : return
    case "O" : yeri=120 : return
    case "P" : yeri=128 : return
    case "R" : yeri=136 : return
    case "S" : yeri=144 : return
    case "T" : yeri=152 : return
    case "U" : yeri=160 : return
    case "V" : yeri=168 : return
    case "Y" : yeri=176 : return
    case "Z" : yeri=184 : return
    CASE "." : YERI=192 : RETURN
    case "W" : yeri=200 : return
    case "Q" : yeri=208 : return
    case "/" : yeri=216 : return 
    case ":" : yeri=224 : return
    case "-" : yeri=232 : return 
    case " " : yeri=240 : return     
end select
return
'****************************************************************
data_al1:
    LookUp yeri,[$FF,$81,$F6,$F6,$F6,$F6,$81,$FF,_     ;  A
                 $FF,$80,$B6,$B6,$B6,$B6,$C9,$FF,_     ;  B
                 $FF,$C1,$BE,$BE,$BE,$BE,$DD,$FF,_     ;  C
                 $FF,$80,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  D
                 $FF,$80,$B6,$B6,$B6,$B6,$BE,$FF,_     ;  E
                 $FF,$80,$F6,$F6,$F6,$F6,$FE,$FF,_     ;  F
                 $FF,$80,$BE,$B6,$B6,$B6,$86,$FF,_     ;  G
                 $FF,$80,$F7,$F7,$F7,$F7,$80,$FF,_     ;  H
                 $FF,$BE,$BE,$80,$80,$BE,$BE,$FF,_     ;  I
                 $FF,$BF,$BB,$82,$82,$BB,$BF,$FF,_     ;  i
                 $FF,$CE,$BE,$80,$80,$FE,$FF,$FF,_     ;  J
                 $FF,$80,$F7,$EB,$DD,$BE,$FF,$FF,_     ;  K
                 $FF,$80,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                 $FF,$80,$FB,$F7,$F7,$FB,$80,$FF,_     ;  M
                 $FF,$80,$FB,$F7,$EF,$DF,$80,$FF,_     ;  N
                 $FF,$C1,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  O
                 $FF,$80,$F6,$F6,$F6,$F6,$F9,$FF,_     ;  P
                 $FF,$80,$F6,$F6,$E6,$D6,$B9,$FF,_     ;  R
                 $FF,$D9,$B6,$B6,$B6,$B6,$CD,$FF,_     ;  S
                 $FF,$FE,$FE,$80,$80,$FE,$FE,$FF,_     ;  T
                 $FF,$C0,$BF,$BF,$BF,$BF,$C0,$FF,_     ;  U
                 $FF,$E0,$DF,$BF,$BF,$DF,$E0,$FF,_     ;  V
                 $FF,$FC,$FB,$87,$87,$FB,$FC,$FF,_     ;  Y                     
                 $FF,$9E,$AE,$B6,$BA,$BC,$BE,$FF,_     ;  Z
                 $FF,$FF,$FF,$9F,$9F,$FF,$FF,$FF,_     ;  .
                 $FF,$80,$DF,$EF,$EF,$DF,$80,$FF,_     ;  W
                 $FF,$C1,$BE,$BE,$AE,$9E,$81,$FF,_     ;  Q
                 $FF,$9F,$CF,$E7,$F3,$F9,$FC,$FF,_     ;  /
                 $FF,$FF,$FF,$99,$99,$FF,$FF,$FF,_     ;  :
                 $FF,$E7,$E7,$E7,$E7,$E7,$E7,$FF,_     ;  _
                 $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF],veri ;  BOŞLUK
Return
'****************************************************************
'***Sensör_Oku***************************************************
SENSOROKU:
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
'           OWIN    Comm_Pin, 4, [TEMP]    ' Busy değerini oku
'           IF      TEMP = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
'****************************************************************           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
'****************************************************************             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       ham=($ffff-ham)+1
    endif
    ISI = Ham*10/16
GEC:
    FLOAT = (ISI //10)
    ISI=ISI/10
    RETURN                     
'****************************************************************
'****************************************************************
'***********Zaman Oku***********
ZAMAN_OKU:
         High RTC_RST
         SHiftOut RTC_DTA, RTC_SCLK, 0, [$BF]
         SHiftIn RTC_DTA, RTC_SCLK, 1, [rtcsec, rtcmin, rtchour,rtcdate , rtcmonth,rtcday,rtcyear, MEM]
         Low RTC_RST
         MEM=rtcsec  : GoSub CEVIR:rtcsec=SAYI 
         MEM=rtcmin  : GoSub CEVIR:rtcmin=SAYI
         MEM=rtchour : GoSub CEVIR:rtchour=SAYI
         MEM=rtcdate : GoSub CEVIR:rtcdate=SAYI
         MEM=rtcmonth: GoSub CEVIR:rtcmonth=SAYI
         MEM=rtcyear : GoSub CEVIR:rtcyear=SAYI
         MEM=rtcday  : GoSub CEVIR: rtcday=SAYI       
         Return
'***********Zaman Yaz***********
ZAMAN_YAZ:
    MEM=rtcsec   : GoSub TERSCEVIR :rtcsec=SAYI
    MEM=rtcmin   : GoSub TERSCEVIR :rtcmin=SAYI
    MEM=rtchour  : GoSub TERSCEVIR :rtchour=SAYI
    MEM=rtcdate  : GoSub TERSCEVIR :rtcdate=SAYI
    MEM=rtcmonth : GoSub TERSCEVIR :rtcmonth=SAYI
    MEM=rtcyear  : GoSub TERSCEVIR :rtcyear=SAYI
    MEM=rtcday   : GoSub TERSCEVIR :rtcday=SAYI
       
    High  RTC_RST
    SHiftOut RTC_DTA, RTC_SCLK, 0, [$8E, 0]
    Low RTC_RST:pause 1
    High RTC_RST         
    SHiftOut  RTC_DTA, RTC_SCLK, 0, [$BE, rtcsec, rtcmin, rtchour,rtcdate , rtcmonth, rtcday, rtcyear, 0]  'YAZ
    Low RTC_RST
    pause 10
Return
'***********Çevir***********               
CEVIR:
    ONLAR=MEM & %01110000
    ONLAR=ONLAR>>4
    BIRLER=MEM & %00001111
    SAYI=ONLAR*10+BIRLER
RETURN 
'***********Ters Çevir***********
TERSCEVIR:               
    ONLAR=MEM DIG 1
    ONLAR=ONLAR<<4
    BIRLER=MEM DIG 0
    SAYI=ONLAR+BIRLER
RETURN
'****************************************************************
Disable
KESME:
A=A+1 : K=0 : V=0
'''''
    IF A=1 THEN
        HSERIN [WAIT("SIFRE"),BILGI]
            I2CWrite SDA,SCL,$A0,adress,[bilgi] ' Her adrese datayı yaz
            adress=adress+1
        PAUSE 10
    ELSE
        HSERIN [BILGI]
            I2CWrite SDA,SCL,$A0,adress,[bilgi] ' Her adrese datayı yaz
            adress=adress+1
            PAUSE 10
ENDIF
'''''
        IF adress>88 then high porte.2          ' Uyarı ledini yak
        IF adress<15                THEN L=4
        IF adress<15 AND adress<30  THEN L=3
        IF adress>30 AND adress<60  THEN L=2
        if adress>60 AND adress<100 THEN L=1
'''''
HSEROUT [BILGI,10]
    IF bilgi=13 THEN V=1                        ' enter
'''''
IF bilgi=8  then                                ' backspace
    high porte.0
        FOR W=0 TO 1
            adress=adress-1
                bilgi=$ff
                    I2CWrite SDA,SCL,$A0,adress,[bilgi]
                PAUSE 10
            NEXT
        low porte.0
     A=A-1   
ENDIF
'''''   
PIR1.5=0                        ' RCIF : USART Receive Interrupt Flag bit
  Resume
ENABLE
Return   
'****************************************************************
end




Powered by EzPortal