I2C-16F628

Başlatan Lütfi AYYILDIZ, 25 Mart 2006, 20:15:49

Lütfi AYYILDIZ

Arkadaşlar bu 16F628 ile I2C' yi bir türlü okutamadım. Eeproma yazıyor bunu programlayıcımla okutarak görebiliyorum.16F84 ile aynı program ile yazıp okuyabiliyorum, buda garip olan tarafı.Acaba 16F84 te olupta 628 de olmayan nevar.? İşte programım;
 
include "modedefs.bas"
SCL VAR PORTA.0
SDA VAR PORTA.1
KONTROL CON $A0

IO var PORTB.7

VERI var byte
ALINAN var byte

adres_x var byte
adres_r var byte

reset:
PAUSE 100
SEROUT2 IO,16780,["I2C EEPROM TEST",10,13]
adres_x=0
adres_r=0

Rx:
SerIn2 IO,16780,[VERI]
if VERI=$D then OKU 
I2Cwrite SDA,SCL,KONTROL,adres_x,[VERI]
pause 10
adres_x=adres_x+1
goto Rx          

oku:     
I2Cread SDA,SCL,KONTROL,adres_r,[ALINAN]
serout2 IO,16780,[ALINAN,10,13]
adres_r=adres_r+1
if adres_r=adres_x then reset
goto oku

uzaylivolkan

programın başına  aşağıdaki kodu ekle
16f628 analog karşılaştırıcı var bunları kapatıp tüm bacakları dijitale çevirmen gerekiyor
(4 mhx kristal kullandığını düşünüyorum)
Dahili osilatör kullanacaksan  
@ device satırını aşağıdakiyle değiştir. EEeprom okuma yazma yapacağın için Kristal kullanmanı tavsiye ederim
@ device INTRC_OSC_NOCLKOUT

@ device XT_OSC 
CMCON   = 7
VRCON   = 0

Lütfi AYYILDIZ

Evet haklısın sorun çözüldü yardımın için teşekkür ederim. Yalnız @ device XT_OSC satırını kullanmaya gerek kalmadı programlayıcıyla olay çözüldü