24CXX serisinde I2C KOMUTU

Başlatan canbulut, 23 Mart 2008, 02:11:10

canbulut

selam ark.lar
proteusta 24c02 ile çalışıyorum. program düzgün bir şekilde çalışıyor ancak simülasyonu durdurduğumda sayı tekrar sıfırlanıyor.bu demek olurmuki program düzgün çalışmıyor
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 23.03.2008                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE LCD_DREG PORTC 'LCD data port 
DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4 
DEFINE LCD_RSREG PORTC 'LCD register select port 
DEFINE LCD_RSBIT 4 'LCD register select bit 
DEFINE LCD_EREG PORTC 'LCD enable port 
DEFINE LCD_EBIT 6 'LCD enable bit 
DEFINE LCD_RWREG PORTC 'LCD read/write port 
DEFINE LCD_RWBIT 5 'LCD read/write bit 
DEFINE LCD_BITS 4 'LCD bus size 4 or 8 
DEFINE LCD_LINES 2 'Number lines on LCD 
DEFINE LCD_COMMANDUS 2000 'Command delay time in us 
DEFINE LCD_DATAUS 50 'Data delay time in us 
'************************************************************
 'Data=Porta0
 'Clock=Porta1
 'Tan?mlar:
 LOW PORTC.5
 DEFINE I2C_SCLOUT 1
 DEFINE OSC 10
 TRISD=$00
 addr var byte
 yveri var byte
 overi var byte
 edat var portd.1
 eclk var portd.0
 cont con %10100000

 main:
       trisb=0            'portb ç?k?? olarak tan?m?land?
       addr=$00         'i2c nin yaz?lacak adresi
       yveri=YVERI+1           'yaz?lacak veri
       gosub write_eeprom
       pause 100
       gosub read_eeprom
       pause 100
          
       
       goto main

 write_eeprom:
    i2cwrite edat,eclk,cont,addr,[yveri]
    pause 10
     LCDOUT  $FE,1
    PAUSE 200
    LCDOUT $FE,$80,#yVERI
    PAUSE 1000
   
      

      return

 read_eeprom:
    i2cread edat,eclk,cont,addr,[Overi]
    pause 10
 
      return

      end

Lütfi AYYILDIZ

Standart hızlı eepromlara 8Mhz üzerinde erişim yapılabilmesi için DEFINE I2C_SLOW 1 komutu programa dahil edilmelidir.Sizin kullandığınız 10 Mhz.Ayrıca Programınızda sadece yazacağınız veriyi lcd ekranda görebiliyorsunuz. Yani eeproma yazılıp yazılmadığından emin değilsiniz. Bunun için LCDOUT $FE,$80,#0veri satırını okuma yaptığınız satıra ekleyin.Bu şekilde okuma yazma yaptığınızdan emin olabilirsiniz.

canbulut

teşekkürler arkadaşım.çok sağol. hallettim.
kolay gelsin...