Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: gulbey84 - 18 Kasım 2009, 23:15:28

Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Kasım 2009, 23:15:28
sevgili arkadaşlarım...size bir soru sormak istiyorum... şimdi ben bi 125 khz rfid reader devresi yaptım..bu devrede 125 khz manyetik kartı okutup röle çektirebiliyorum..devre ayrıca bir pinin den okunan manyetik kartın id numarasını seri bilgi olarak gönderiyor..şimdi benim sorum alınan bu id yi pic basic pro da nasıl alıp işleyeceğim...

örnek veri şu... A900C76554

yani bana 10 bitlik bi id no su veriyo başkada bişey göremiyorum tabi...ben bunu serin komutuylamı alacağım..bikaç denemem oldu fakat olayı çözemedim...devrenin çalışan halini buraya aktaracağım...yada google da attiny2313 rfid reader electronic lab diye aratın proje çıkıyor...yukarı da belirttiğm şekilde bir 10 btlik sayıyı nasıl alıp işleyebilirim sizce?? daha doğrusu ben karşılaştırma doğrulama tekniği ile belirli kartlarda röle çeksin yapacağım esasında....yukarı daki id sadece örnek...yani herhangi bir id olmadan fakat kartı okuutuğumda 10 bitlik bir id kodunu ben nasıl alıp işleyebilirim??

saygılarla Question Question
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Kasım 2009, 23:17:05
ETE

Önemli bir hata yapıyorsun. Aldığın kod 10 bitlik değil 10 haneli bir hex kodudur. Bunun gerçek bit sayısı 40 dır.
40 bitlik sayı 5 adet byte şeklinde alınabilir.
En kolayı ve rahat yol bu bence.  

ete hocam haklısınız!! peki tam olarak nasıl almalıyım hocam.... 5 adet byte şeklinde derken bana bir format verebilirmisiniz...yol gösterebilirmisiniz??? saygılarla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 19 Kasım 2009, 07:50:49
Elindeki sayı şu şekilde: A900C76554
Bunu 5 ayrı byte bölersek şöle olur;

Byte1: 54
Byte2: 65
Byte3: C7
Byte4: 00
Byte5: A9

Şimdi bu sayının RFID de nasıl oluştuğunu bilmeyince bu safhadan daha fazlasını söyleyemiyorum. Ama ordaki sistem sayıyı teker teker yani byte byte vermeye müsait ise sen yukarıdaki formatta alabilirsin.

Bana kalırsa önce otur 16 tabanına göre sayı sistemini biraz çalış.
Küçük sayılarla denemeler yap. Örneğin. senin sayının sondaki 4 hanesi,
$6554 dür. Bu sayının 8 bitlik 2 sayıya bölünmüş hali $65 ve $54 dür.
Pic ile çalışırken SAYI.Byte0 dediğin zaman $54 karşılığını alabilirsin.
SAYI.Byte1 dedğin zamanda $65 değerini alabilirsin.
Bu işi desmal sistemde hesap ile yapmanın yolu ise;
Sayının önce desimal karılığını alalım: 25940 dır.
Bu sayıyı önce 256 ya bölelim 101 değerini bulacağız. BU bize sayının Hıghbyte yani SAYI.Byte1 kısmını verecektir. O halde sayının 1. sekiz bitlik parçası 101 dir.
Şimdi 25940 - (101*256)= işlemini yaparsak oda bize Low byte ı verecektir.
Burada da 84 rakamını buluruz. O halde sayıyı 8 er bitlik iki parçaya 101 ve 84 olarak ayırmış oluruz. Zatenbunların hex karşılıkları $65 ve $54 dür.

Şimdi aynı işi 24 bitlik bir sayı ile yapalım. Yani Sayı=$C76554 olsun
İŞlemi yapınca elimizde C7 - 65 ve 54 sayıları olmuş olacaktır.

Sayımız 24 bit olunca bir düşük format 16 bitlik olacaktır. O halde sayımızı 16 bitlik (en büyük sayı+1) sayısına böleceğiz.  Yada başka bir deyişle sayıyı 16bit+1bit=17 bitlik ilk sayı olan $10000 (65536) ya böleceğiz.
$C76554 / 65536 (yani $10000)=199 yada $C7 sayısını buluruz.
Bu sayının ilk 8 bitlik parçasıdır.
Şimdi $C76554-($C7*$10000)=$6554 sayısı elimizde kalır.
Bu işlemi desimal yaparsak;
13.067.604 - (199 * 65536)=25.940
Elimizdeki sayı artık 16 bitliktir. Onada bir önceki işlemi uygular isek elimizde $65 ve $54 sayıları kalacaktır.

Buraya kadar anlattıklarımdan aslında olayı hemen kavraman gerekir.
10 tabanına göre sayılar (Desimal) 1-10-100-1000-10000-100000 şeklinde 10 un katları şeklinde gitmektedir.
16 tabanına göre sayılarda 16 nınkatları şeklinde gitmektedir. İşlemde bu esasa göre yapılmaktadır.
01-0F - FF - FFFF - FFFFFF - ... şeklinde gidiyorlar.
10 tabanına göre işlem yaparken 12.348.546 sayısının kat değerlerini bulmak için
12.348.546 / 10.000.000=12
12.348.546 - (12*10.000.000)=348.546
348.546/100.000=348    ,  348.546-(348 * 100.000)= 546
546/100=5    546-500=46
46/10=4   46-40=6

şeklinde yaptığımız işlemin aynısını 16 tabanına göre sayılara uygularsan işin görülecektir.

Kolay Gelsin
ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 19 Kasım 2009, 17:39:30
hocam çok teşekkürederim...bu anlattıklarınız kafamda bazı şeyleri yerine oturttu...çalışmalarıma devam edeceğim....birde hprterminalde pc de gördüğüm şekilde bu 10 haneli hex dizisi...çalışacağım..çok sağolun..görüşmek üzere
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 21 Kasım 2009, 22:40:50
ete hocam sayı formatlarını biraz çalıştım fakat bir başka işlemci ile (16f628a) bu 10 haneli hex kodunu nasıl alıp işleyeceğimi tam olarak kafamda şekillendiremedim...bana bu konuda biraz yardım edebilirmisin acaba..şunu sölersem belki faydası olur..entegremnin 3. bacağı donanımsal seri çıkış için...yani ben bu bacağı pnp tranistör üzerinden bilgisayarın seri portuna girdiğim zaman hyper terminalde 19200 baund hızında okuttuğum rfid kartın id numarasını (yukarıdaki örnek hex veri) okuyabiliyorum..fakat benim amacım bilgisayara değilde ikinci bir işlemciye bu veriyi alıp daha sonra istedğim şekilde işlemek (ilk etapta lcd de dahi gösterebilsem bana yeticek) mesela bu id numarasını 16f628 le alıp aynen lcd ye gönderen bir rutin yazabilirmisin bana seni çok uğraştırmazsa tabi..orjinal entegre attiniy2313 fakat ben bu entegreden gelen 10 haneli hex id kodu pic ile alacağım sanırım bu fark etmez değilmi hocam...bide hserin ilemi yoksa serin ilemi alacağız...baya bi karıştı kafam hocam bana bi yardım edebilirsen çok minnettar olurum...sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 22 Kasım 2009, 08:12:35
Başından beri söylemeye çalıştığım konuya geldin sonunda.
Sen sürekli sanki bilgiyi aldın ve elinde 40 bitlik bir bilgi varda onu nasıl ayıklarım diye düşünüyordun. Halbiki esas zorluk bilginin alımında idi ve oraya geldin işte.

10 haneli kodun gönderiliş formatını bilmeden herhangi bir şey yazmak mümkün değil. Bu 10 haneli bilgi tam tamına  40 bit oluyor.
- Öncelikle Yüksek Duyarlıklı Bit (MSB) denmi başlanıyor yoksa düşük duyarlıklı bittenmi başlanıyor (LSB) onu bilmek gerek.
- 40 bitin tamamı bir andamı yollanıyor (aralıksız) yoksa 8 bitlik parçalar halindemi yollanıyor, Yada 16 şar bitlik parçalarmı kullanılıyor
- Yollama şekli nasıl ? SPI mı, Seri mi .....

Haberleşme şekli konusunda hiç bilgim yok. Araştırmadığım bir konu. O nedenle bu bilgiler belli olmadan bir şey yapmak mümkün değil.
Mademki PC bu bilgileri alıyor ona benzetim yapılarak benzer bir mantıkta kurulabilir.
Anlayacağın ilave bilgiler lazım
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 22 Kasım 2009, 12:48:05
anladım hocam...hocam ben bu gerekli bilgileri toplamaya çalışacağım...sanırım bana osilaskop verileri lazım olacak...ben burda osilaskop sinyallerini derleyip sana sunmak istiyorum...birkaç gün sonra bu verileri toplayabilirim...çok teşekkürederim ete hocam...türkiyedeki elektronik meraklılarına yaptığınız katkılar gerçekten çok fazla..yıllardır sizin verilerinizi takip ediyorum son derece öğretici doyurucu bilgiler veriyorsunuz...varolun...
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 28 Kasım 2009, 11:40:14
ete abi en son konuşmamızda konuyla ilgili biraz daha somut bilgilerle sana geleceğimi belirtmiştim...hocam şu şekilde bir çalışma yaptım bilmiyorum derdimi daha net anlatabiliecekmiyim...şimdi ben rfid okuyucu devremi pc ye girdim...burada proteuslada sinyali osilaskopta okudum...bakınız şöyle

(http://pic1.resimupload.com/r1/thumb_622822771.JPG) (//www.resimupload.com/ds622822771_ads%C4%B1z.html)

şimdi hocam buradaki sinyal 10 haneli hex kodu sinyali yani okuttuğum rfid 125 khz kartın id numarası ben bunu bir başka işlemciye alıp işlemek istiyorum...lakin sizinde anladığınız gibi buradaki hex kodunun ne olduğu mühim değil..çünki ben bir format olarak bunu ele almalıyım...yani eğer okunan id xxxx ve bu id numarası daha önceden sisteme tanıtılmış ise röle çeksin vb. ama tabi ilk olarak 10 haneli bir hex kodu alıp bunu lcdye dahi akratsam bu bana büyük destek olur...sinyal aynen bu resimdekidir hocam..bana yardım edebilirmisiniz??sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 28 Kasım 2009, 11:50:12
Gulbey,
Bana yeni bir şey söylemedin. Bunu zaten biliyor idik.

Bana ne geldiği değil nasıl geldiği gerekli.

Her neyse bana kalırsa sen gelen bu 40 bitlik sinyali 8 ayrı byte olarak alabilirsin.

Alıcı kısma 8 ayrı değişken adı yaz ve sonuçta bak bakalım senin kod 5 ayrı parçada sana ulaşmışmı. Yapacak başka şey yok zaten.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 28 Kasım 2009, 11:53:33
deniyorum hocam
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 03 Aralık 2009, 22:05:41
ETE ABİ OLAYI ŞU ŞEKİLDE ÇÖZDÜM..YİNE SENİN BANA VERDİĞİN BİLGİLERDEN YOLA ÇIKARAK 5 AYRI WORD TİPİNDE DEĞİŞKEN BELİRLEDİM..HSERİN KOMUTU İLE RFİD OKUYUCU DEVREDEN GELEN 125KHZ KART İD NUMARASINI ALMAYI BAŞARDIM VE LCD DE GÖRÜNTÜLEYEBİLİYORUM...KODLAR BU ŞEKİLDE

INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 4
'--------------------------------------------------------------------------------------------
'***********************SERIAL COMM DEFINITION**********************
DEFINE HSER_TXSTA 24h
DEFINE HSER_RCSTA 90h
DEFINE HSER_BAUD 19200

DEFINE LCD_DREG PORTb
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTb
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTb
DEFINE LCD_EBIT 3

cmcon=7
trisb=%00000010
trisa=%00000001

a var word
b var word
c var word
d var word
e var word

ANAPROGRAM:

hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
pause 50
LCDOut $fe, 1,hex2 a,hex2 b,hex2 c,hex2 d,hex2 e
pause 10

goto anaprogram

end

BİRAZDA ACEMİ ŞANSI İLE DENEME YANILMA YÖNTEMİYLE UĞRAŞARAK BU KODLARLA KART İDLERİNİ ALIP LCD YE AKTARDIM...FAKAT SERİN2 YADA SERİN KOMUTU İLE BİR TÜRLÜ BAŞARAMADIM...NEYSE BENDE O ZAMAN DONANIMSAL SERİ GİRİŞ OLAN BİR PİC KULLANCAM(628A) ŞİMDİ HOCAM BURAYA KADAR HERŞEYİ ÇÖZDÜM FAKAT BİR SORUM DA OLACAK SİZE...ÖRNEĞİN BİR BUTONA BASILI TUTARAK OKUTTUĞUM 125KHZ KARTIN İD NUMARASINI EEPROMA KAYDECEM...SORADA DİCEM Kİ DİĞER BİR BAŞKA BUTONA BASILIYKEN OKUTTUĞUM KART EĞER EPROMDA KAYITLIYSA RÖLE ÇEKSİN...YANİ BEN BURADA HEM BU VERİLERİ EPROMA KAYDECEĞİM SORA BİR BAŞKA HAMLEYLE OKUTTUĞUM KARTIN İD NUMARASINI EPROMDAKİYLE KARŞILAŞTIRACAĞIM DOĞRUYSA RÖLE ÇEKCEK..DEĞİLSE RÖLE ÇEKMİCEK...BİRKAÇ DENEM YAPTIM WRİTE VE READ KOMUTLARIYLA AMA 5 PARÇA HALİNDE ALDIĞIM VERİLERİ NEREYE NASIL YERLEŞTİRECEĞİM BUNU ÇÖZEMEDİM HOCAM...BANA YARDIM EDEBİLİRMİSİNİZ?

SEVGİLERLE
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 04 Aralık 2009, 07:47:07
Gulbey,
Başardığına sevindim. Ufak tefek ikazlarım olacak.
Birincisi değişkenleri Word değil Byte kullan. Çünki aldığın bilgi zaten byte, word değil. Üstelik  komut satırına yazmış olduğun Hex2 a komutu a bilgisinin byte olarak al anlamına geliyor. Bilmem denedinmi bunu dene istersen çalışması gerek.

Gelelşm kayıt meselesine, muhtemelen word olarak tanımladığın a,b,c,d,e gibi değişkenleri kayıt ederken sorun yaşamışsındır. Şİmdi burada her ikisinide göstereceğim.

Şayet kullandığın değişkenleri Byte cinsine çevirir ve başarılı okuma yaparsan kayıt yöntemin şöyle olacak
Write Adres (0-255 arası) , Değişken  , hemen örnek vereyim 10 nolu adresten itibaren değişkenleri kayıt edelim.
Write 10, a :pause 10  'bu 10 ms gecikme mutlaka verilmeli . Yaklaşık kayıt süresidir ve tamamlanmadan bir sonraki kayıta geçilmemelidir.
Write 11, b:pause 10
Write 12, c:Pause 10
Write 13, d:pause 10
Write 14,e:pause 10
Gördüğün gibi adres değeri birer artırılarak kayıt yapılıyor.

Şayet illaki word tipi değişken kullanman gerekiyor ise o zaman kayıt yöntemin;
Write 10, a.byte0:pause 10
Write 11, a.byte1:pause 10

Write 12, b.byte0:pause 10
Write 13, b.byte1:pause 10

şeklinde 16bitlik değişkeni 8 bitlik iki parça halinde ve iki ayrı adres kullanarak kayıt ediyoruz.

Bu işin kayıt kısmı idi.

Şimdi diyelimki kayıtlarını yaptın ve RFID den başka bir ID okudun.
Okunan ile kayıttan okunan farklı değişkenlerde tutulması gerekecek.
Bunun için şöyle bir yöntem kullan,
ao , bo , co , do , eo değişkenleri karşılaştırılacak bilgi değişkenleri olsun.
Yani diğer butona basılınca okunan ID bu değişkenlere yerleştirilsin.
Şimdi önce eepromdan a değerini alırsın
Read 10,a  ' Okuma yaparken pause kullanmaya gerek yoktur.
Bir:
IF a=ao then  iki
 Goto CIK   işte burası önemli şayet a=ao değil sie program bu satıra gelecektir ve ilk karşılaştırma eşit olmadığına göre okunan ID ile kayıtlı ID bir birine eşit değildir kabul edilecektir.
iki:
Read 11, b
IF b=bo then Uc
  Goto CIK    'şayet a=ao olupta b=bo olmaz ise program bu satıra gelecektir.
Uc:
Read 12, c
If c=co then Dort
 Goto CIK
Dort:
Read 13,d
If d=do then Bes
Goto CIK
Bes:
Read 14,e
IF e=eo then
  LCDOUT $fe,1,"ID ler esit"
  pause 1000
  Goto basla
endif
CIK:
LCDOUT $fe,1," ID ler esit değil"
pause 1000
goto basla

Dikkat edersen açıklamamı byte değişkenleri kullandığını varsayarak yaptım. Word kullanırsan yalnızca okuma adreslerin değişecek. Onun içinde bir örnek vereyim yalnızca a değişkeni için vereyim diğerleri aynı mantıkla yapılacaktır.
Bir:
Read 10,a.byte0
Read 11,a.byte1
If a=ao then Iki
Goto CIK
...
...

Buton kullanımını artık açıklamayayım onu halledersin artık.

Kolay Gelsin
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 04 Aralık 2009, 10:10:39
ete hocam herzaman söylüyorum sizin elektronikçilere olan katkınız tartışılmaz!! yine bana satırlar dolusu faydalı bilgiler verdiniz...gönül isterki size hakkınızı en güzel şekilde ödiyim...sanırım ankaradasınız...istanbula geldiğinizde çay içmeye de beklerim...ankaraya yolum düşerse sizi ziyaret etmeden de hiçbiyere gitmem!! şimdi hocam işyerimde olduğum için verdiğiniz bilgileri eve döünüce inceleyeceğim..ama sorunuzun yanıtını verebilirim..değişkenkeri word değilde byte olarak tanımladığımda da sistem harika çalışıyor..hatta önce öyleydi daha sonra ben write read denemelerim için öle değiştirdim...akşam tekrar görüşmek dileğiyle

selametle kalın

gulbey
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 06 Aralık 2009, 17:55:34
selamlar...ete hocam verdiğin bilgiler ışığında birşeyler yapmaya çalıştım...biraz daha bu konuda kendimi geliştirdim...fakat benim şöyle bir sorum olacak aslında size....hocam şimdi benim esas gayem elimdeki rfid kartlardan bir tanesini yazılımın içine dahil etmek...daha sonra ben bu kayıtlı kartı okuttuğumda 15 saniye içinde sisteme diğer kartları taıtıcam...yani elimdeki bir kart admin kartı olacak...fakat elimdeki kartın datalarını nasıl sabit birşekilde yazılıma yerleştireceğim bunu çözemedim...data veyahut eeprom komutuyla olacağını biliyorum...fakat  elimdeki rakamlar sizde biliyorsunuz son derece karışık...en azından beş parça halinde hex2 olarak aldığım rakamlar...ben bunu yazılımın başına nasıl yerleştireceğim...yani 1 numaralı kartı okuttuğumda diğer kartları üst üste sisteme tanıtacağım..ama bu olay misal 20 saniye içinde olacak...20 saniye sonra ise sistem rutin çalışmaya geçicek...yani artık okutulan kart doğrumu?doğruysa röle çeksin...değilse uyarı versin gibi...burada kesme olayınıda devreye sokmam gerekicek gibi geliyo bana...sizce nereden başlamalıyım hocam?...en azından bana elimdeki kartlardan bir tanesini sabit olarak sisteme dahil etmeyi (data\eeprom) ve bu kartı okuttuğumda kesmein nasıl başlayacağını anlatabilirmisiniz??

sevg,lerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 06 Aralık 2009, 19:19:05
hocam son sordğum sorunun cevabını buldum

basla:
hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
pause 100
if a=$1C AND B=$00 AND C=$C7 AND D=$46 AND E=$54 THEN
goto hadi
endif
goto basla

bu şekilde istedğim şey oldu...öleyse soru hakkımı başka bir soruyla kullanmak isterim müsade varsa :) hocam şimdi buraya kadar bana okuttuğum id leri eeproma nasıl yazdıracağımı ve nasıl okutacağımı öğrettiniz...ama şöyle bir şey var..

mesela ben bir kart kaydedebiliyorum bu şekilde...halbuki en az 20 adet kart  tanıtmam gerekiyor...bunun içinde onlarca değişken oluşturmak zorundamı kalacağım hocam? mesela ne demişik...ao,bo,co,do,eo bunlar karşılaştırma için kullanacağım deişkenler...öyleyse diğer kartlar içinde al,bl,cl,dl,el sonrasında af,bf,cf,df,ef gibi devam eden deişkenler mi oluşturafcağım hocam...yani amacım 10 tane kartı eproma yazmak..daha sonra okunduğunda var ise eğer sonuç vermesi...yoksa uyarı vermesi..

sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 06 Aralık 2009, 21:31:39
Bana kalırsa yeni değişken kullanma. Yalnızca ID leri 10,20,30,40,50
den başlayan hafızalara kayıt et. Karşılaştırma yaparken den buradan teker teker alıp karşılaştır.

Olayı tam olaraak anlamamışda olabilirim. Benim bildiğim tanıdık kartlar olmalı ve tanınmayan kartlar olmalı. Tanınmayanlarla tanıdıkların karşılaştırması için;
Tanıdıkları şayet birden fazla ise dediğim gibi 10-20-30..50 adreslerinden itibaren kayıt edersin.
Sonra tanıdık olmayanı tanımladığın değişken gurubuna verirsin AO,BO,CO.. gibi. Daha sonra adres göstergesini 10 olarak başlarsın ve orada kayıtı olan ID leri okursun ve A-B-C-D-E ye atarsın sonra A ile AO yu daha sonra B ile BO ... yu karşılaştırıp bakarsın. Eşitlik yok ise bu sefer adres göstergesini 20 yaparsın ve diğer tanıdık gurubu alırsın böylece 50 adrese kadar gelirsin. Hala aşitlik yok ise okunan yabancı ID tanıdık değildir dersin olur biter.

Değişkenlerle de yapmak mümkün bu sana hız kazandırır. Bu iş için dizi değişkenide kullanabilirsin.
Mesela  Tanıdık ID ler gurubu için
AT VAR BYTE[5]
BT VAR BYTE[5]  
..
ET VAR BYTE[5]

şeklinde bir değişken tanımlaması yaparsan bunu daha hızlı şekilde karşılaştırma yapmak için kullanabilirsin. Köşeli parantez içindeki değer bu değişkenin 5 ayrı bilgi için kullanılacağını belirtiyor .Daha fazla tanımlama için rakamı artırabilirsin. Diyelimki 8 adet farklı tanıdık ID için parantez içine 8 yazman gerekecek.

Tabiiki programın bir tanıdık ID okuma ve tanımlama kısmı olacak ve orada bunları hem okuyup hemde yukarıda açıkladığım şekilde eeproma kayıt etmiş olacaksın. Aynı ID leride sırası gelen değişkenlere ataman gerekiyor tabiiki. NAsıl dersen, zaten AO olarak okunan değer okunan A ID değeri olacak ve bunu eeproma kayıt ettikten sonra diyelimki önceden farklı 2 adet ID kayıt etmiş idin ve bu üçüncü olacak (burada SIRA değişkenide tutabilir ve eepromun 0 nolu adresinde saklayabilirsin. Her kayıttan sonra bir artırıp yeniden yerine kayıt edersin.)
Sonuçta AT[3]=AO , BT[3]=BO ...ET[3]=EO şeklinde değişkenleri eşitlersin.
Karşılaştırmada ise işin biraz daha kolay olacaktır.
X=0 'Bu senin değişken sıra nosu olacak)
FOR X= 0 to 8 '8=kaç adet kayıt var ise onu ifade ediyor
IF AT[X]=AO  THEN CIK 'AO bilinmeyen ID nin A değeri oluyor)
IF BT[X]=BO THEN CIK
IF CT[X]=CO THEN CIK
...
IF ET[X]=EO THEN CIK
NEXT
Program bu satıra ulaşır ise bütün ID ler karşılaştırıldı ama eşitlik bulunamadı demektir.
LCDOUT xx,xx ,"Eşitlik Yok"
GOTO xxxx
CIK:
Program buraya atlarsa eşitlik var demektir yani okunan ID hafızadaki ID lerden birisidir demektir.

KOlay Gelsin
ETE
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 07 Aralık 2009, 20:31:27
hocam yine kitaplarda dahi bulamayacağım bilgiler verdiniz...çok sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us)un gerçekten...hocam önerilerinizi çalışacağım...eğer zorlanırsam yukarı da örnek verdiğim gibi 10 adet kartın id lerini yazılıma eklicem o şekilde zaten kodlamış olacağım...yani benim yazılıma tanıttığım id ler dışında başka bi kart okursa röle çekmicek...tabi bu işin kolay kısmı...ama önce sizin önerilerinizden yola çıkarak eproma yazdırma yönetmini deneyeceğim çünkü taktir edersinizki bu şekilde olduğunda daha çekici bi sistem olacak...

teşekkürederim

gülbey
Başlık: yardım
Gönderen: gulbey84 - 09 Aralık 2009, 19:53:08
ete abi tekrar selam...hocam senden aldığım tiyolarla tam olayı çözdüm toparlıyorum derken hiç hesaba katmadığım bir sorunla karşılaştım..hocam ben testlerimi şu düzenekte yapıyordum...rfid kart okuyucu devremin seri çıkış pininiden gelen datayı bilgisayarımın seri portuna bağlayıp isis te de compim vasıtasıyla pic e bilgi alarak lcd de gösteriyıordum...fakat simulasyon değilde gerçekte de uygulamayı görmek istedim...bread board üzerine picli devremi kurup aynı isis teki gibi rfid okuyucu devrenin seri çıkışını pice girdim..fakat bir türlü sonuç alamadım....pice hex yükleme konusunda hiçbir şüphem yok...hocam ben sana resimlerle gösteriyim...

(http://pic1.resimupload.com/r1/thumb_170691808.JPG) (//www.resimupload.com/ds170691808_devrehserinresim.html)

abi bu isite kurduğum devre...aslında burada birazcık isis'i kandırmış oldum sende anlaöışsınıdr...ben burada rfid okuyucu devrenin seri bilgi gönderen çıkışını bilgisayarın seri portuna (rx e) bağladım...hyperterminalde dahil tüm platformlarda 19200 baund hızında gelen id numarasını okuyabildim o sebeple compim ve virtual terminal ayarlarında da 19200 aynı şekilde pic içindeki yazılımda da 19200 şeklinde ayarladım...kaldı ki bu şekilde sistem sorunsuz çalışıyor...sanırım rfid okuyucu devre yazılımında da baund hızını 19200 yapmışlar hocam...ete abi bak buda rfid okuyucu devresi abi...

(http://pic1.resimupload.com/r6/thumb_869207204.JPG) (//www.resimupload.com/ds869207204_semaresim.html)

ete abi burada da entegrenin 3.bacağından bir pnp transistor üzerinden seri bilgi çıkışı gerçekleşiyor....işte ben rfid okuyucu devrenin bu seri bilgi çıkışını araya hiçbir şey koymadan direk olarak bilgisayarımın seri port rx ine girdiğimde ve ilk resmdeki gibi isis te pic devresini kurdğumda sistem fevkalade iyi çalışıyor...ama pic kısmını board da kurup aynı şekilde bağlantıları yaptığımda devre çalışmıyor...gerçi iki kez deneyebildim çünkü o sırada pic programlayıcı devrem bozuldu (aksilik bu ya!) abi birde şu bilgiyi vermiş rfid okuyucu devrenin tsaarımcısı o daşu resimde

(http://pic1.resimupload.com/r9/thumb_161315603.gif) (//www.resimupload.com/ds161315603_interfaces.html)

hocam burda da pc için şu bağlantı başka bir işlemci içinde şu bağlantı olacak diyor....ben yukarıda da geçtiği gibi hserin komutuyla ve bu resimdeki db9 bağlantısıyla gelen bilgiyi son derece güzel alıyorum ama dediğim gibi sadece isis te....gerçek hayatta da aynı şekilde çalışması gerekmiyormu??? acaba küçük bir püf noktası varda ben mi bilemedim? bana b konuda yardımcı olabilirmisin hocam....senide çok uraştırdım ama bu sorun kafamı gerçekten çok karıştırdı....

sevgilerle hocam

gülbey
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 09 Aralık 2009, 20:23:22
Sana söyleyebileceğim tek şey seviye düzeltmesi yapman olacaktır.
Olayı biraz açarak anlatayım.

PC nin Seri portu (RS232 portu) çalışırken kullandığı seviyeler şunlardır.
HIGH =-10V  (Bazı laptoplarda bu -7V ta kadar düşer)
LOW = +10V (Bazı laptoplarda bu +7V ta kadar düşebilir)
Dikkat etti isen senin tanıdığın voltaj seviyelerine hiç uymuyor.
Şimdi RFID çıkışını direk PC ye girince normal okuma yapabiliyorsun. Aslında sanırım RFID  ana çıkışı TTL dediğimiz ve pic de de kullanılan cinsten bir seviyede yani,
HIGH =+5V
LOW= 0V yani GND.
Ancak arada bir transistör kullanarak PC nin anlayacağı seviye çevrimi yapılmış.  seviye  çevirme transistörüne dikkat edersen TTL (RFID) tarafından HIGH geldiği zaman bunu LOW'a LOW geldiği zamanda HIG'a çeviriyor. Dolayısıyla PC de bu sorun olmuyor.

Şimdi gelelim işin Pic tarfına. Pic HIGH olarak +5V ister. Low olarak da 0V (GND) ister. Sen PC ye gönderilecek sinyali Pice girersen hüsrana uğrarsın nitekim uğramışsında. Çünki Higl lar low lar tamamen ters çevrilmiştir ve pic bunları anlamaz. O halde ne yapmak gerekir?. Ya gelen sinyali oradaki çevirici transistör Beys ucuna giren kısımdan alacaksın (seviyeyi tam olarak bilmiyorum teorik olarak dediğim doğru ama kontrol etmek gerek) yada araya aynı çeviriciden bir tane daha yapacaksınki tekrar RFID den HIGH gelince Pic'e HIGH , LOW gelince LOW gitsin.

Kolları sıva bakalım.
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 09 Aralık 2009, 20:36:11
hocam dükkandaki abime söyledim sabah yeni pic programlayıcım gelcek...yani şu anki durumumu tahmin ediyorsundur belki kuduruyorum burda tabiri caizse! kolları yarın akşam sıvıcam hocam mecburiyetten....hocam şimdi öncelikle gelen seviye 5volt..çünkü denemelerim sırasında ölçmüştüm...hocam şimdi orada 3.bacaktan çıkan sinyal pnp ile tersleniyor....ben önce transistöre girmeden yani direk 3 bacaktan pice girerek deniyim...olmaz sa da aynı şekilde o pnp transistörün collektöründen yine bir pnp ile tekrar sinyali çeviriyim...doğru anladımmı hocam....birde o resimde npn ile bir çevirme yapın demişler...o bağlantıyı kullansan acaba sizin anlatmak istediğiniz şey gerçekleşmiş olurmu...ya hocam gerçi dedim gibi malzemem yarın gelcek şimdi benimde elim kolum bağlı..bu sorularıma cevap verirseniz hocam çok sevinirim...onun dışında ben yarın akşam deneyerek biraz daha uğraşrak size danışıyım....çünkü bazen uğraşmakta çok faydalı oluyo...ama tabi sizin katkılarınız da tartışılmaz!!

sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us)un ete abi...allah razı olsun
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 09 Aralık 2009, 20:46:51
Bu son mesajımı daha dikkatli okursan ne yapman gerektiğini daha iyi anlayacaksın.
Anlayacağın dilde kısaca bir kez daha açıklayayım.

RFID devren PC ye HIGH yolladığı zaman PC ye gönderilen bilgi aslında LOW oluyor aradaki BC237 transistörün gelen bilgiyi ters çevirmesi nedeni ile bu gerçekleşiyor.  Aynı yerden alınan bir bilgiyi Pic'e girersen anlamayacaktır.
Çünki RFID devren ile PİC aynı dili konuşuyorlar. Arada tercüman gerekmiyor. PC bunlardan farklı dil kullandığı için arada çevirici ile anlaşabiliyorlar.
Sende ya sinyali çevirmeden (BC237 li devrede SOUT ucunu direk pice girersen anlayacaktır). yada çevrilmiş bilgiyi (RXD çıkışından gelen bilgiyi)  bir kez daha 5V seviyesinde çevirirsen pic gelen bilgiyi anlayacaktır.

KolayGelsin
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 09 Aralık 2009, 21:01:45
anladım hocam...yarını bekliyorum sabırsızlıkla...pic programlayıcı devrem bi gelsin...aaaa yada aslında dün kü yüklemem de sorun olmadığını düşünüyorum hocam...ben şimdi denemeye başlıyorum hocam..teşekkürederim
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 14:17:29
tekar selamlar....ete abi ellem ettim kullem ettim yinede başaramadım...yukarı da ki resimler de de anlattığım gibi pc gönderirken proteusta mükemmel çalışıyor....fakat rfid okuyucu devremden pic e gerçek hayatta aynı şekilde yada senin bana önerdiğin şekillerde seri bilgiyi gönderemedim...yada alamadım.....hocam anlatıyım...attiny 2313 ün 3.bacağını direk olarak picin rx ine girip denedim olmadı....aradaki pnp transistör ile gönderdim (aynen şemadaki gibi) olmadı....sonra npn transistörle çevirip denedim olmadı.....seri çıkış pininini direk olarak npn den çevirip gönderdim yine olmadı....acaba ne yapmak lazım hocam....sistemde bi sorun olsa proteustata olumlu sonuç alamazdım ki....önerilerin çok doğru şeylerdi ama onları da uygulamama rağmen yine olmadı...sence başka ne şekilde deneyebilirim hocam....mesela bir pice hserout ile gönderme diğer bir pice hserin ile alma görevi verip bread boardda denesem burda bi sorun çıkmazsa benim sisteminde aynı şekilde çalışması gerekir...ben dediğim gibi biraz test yapıyım hocam...saygılarla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 14:50:56
hocam birde seri bilgiyi almak istedğim işlemci attiny2313 kuvvetli bir ihtimalle yazlııda c ile yazılmıştır...acaba bunun bir etkisi olabilirmi çalıştıramamam da ama bu seferde proteusta çalışmazdı öle değilmi....şimdi hocam bilgisayara giriyo ve ben bu seri bilgiyi virtal terminalde olsun yaza hazırladığım pic simulasyında olsa çok iyi görebiliyorum işleyebiliyorum...ama bread boarda uyguladığım zaman bir türlü alamıyorum.... saygılarımla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Aralık 2009, 16:39:25
Attiny olması sonucu etkilemez. Sonuçta oda ttl çalışıyor.
Olabilecek muhtemel şeyleri sana sıralayayım.

19200 Baud haberleşme hızı 20 MHz den aşağı frekanslarda düzgün çalışmayabilir. Bana kalırsa pic frekansını 20 MHz e çıkart

Her iki tarafta da Baud Rate ayarlarının eşit olduğundan emin olmak lazım.
Gönderme formatı 8N1 şeklinde her iki tarafı ayarlamak lazım. Olmuyorsa 7E1 denenebilir. Yani 7 data biti, even parity ve 1 stop biti şeklinde.


Sorması ayıp Proteus da nasıl deniyorsun bu aleti tam anlamadım.

Başkada bir şey aklıma gelmiyor. Yinede düşüneyim aklıma gelen bir şey olursa haber veririm.
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 19:00:57
estfllah hocam sorması ayıp olurmu hiç! ete abi tabiri caizse isis'i kandırıyorum!! hocam isisye compim componeneti varya....şimdi ben önce rfid okuyucu devremin seri çıkışını bilgisayraımın seri portuna yani rx pinine bağlıyorum:...rs232 nin gnd sinide devrenin gndsine bağlıyorum...sonra isiste    
compim componenetini koyuyorum...compim ayarlarını da 19200 yapıyorum....daha sonra  ben rfid kartı devreye okuttuğumda aynı anda devrenin seri çıkış pininden kartın id numarası içıkıyo..tabi ben seri çıkışı rs232 portumun rx ine verdiğim için compim de de doğru ayarları yaptığım için bilgi geldiği anda aynı zamanda isiste deki compim in rx de aktif oluyo...yani biraz hile yaptım hocam...acaba bu yüzdenmi geçek hayatta sistemi çalıştıramıyorum..sonra isisteki compimin rx ine virtul terminali bağlıyorum ve gelen veriyi rahatlıkla görebiliyorum hocam...tabi bende pic koyarak ve geçenlerde konuştuğumuz kodlarla kartın iid numarasını lcd ekranda görmeyi başardım...ama işte asıl sorunum bunu gerçek hayatta beceremem!! önerilerini deniyim ben abi...sana bilgi gönderirim...çok sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us) ete abi...hakkın çok....

he hocam bu arada 8n1 söledin ama ben herin komutuyla alıyorum...acaba anlattığın formatları bu komuttada uygulayabilirmiyim?

saygılarımla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Aralık 2009, 19:41:13
Sen en iyisi bu konuda çalışan pic programını bana bir yollada bakayım. Orada var bir eksiklik sanırım.
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 19:57:17
sevgili abim elimde 16 mhz vardı onla denedim yine sonuç yok..abi bak bu kodlarla isis te çalışıyo...

INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 4
'--------------------------------------------------------------------------------------------
'***********************SERIAL COMM DEFINITION**********************
DEFINE HSER_TXSTA 24h
DEFINE HSER_RCSTA 90h
DEFINE HSER_BAUD 19200

DEFINE LCD_DREG PORTb
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTb
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTb
DEFINE LCD_EBIT 3

cmcon=7
trisb=%00000010
trisa=%00000001

a var byte
b var byte
c var byte
d var byte
e var byte

ANAPROGRAM:

hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
pause 50
LCDOut $fe, 1,hex2 a,hex2 b,hex2 c,hex2 d,hex2 e
pause 10

goto anaprogram

end

aslında çok basit kodlar...ama isiste çalışıyo..bu şekilde bilgiyi alıp işleyebiliym...gerçekte nasıl olcak onu çözemedim hocam....abi devrelerle ilgili resimler bu konumuzda 1.sayfada var ete abi...

saygılarla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Aralık 2009, 20:10:12
Normalde kaç MHZ de çalıştırıyorsun ?

Yada elinde hangi kristaller var.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 20:14:04
hocam isiste çalışan halde 4 mhz....ama ben bord üzerindeki devremde 4 dendim 6,12 ve 16 mhz de dendim..tabi entegreyi yüklerken herzaman hs ve xt olayınıda göz önünde bulundurdum...hocam acaba devreden gelen baund hızı 19200 değilmi? ama isiste sorunsuz çalışıyo 19200 den başka çalışmıyo isiste...yani bilgisayara girdiğim anda....hocam 1.sayfada hem devre şeması hem benim isisteki kurlumum var...bakabilirmisiniz...

saygılarımla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Aralık 2009, 20:17:13
Senden cevap beklemeden bazı önerilerde bulunacağım.

Bir defa bu sistem 4 MHz de kesinlikle çalışmaz. En az 10 Mhz kristal olmalı.
Bu nedenle programın değişen kısımlarını hem 10Mhz hemde elind olduğunu söylediğin 16 Mhz için vereceğim.

Önce 16 MHz'e göre programı veriyorum.


INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 16
'--------------------------------------------------------------------------------------------
'***********************SERIAL COMM DEFINITION**********************

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 12  ' 19200 Baud @ 16MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

DEFINE LCD_DREG PORTb
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTb
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTb
DEFINE LCD_EBIT 3
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us

cmcon=7
trisb=%00000010
trisa=%00000001

a var byte
b var byte
c var byte
d var byte
e var byte

ANAPROGRAM:

hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
pause 50
LCDOut $fe, 1,hex2 a,hex2 b,hex2 c,hex2 d,hex2 e
pause 10

goto anaprogram



Şimdide 10 MHz e göre programı veriyorum.


INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 10
'--------------------------------------------------------------------------------------------
'***********************SERIAL COMM DEFINITION**********************

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 32  ' 19200 Baud @ 10MHz, -1,36%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically


DEFINE LCD_DREG PORTb
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTb
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTb
DEFINE LCD_EBIT 3
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us

cmcon=7
trisb=%00000010
trisa=%00000001

a var byte
b var byte
c var byte
d var byte
e var byte

ANAPROGRAM:

hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
pause 50
LCDOut $fe, 1,hex2 a,hex2 b,hex2 c,hex2 d,hex2 e
pause 10

goto anaprogram


Dene bakalım ne olacak.

Ete

Not LCD için command gecikmesi koydum tekrar bak programlara.

Şayet 12 Mhz için kullanacak isen;
Define OSC 12 yazman lazım.
Bir de aşağıdaki satırları değiştir.

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 38  ' 19200 Baud @ 12MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 20:27:12
ALLAHIM ALLAHIMMMMMMMMMMMMM OLDUUUUUUU OLDUUUUUUUUUUUUUUUU!!!!!!!!!! :D:D:D:D:D HOCAM SANA BEN NE DİYİM BİLEMİYORUMKİ!!!!!!!! HOCAM ALLAH SENDEN BİN KERE RAZI OLSUN YA....OLDU HEMDE SÜPER ÇALIŞIYO HOCAM..:D:D ABİ ARADA HİÇ TRN FİLAN YOK....ATTİNY NİN 3 BACAĞINI DİREK PİCİN RX İNE GİRDİM...SONRA  
SENİN YARDIMINLA HSER TANIMLAMALARINA BANA GÖNDERDİKLERİNİ EKLEDİM İNANILNMAZ ÇALIŞYO!  :D:D:D:D HOCAM ÇOK SAĞOLUN..
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 20:32:17
HOCAM ŞİMDİ ARTIK PROJELERİMİ HAYAA GEÇİREBİLİRİM...ÖNCE KARAKÖYDEN Bİ ESNAF ABİMİN İSTEĞİ VAR...10 AYRI KART İLE 10 RÖLE ÇALILACAK....SONRA DA KULLANICI TANIMLAMALI RFİD KİLİT....SAYENİZDE BU PROJELERİME BAŞLAYABİLECEĞİM...BİTTİKTEN SONRA DA SİZİN ŞEREFİNİZE BURADA YAYINLAYACAĞIM...ÇOK TEŞEKKÜĞREDERİM ABİ... :)

SAYGILARIMLA
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 20:34:31
HE ETE ABİ BİRDE ORADAKİ 12 RAKAMI 19200 BAUND VE 16MHZ Yİ GÖSTYERİYOR SANIRIM...BUNU BANA ANLATIRMISINIZ HOCAM...YANİ BEN 20 MHZ KULLNAIR İSEM NASIL BELİRLEYECEĞİM...


SAYGILARIMLA
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 20:50:54
HOCAM HEM KONUYU TAKP EDEN ARKADAŞLAR VARSA ONLAR İÇİN HEMDE SİZDE Bİ BAKIN DİYE GÖNDERİYORUM..BU KODLAR İLE 10 ADET YADA SAYISI ARTTIRABİLİR RFİD 125 KHZ KART İLE KULLANICIYA AİT RÖLE DEVRESİ YAPILIYOR ŞİMDİ BORDDA DENEDİM HARİKA ÇALIŞIYOR...BİLİYOSUNUZ HOCAM BU RFİD KARTLARIN HERBİRİ AYNI PARMAK İZİ FARKLI İD NUMARALIYLA ÜRETİLİYOR...BENDE GELEN BİLGİ ŞU ŞU ŞU İSE 1.RÖLE ÇEKSİN ŞEKLİNDE BİR SENARYO YAPTIM...KODLAR ŞÖYLE

INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 16
'--------------------------------------------------------------------------------------------
'***********************SERIAL COMM DEFINITION**********************
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 12  ' 19200 Baud @ 16MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

trisa=0
trisb=%00000010
portb.0=0
portb.7=0
cmcon=7

a var word
b var word
c var word
d var word
e var word

role1 var porta.0
role2 var porta.1
role3 var porta.2
role4 var porta.3
role5 var portb.0
role6 var portb.3
role7 var portb.4
role8 var portb.5
role9 var portb.6
role10 var portb.7

porta.3=1:pause 400:porta.3=0:pause 400:porta.3=1:pause 400:porta.3=0:pause 400

BASLA:
hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
if a=$1C and b=$00 and c=$C7 and d=$4F and e=$72 then
role1=1:pause 1000:role1=0
endif
if a=$1C and b=$00 and c=$C7 and d=$4F and e=$DD then
role3=1:pause 1000:role3=0
endif
if a=$1C and b=$00 and c=$C7 and d=$46 and e=$54 then
role5=1:pause 1000:role5=0
endif
if a=$1C and b=$00 and c=$AE and d=$9E and e=$29 then
role7=1:pause 1000:role7=0
endif
if a=$1C and b=$00 and c=$C7 and d=$86 and e=$A2 then
role9=1:pause 1000:role9=0
endif
GOTO BASLA
END


İLGİLENEN ARKADAŞLAR VARSA FAYDALANABİLİR...

SAYGILARIMLA
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Aralık 2009, 21:12:53
Gulbey84,

20 Mhz kullanırsan değişecek satırlar şunlar olacak.

Önce programın kristal frekansını belirlemen gerek.
Define OSC 20

Sonra 20 MHz için hesaplanmış Hserin parametrelerini değiştirmen gerek.
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 64  ' 19200 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Başka bir şey yok.

Sonunda başardın. Tebrik ederim. Ama epeyce tecrübe sahibi oldun değilmi. Uğraştın ama değidi doğrusu. Tebrik ediyorum.

Hadi bakalım Kolay Gelsin
ETE

Bu RFID sistemi kaç paradır. Alıcı kısım kaç para ve her bir okutulacak RFID kartı kaç para?.
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 23:07:46
ete abi çok haklısın...özellikle seninde katkılarınla baya bi tecrübe sahibi oldum...bizim meslekte tecrübe hayati değer taşıyor gerçekten...çok sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us) abi :) abi bu rfid okuyucu devre bir italyan adamın projesi linki şu http://www.electronics-lab.com/blog/?tag=rfid bu siteden italyanca bi siteye yönlendiriyo...ama ordan devrenin resmine bakarak dosyaları indirebilirsin.abi bu devrede pek bişey yok...attiny2313 var...osilator kısmı var bide güzelce bi bobin sarıyosun...ama tabi bobin ayarı çok önemli...ingilizceye çevirip bakabilirsin abi..bu devrede rfid kartı okuttuğunda hem bir çıkışı 2 saniye boyunca lojik 1 oluyo (röle mesela) aynı anda da 3.bacağından okunan kartın id sini yolluyo....tabi devreyi bu şekilde kullanmak taktir edersinki çok basit olacaktı..bende ne yaptım öncelikle senin yardımların sayesinde sonra da biraz uğraşarak bu gelen seri bilgiyi başka bir işlemciyle alıp istedğim gibi işlemeyi öğrendim...böylece yüksek güvenlikli  rfid kontrol sistemleri tasarlayabilecektim... hocam rfid okuyucu kısmı 10 kağıdı geçmez...pic ile alıcı kısmı da zaten birlikte konuştuk hep....rfid okuyucu kartı bana veren esnafla samimiyetim yok selanik pasajında yeni açtı çünkü adam kartı da bitek ondan alıyorum 2 tl....ama tabi miktarlı olursa daha az fiyat der...tabi başka yerlerde 50 kuruşa kadar varmış abi...rfid alıcı kısmı benim için 10 lira tutuyo...ama normal müşteri gibi düşünsende en fazla 20 tutsun! kartda tanesi 2 lira....e pic kısmıda zaten malum hocam...hocam ben bu devreyi çok küçük yaptım smd lerle (osilator kısmını) birde öle bi kutu buldumki tam rfid devreleri için tasarlanmış küçücük bişey oldu..bakın resimlerini atıyım buraya...duvar tipi...eğer yapmaya niyetlenirsen attiniy yükleme konusunda tecrüben yok ise ben sana yardım ederim abi...
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 23:18:04
(http://pic1.resimupload.com/r9/thumb_122018674.jpg) (//www.resimupload.com/ds122018674_budur1.html)
(http://pic1.resimupload.com/r1/thumb_305637271.jpg) (//www.resimupload.com/ds305637271_budur2.html)
(http://pic1.resimupload.com/r9/thumb_727589443.jpg) (//www.resimupload.com/ds727589443_budur.html)
(http://pic1.resimupload.com/r10/thumb_934581785.jpg) (//www.resimupload.com/ds934581785_asasasas.html)
(http://pic1.resimupload.com/r10/thumb_227132780.jpg) (//www.resimupload.com/ds227132780_rrrr_(1).html)
(http://pic1.resimupload.com/r1/thumb_902598001.jpg) (//www.resimupload.com/ds902598001_rrrr_(2).html)
(http://pic1.resimupload.com/r4/thumb_199239993.jpg) (//www.resimupload.com/ds199239993_rrrr.html)

ete eğer istersen şimdiye kadar hazırladğım bütün dosyaları püf noktalarını sana bi dosya halinde yollarım abi....tabi bur da da paylaşırız....birde abi şu 20 mhz hser olayını tam anlamadım.abi mesela 4 mhz için ordaki rakam kaç olacak...yani hesaplama nasıl oluyor abi orda

saygılarımla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 23:19:27
DEFINE HSER_SPBRG 64 ' 19200 Baud @ 20MHz, 0,16%

yani abi buradaki 64 20 mhz ve ayrıca 19200 baund demek...neye göre 64 rakamı ki abi...meslea 4 mhz kullancam zaman oradaki rakamın kaç olması gerekir..sevgilerimle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Aralık 2009, 23:39:27
hocam burada hem takip eden arkadaşlar varsa yanlış anlaşılma olmasın...bahsettiğimiz rfid alıcı modül bu bildiğimiz parallax gibi hazır rfid alıcı modül değil...bir italyan mühendisin tasarlamış olduğu attiny2313 le yapılan rfid alıcı modül...yani herşey el yapımı...işte tek skıntı adam kaynak kodu vermemiş..ama neredeyse 1,5 aydır üzerine çalışıyorum..değişik şekillerde tasalayıp uyguladım ve demo olmadığını göürdüm..üstelik performansıda çok yüksek..bobinin tur sayısına göre maximum 6 cm de çekiyor kartı...hocam birde resimlerde gördüğünüz gibi o kutuda bobini dikdörtgen şeklinde sarıp üst kapağın kenar kısımlarına güzelce yerleştirip silikonladım...işlemci haricinde diğer birçok malzemeyi smd koyup küçücükte bir röle koydum...resimdeki devrede dc 12 volt ve röle çıkış kabloları var...uygulamak istedğiniz anda bana bir mesaj atarsınız size kutuyu alıp gönderirim..yada diğer arkadaşlar için yerini söliyim selanik elektronikte en alt katta GRUP elektronik.. hocam buda benim hazırladığım pcb ve devrenin diğer dosyaları buyrun

http://www.dosyaupload.net/download.php?file=878ef150.rar

saygılarımla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 13 Aralık 2009, 00:04:55
İstediğin değerler 16F877 data sheet 100. sayfada gösteriliyor. Bilgileri oradan alıyorum. Aslında bu konuda bir de program var. Bazen ordan da bu değerleri alabiliyorum. Programın adı PicMultiCalc Bu programın bazı diğer faydalı seçenekleride var. Tavsiye ederim.

4 MHz de bu devre çalışmaz. 19200 Baud bayağı hızlı bir haberleşme olup 4MHz kristal frekansında hata oranı %8 civarın yükseliyorki buda okuma hatası olasılığını bayağı artırır. O nedenle en az 10 Mhz kullanmak gerekir.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 13 Aralık 2009, 15:05:47
indirdim ve çözdüm hocam...gerçekten çok faydalı olabilecek bir yazılım....hocam birde dediğiniz gibi 4 mhz de sorunlar çıkabilir..ayrıca zaten attiniy2313 devresinde kullanılan kristal de 16 mhz...bende devremi 16 mhz ile kurduğumda süper çalışıyor...teşekkürederim

saygılarımla
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 21 Aralık 2009, 20:40:45
değerli meslektaşlarım ve sevgili ete hocam...

ete hocam bu konuda bana verdiğiniz bilgiler sayesinde baya bi ilerleme katettim...fakat haftalardır uraşmama rağmen yine de bir konuda yetersiz kaldım...

hocam şimdi ben bir sistem tasarladım..burada rfid okuyucu devreden aldığım kart id sini alabiliyorum...işleyebiliyorum....fakat okuttuğum kartı eeproma keydetmeyi ve daha sonra da okutup doğrulatmayı bir türlü yapamadım...ama tabi bu basit anlamda bir okuma ve yazma işlemi değil...bir kere aldığım bilgi 5 ayrı değişkende geliyor...yani şöyle anlatayım..


basla:
PAUSE 10
hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
PAUSE 20
if a=$1C and b=$00 and c=$C7 and d=$4F and e=$72 then
goto kaydet
else
goto oku
endif
goto basla

burada önceden tanımladığım kart diğer kartları eproma kaydetmem için anahtar kart olacak hocam...ben bu kartı okutmadığım sürece sistem sürekli normal şekilde çalışacak..yani okunan kartı doğrulayacak epromda varsa bir iş yapacak(röle çekecek) yoksa yapmayacak(hata verecek)
dahası ben bu şekilde düşündüm hocam çünkü devrede hiç buton olmayacak...eğer buton kullansaydım butona basılıyken eproma okunan idleri kaydet basılı değilse normal şekilde çalış gibi yapabilirdim..ama hiçbir şekilde buton olmaması gerek...yani belirledğim bir kart ile eproma kaydetme işlemini gerçekleştireceğim...bu kart okunmadığı sürece sistem normal işleyişine devam edecek (okunan kartı doğrulama) sizce nasıl başlamalıyım nereden başlamalıyım..tmro kesmesi ile mi yola çıkmalıyım.... yada hocam mesela tmr0 kesmesi kullarak 15 saniye içinde şu işi yap 15 saniye dolunca o işi kes ve şuraya atla şeklinde nasıl yapabiliriz...eproma kayıt okuma kısımlarını sonraya bıraktım..çünkü önce burayı çözmeliyim hocam

saygılarımla

gulbey
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 21 Aralık 2009, 23:20:50
İşe önce karşılaştırma meselesi ile başlayalım.
Sen zaten nasıl bir karşılaştırma olabileceğini yazmışsın.
Bu işin iki yolu var. Birincisi gelen 5 adet byte bilgisi ile hafızadaki yada eepromdaki 5 adet byte bilgisini birer birer karşılaştırmaktır.
Eşitlik var ise istenen iş yapılır yok ise iş yapılmaz yada bir mesaj verilir.

Bu işin ikinci yolunda ise madem gelen byte lar 5 adet o haşde 2 şerli gurup yapılır ve  ilk iki byte word'e çevrilir. Sonraki 2 adet byte da worde çevrilerek 2 word ve 1 byte karşılaştırılır. Ama bu işleme sanırım gerek yokçHem karışık hemde işi uzatacak.

Anladığım kadarı ile bir Master kard ile bazı işlerin yapılmasını sağlamak istiyorsun. Master okutulup ardından belli bir süre içinde ikinci kart okunursa ikinci kartı kayıt edeceksin. Doğru anlamışımdır umarım.
Bunun için tabiiki Timer1 veya timer0 çalıştırılmalıdır. Anak hiç birisinin süresi sana 15 sn gibi uzun bir süre sağlamayacaktır. O halde yine kesme ye başvurup ayrıca bir sayaç değişkenide çalıştırmak gerekecektir. Örneğin her 500 ms de bir kesme çalıştırıp her kesmede sayac değişkenini bir artıracaksın. Böylece sayac=30 olduğunda hala ikinci kart okutulmamış ise okuma bekleme işlemini iptal edip normal çalışma moduna döneceksin.

Şayet kart zamanında okutulmuş ise gidip eeproma yazacaksın.
Yazma işinde write adres,byte  ve ardından 10ms lik bir gecikme vermek gerekir. Bunu yazdıktan sonra adres değerini bir artırıp diğer byte yazılmalı ve bu şekilde 5 adet byte kayıt edilmelidir.
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 09 Ocak 2010, 17:45:44
ete abi daha bugün bakabildim abi...abi arada yine bayağı bi uraştım burada belirttiğin şekilde de yapmak için uraştım ama bir türlü bir yazılım ortaya çıkaramadım.....abi işin özeti şudur...

ben rfid kartı okuttuğum anda pic in rx ine 1CAE007854 (BU FORMATTA) BİR SERİ BİLGİ GELİYO.... ve ben bu kart id sini

a var byte:b var byte:c var byte:d var byte:e var byte

hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] şekilde alabiliyorum

ayrıca gelen bilgiyi

hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
write 0,a:pause 10
write 1,b:pause 10
write 2,c:pause 10
write 3,d:pause 10
write 4,e

şeklinde eeproma kaydedebiliyorum ve okuyabiliyorum...

FAKAT BURADA BECEREMEDĞİM VE SORMAK İSTEDĞİM ŞEY BİRDEN FAZLA OKUTTUĞUM KARTI EPROMA KAYDEDİP VE SONRA DA OKUTUP DOĞRULAMAK..YANİ SENİN DE DEDĞİN GİBİ TANIMLI TANIMSIZ OLAYI:..MESELA BİR BUTON OLACAK...BUTON 0 OLDUĞU SÜRECE SÜREKLİ READ YANİ OKUMA VE DOĞRULAMA MODUNDA ÇALIŞACAK BUTON 1 OLDUĞU SÜRECE İSE OKUNAN HER KARTI EPROMA KAYDE DECEK...MESELA MAKSİMUM 10 KART KAYDEDCEK...

ETE ABİ..SİZ BANA ÇOK YARDIMCI OLDUNUZ...AMA BU KISIM DA DA OLDUKÇA YETERSİZ KALDIM...BURADA DA BANA Bİ KOD RUTİNİ ŞEKLİNDE YARDIMCI OLABİLİRMİSİNİZ...?

YANİ GELEN XXXXXXXXXX ŞEKLİNDEKİ 10 HANELİ 40 BİTLİK KART İD SİNİ 5 AYRI PARÇA HALİNDE EPROMA KAYDETMEYİ DAHA DOĞRUSU 10 ADET KART İD SİNİ EPROMA ALMAYI VE SONRA OKUTUP DOĞRULAYIP NETİCEYE KAVUŞTURMASINI BANA ANLATABİLİRMİSİNİZ

SAYGILARIMLA
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 09 Ocak 2010, 19:32:17
Kod örneği veririm ancak işin yalnızca o kısmını yazarsam havada kalacak ve bir sürü soru daha soracaksın.
O nedenle en iyisi yazdığın kodu bana yolla arasına kodu monte edeyimki sistemin bütünlüğü bozulmasın.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 09 Ocak 2010, 22:14:28
INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 20

@ DEVICE pic16F628a 'islemci  
@ DEVICE pic16F628a, WDT_on 'Watch Dog timer açık
@ DEVICE pic16F628a, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628a, PROTECT_OFF 'Kod Koruma kapalı

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 15  ' 19200 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giris çıkıs
trisb=%11111111
trisa=%00000000

a var byte
b var byte
c var byte
d var byte
e var byte


ROLE VAR PORTA.0
LED VAR PORTA.2
BUZZER VAR PORTA.3
buton var portb.4

basla:
if buton=0 then normalmod
if buton=1 then kartkaydet
goto basla

normalmod:
hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
................................
.............................
.................................
................................
.................................

goto basla

kartkaydet:
hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
.............................................
..............................................
...............................................
..............................................
..............................................
..............................................
goto basla
end


ETE ABİ BURADA NORMAL MODDA SÜREKLİ KART OKUMAYI BEKLİCEK...KART OKUNDUĞUNDA EĞER BİLGİ DAHA ÖNCE TANIMLANAN İD BİLGİSİYLE AYNIYSA RÖLE ÇEKECEK...BUTON 1 İKEN İSE KART OKUMAYI BEKLİCEK VE OKUNAN HER KARTI EPROMA KAYDEDİCEK...AMA 20 KART SINIRI OLUCAK...

TEMEL OLARAK BUNU YAPMAM LAZIM HOCAM...TABİ İŞİ ÖZÜNCE BUTONLA YAPMICAM GERÇEKTE...BİR MMASTER KART BELİRLİCEM O KARTI OKUTTUKTAN SONRA 40 SANİYE İÇİNDE OKUNAN TÜM KARTLAR EPRTOMA KAYDOLUCAK...AMA BİZ BUTONLU BİR ŞEKİLDE ÇALIŞALIM ABİ....SEVGİLERLE
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 09 Ocak 2010, 23:49:57
Bir şeyler karaladım. Aslında işini görür bu yazdıklarım.
Düzeltme gerektirebilir. Dene bakalım.

Ete

INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 20

@ DEVICE pic16F628a 'islemci
@ DEVICE pic16F628a, WDT_on 'Watch Dog timer açık
@ DEVICE pic16F628a, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628a, PROTECT_OFF 'Kod Koruma kapalı

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 15 ' 19200 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giris çıkıs
trisb=%11111111
trisa=%00000000

a var byte
b var byte
c var byte
d var byte
e var byte
POZ VAR BIT


ROLE VAR PORTA.0
LED VAR PORTA.2
BUZZER VAR PORTA.3
buton var portb.4

basla:
if buton=0 then normalmod
if buton=1 then kartkaydet
goto basla

normalmod:
         hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
         gosub KAYITBAK
         IF POZ=1 then
           ROLE=1
           LED=1
         ELSE
           ROLE=0
           LED=0
         ENDIF    
         goto basla

kartkaydet:
         hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
         Read 0,KAYIT
         if KAYIT=255 THEN KAYIT=1
         IF KAYIT>20 then
           LCDOUT $FE,1,"KAYIT LIMITI DOLDU"
           PAUSE 1000
           GOTO BASLA
         ENDIF  
         KAYITSIRA=10+(KAYIT-1)*5 '(Kayıt=1-sıra=10),(Kayıt=2- sıra=15), Kayıt=3-Sıra=20).....(Kayıt=20-Sıra=105)
         'Önce okunan kart eski kayıtlar içinde varmıdır bakmak gerek.
         GOSUB KAYITBAK
         IF POZ=1 then basla 'bu kayıt var başa dön kayıt yapma
         write KAYITSIRA, A :PAUSE 10
         WRITE KAYITSIRA+1,B:pAUSE 10
         WRITE KAYITSIRA+1,C:pAUSE 10
         WRITE KAYITSIRA+1,D:pAUSE 10
         WRITE KAYITSIRA+1,D:pAUSE 10
         KAYIT=KAYIT+1
         WRITE 0,KAYIT
         GOTO BASLA
'kayıt 20 adet ise 21 inci kayıt gelince program ne yapacak?.
'iki şeyden birini yapabilir. Kayıt limiti doldu der ve yapmadan çıkar
'yada en baştan yeniden başlar eskisinin üzerine kayıt yapar. hangisini tercih edeceksin?
'Burada mevcut kayıt adedini epromun 0 nolu adresinde tutmak en akıllıcası. Oradaki değeri okuyup 20 den küçük ise
'otomatik adres belirleyip kayıt yapmak gerekir.

KAYITBAK:
       POZ=0 'KAYITLI DEĞİL
       For I=10 to 105 step 5
         read I,temp
         if TEMP=A then
            read I+1,temp
            IF TEMP=B then
               READ I+2,TEMP
                 IF TEMP=C THEN
                    READ I+3,TEMP
                      IF TEMP=d THEN
                        READ I+4,TEMP
                          IF TEMP=e THEN
                             LCDOUT $fe,1," BU KART KAYITLI!!!"
                             pause 1000
                             POZ=1 'KAYITLI
                             RETURN
                          endif
                      endif      
                 endif
            endif
         endif
       next
   RETURN
end
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Ocak 2010, 00:29:43
ete hocam....verdiğiniz kodlar ile biraz çalıştım fakat netice alamadım....değişkenleride ekledim...küçük bir hata vardı onuda düzelttim....fakat bir türlü başaramadım...hocam ilk kartı okuttupumda direk olarak limit dolu mesajı veriyor... (kartkayıt) sonra ki incelemelerimde ise yalnızca bir adet kart kaydedebildiği gördüm...sizce burada göremediğim birşey varmı?....yada proteusta test ediyorum acaba o farkedermi hcoam... sağlıcakla kalınız....
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Ocak 2010, 08:02:59
Proteus yanıltıcı olabileceği gibi görmediğimiz bir husus da olabilir. Anlamak için ekrana kayıt limiti doldu mesajı gelince;
Hemen simulsayon pause butonuna bas (altta solda run butonu yanındaki)
Bu aşamada üstte bulunan debug menüsünü aç ve en altta yer alan seçeneklerden Picin eeprom bilgisini seç ve ekrana gelen bu pencerede eepromun 10 nolu adresi (hex olarak 0A) den itibaren FF den farklı bir kayıt varmıdır onları incele bakalım ne göreceksin.
Şayet gerçekten hafıza FF ler ile dolu ise programımızda hata avrdır. Ama FF den farklı değerler görüyorsan hafızayı kayıtlarla doldurmuşsun demektir.
Bu durumda programa belkide bir ilave ile mevcut kayıtları silme alternatifi ilave edilmesi gerekebilir.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Ocak 2010, 20:14:47
ete abi...dediğin şekilde biraz inceleme yaptım...buraya resimleri kouyorum...ilk olarak 1.kartı kaydettikten sonrki resmi koydum...dğer resim ise birkaç kart okuttuktan sonraki hali....eprom tablosundan pek birşey anlayamadım ama sanırım bir karışıklık oluyor...resimlerden bakabilirsin abi altta..

bu 1 adet (ilk okuttuğm kart hali) kart okunduğundaki sonuç

(http://pic1.resimupload.com/r8/thumb_653449922.PNG) (//www.resimupload.com/ds653449922_ilkkart.html)


abi buda birkaç (5) kart okuttuğumdaki sonuç...

(http://pic1.resimupload.com/r10/thumb_809377729.PNG) (//www.resimupload.com/ds809377729_birkackart.html)


abi birde dediğin gibi aslında silme rutini olması gerek...bir buton daha eklediğimizi düşünelim...o butonda 1 iken okunan kart eğer kayıtlı ise onu silsin...sanırım erase komutuyla olacak...abi sana zahmet silme işleminide işin içine ekleyebilirmiyiz....

sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Ocak 2010, 20:32:54
abi bu arada aynı kartı 20 defa okuttuktan sonra 21.de kart limiti doldu diyerek uyarı verior...birkaç harf düzelrme yaptım kayıt sayısında sorun kalmöadı....ama sanırım eproma id kayıt ve okuma kısmında bir sorunumz var? sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Ocak 2010, 20:51:36
(http://pic1.resimupload.com/r2/thumb_119387701.PNG) (//resimupload.com/ds119387701_434.html)


ete hocam bakınız burada da yine eprom sıfırken ilk okuttuğum karttın eprom verileri var...hocam sanki 5 parça halinde değilde id nosunun ilk parçasını kaydediyor sadece? yani a,b,c,d,e değilde sadece a kaydediyor gibi geldi bana....daha doğrusu 10(0A).adreste a 11.adres,b 12.adres c,13.adres d,14.adres e olması gerekmiyormu hocam...ama burada 10.adres(0A) a (doğru) sonrasında 11.adres e oluyor...ve 14 e kadar da ff.... sanırım şu kısımda br sorun var hocam

KAYITSIRA=10+(KAYIT-1)*5 '(Kayıt=1-sıra=10),(Kayıt=2- sıra=15), Kayıt=3-Sıra=20).....(Kayıt=20-Sıra=105)
         'Önce okunan kart eski kayıtlar içinde varmıdır bakmak gerek.
         GOSUB KAYITBAK
         IF POZ=1 then basla 'bu kayıt var başa dön kayıt yapma
         write KAYITSIRA,A:PAUSE 10
         WRITE KAYITSIRA+1,B:pAUSE 10
         WRITE KAYITSIRA+1,C:pAUSE 10
         WRITE KAYITSIRA+1,D:pAUSE 10
         WRITE KAYITSIRA+1,e:pAUSE 10
         KAYIT=KAYIT+1
         WRITE 0,KAYIT
         GOTO BASLA ???????

sevgilerle

hocam mesajı düzeltiyorum...sanırım kaıt olayını çözdüm....
write kayıtsıra+1
write kayitsıra+2
write kayitsıra+3
şeklinde düzeltme yaptım yerli yerine oturdu.....
incelemeye devam ediyorum...hocam sizden ricam mevcut kodların içine buton2=1 iken okunan kart eğer kayıtlıysa onu sil işlemini ekleyebilirmisiniz..

sevgilerle

abi tekrar edit ettim! :) bahsettiğim düzenlemeden sonra sistem normal bieşekilde çalışıyor...yahu ete abi sen bu işi walla çok iyi biliyon ya! :) allah başarılarını daim etsin abi.... :) abi şimdi sadece bu kodlara silme işlemini eklemek kaldı...bunuda yaparsak süper olacak...  :)
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 12 Ocak 2010, 22:55:25
Biraz mantığını çalıştırınca hatanı kolaylıkla buldun.
Bir birini takip eden kayıtlarda adres değeride birer birer artmalı değilmi yoksa hep aynı yere kayıt yaparsın. Sende de öyle oluyor idi ve şimdi düzeldi.
Silme işinde benim aklıma gelen şöyle bir metod idi.
Silme yapılacak ise kartların tamamını silip yeniden kart kayıt etmek güzel olurdu diye düşünüyorum.
Ancak teker tekerde silme yapılabilir. Teker teker silme bayağı yüklü bir menü sistemi gerektirir. Senin düşündüğün ise okuttuğın kartın silinmesi şeklinde anlaşılan. Oda bir düşünce.

Okunan kartın silinmesi çok zor değil.
Ben adımları söyleyeyim sen yapmaya çalış bakalım yapabilecekmisin;
1. Önce kartı okut
2. Okunan kart mevcut kayıtlarda varmı bakılsın
3. Kart bulunursa hangi sırada olduğu tespit edilsin. (1-20) arasında hangi sırada olduğu bulunursa;  KAYITSIRA=10+(KAYIT-1)*5 formülü ile mevcut kayıdın silinmesi sağlanır.
Nasıl dersen
FOR I=0 to 4
write kayıtsıra+I,$ff
pause 10
next
komutları bu işi otomatik yapar. Ama bu konumda bir başka sorun ortaya çıkacak. Diyelimki ortadan bir kayıt sildik. Biz kayıt yaparken Kayıt değişkeninin sağladığı bilgiye göre kayıt yapıyorduk. Oda en son kayıt adresini göstereck idi. Bu durumda silinmiş kayıtlar için ayrıca bir kayıt tutmak gerekecek. Onuda şöyle düşündüm.
0 nolu adres yeni kayıt sıra numarası tutuyor
1 nolu adrese kaç tane silinmiş kayıt olduğunu yazarız.
2 nolu adresten itibaren 9 nolu adrese kadar da bu silinmişlerin adreslerini kayıt ederiz.
Bu nedenle yeni kayıt yaparken önce 1 nolu adrese bakarız. Şayet sıfır ise silinmiş kayıt yok demektir. O zaman 0 nolu adresteki kayıt sıra numarasını kullanırız. Ama 1 nolu adreste mesela 2 rakamı var ise 2 tane silinmiş kayıt var demektir. İlki 3 nolu adreste, ikinciside 4 nolu adrestedir.
Daima en sondakini alıp ona yeni kaydı koyarız. SOnrada silinmiş kayıt adedini bir azaltıp yeniden 1 nolu adrese kayıt ederiz. Olur biter.
Hadi kolları sıva sende bir şeyler düşün bakalım.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 12 Ocak 2010, 22:57:37
FOREVER ETE HOCA DİYORUM!! HOCAM ŞİMDİ ÇALIŞMAYA BAŞLIYORUM.. :)

sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 14 Ocak 2010, 23:40:41
ETE ABİ...OLAYI BİR ADIM DAHA İLERLETTİM VE DEVRE ÜZERİNDE HİÇBİR BUTON OLMADAN KAYIT VE SİLME İŞLEMLERİNİ YAPMAYA KARAR VERDİM..BU DURUMDA 1 KART KARTKAYDETME İÇİN 1 KARTTA SİLME İŞLEMİ İÇİN KULLANILACAK...HOCAM KAYIT ETME İŞLEMİNİ BELİRLEDİĞİM BİR KARTLA ÇOK GÜZEL BİR ŞEKİLDE YAPMAYI BAŞARDIM..BAKINIZ...

INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 20

@ DEVICE pic16F628a 'islemci
@ DEVICE pic16F628a, WDT_on 'Watch Dog timer açık
@ DEVICE pic16F628a, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628a, PROTECT_OFF 'Kod Koruma kapalı
@ DEVICE pic16F628a, HS_OSC

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 15 ' 19200 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giris çıkıs
trisb=%00000010
trisa=%00000010

a var byte
b var byte
c var byte
d var byte
e var byte
aa var byte
ba var byte
ca var byte
da var byte
ea var byte
ab var byte
bb var byte
cb var byte
db var byte
eb var byte

POZ VAR BIT
kayit var byte
kayitsira var byte
i var byte
temp var byte
u var byte
sayac var byte
sayac=0
aa=$1C:ba=$00:ca=$C7:da=$4F:ea=$72
ab=$1C:bb=$00:cb=$C7:db=$86:eb=$A2

ROLE VAR PORTA.0
LED VAR PORTA.2
BUZZER VAR PORTA.3
buton var porta.1
buzzer=1:pause 100:buzzer=0:pause 100:buzzer=1:pause 100:buzzer=0:pause 100:buzzer=1:pause 100:buzzer=0

basla:
led=1
sayac=0
hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
if a=aa and b=ba and c=ca and d=da and e=ea then
for u=0 to 1
pause 1000
sayac=sayac+1
if sayac<=9 then kartkaydet
next
if a<>aa or b<>ba or c<>ca or d<>da or e<>ea then
goto normalmod
endif
endif


HOCAM BURADA OKUNAN KART ÖNCEDEN TANIMLADIĞIM KART İSE KARTKAYDET LABELİNE GİDİYOR.KART KAYIT İŞLEMİDE NORMAL BİRŞEKİLDE GERÇEKLEŞİYOR.FAKAT OKUNAN KART BELİRLEDİĞİM MASTER KART İLE AYNI DEĞİLSE PROGRAM DİREK OLARAK NORMAL MODDA DEVAM EDİYOR...AMA BURADA BİR SORUNUM VARKİ SİLME İŞLEMİ İÇİN BELİRLEDİĞİM KARTI OKUTTUĞUMDA PROGRAM SİL: LABELİNE GİTMİYOR..ÇÜNKÜ O KARTI DA KAYDETME İÇİN TANIMLAIĞIM KARTİD Sİ İLE KARŞILAŞTIRIYOR HALİYLE PROGRAM NORMAL MODA GEÇİYOR...BURADA NASIL BİR TEKNİK UYGULAMALIYIM SİZCE HOCAM...AŞAĞIYA TAM KODLARI KOPYALIYORUM ABİ...

INCLUDE "MODEDEFS.BAS"

'***********************DEFINITIONS***************************************
DEFINE Osc 20

@ DEVICE pic16F628a 'islemci
@ DEVICE pic16F628a, WDT_on 'Watch Dog timer açık
@ DEVICE pic16F628a, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628a, PROTECT_OFF 'Kod Koruma kapalı
@ DEVICE pic16F628a, HS_OSC

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 15 ' 19200 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

CMCON=7 '16F628 de komparatör pinleri iptal hepsi giris çıkıs
trisb=%00000010
trisa=%00000010

a var byte
b var byte
c var byte
d var byte
e var byte
aa var byte
ba var byte
ca var byte
da var byte
ea var byte
ab var byte
bb var byte
cb var byte
db var byte
eb var byte

POZ VAR BIT
kayit var byte
kayitsira var byte
i var byte
temp var byte
u var byte
sayac var byte
sayac=0
aa=$1C:ba=$00:ca=$C7:da=$4F:ea=$72
ab=$1C:bb=$00:cb=$C7:db=$86:eb=$A2

ROLE VAR PORTA.0
LED VAR PORTA.2
BUZZER VAR PORTA.3
buton var porta.1
buzzer=1:pause 100:buzzer=0:pause 100:buzzer=1:pause 100:buzzer=0:pause 100:buzzer=1:pause 100:buzzer=0

basla:
led=1
sayac=0
hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
if a=aa and b=ba and c=ca and d=da and e=ea then
for u=0 to 1
pause 1000
sayac=sayac+1
if sayac<=9 then kartkaydet
next
if a<>aa or b<>ba or c<>ca or d<>da or e<>ea then
goto normalmod
endif
endif

normalmod:
       
         gosub KAYITBAK
         IF POZ=1 then
           ROLE=1:led=1:buzzer=1:pause 200:buzzer=0:PAUSE 700:ROLE=0
           LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=0:PAUSE 100:LED=1
         ELSE
           ROLE=0
           buzzer=1:pause 500:buzzer=1:pause 500:buzzer=1:buzzer=1:pause 500:buzzer=1:buzzer=1:pause 500:buzzer=0
           ENDIF
             
         goto basla

kartkaydet:
         hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
         Read 0,KAYIT
         if KAYIT=255 THEN KAYIT=1
         IF KAYIT>20 then
           led=1:pause 400:led=0:led=1:pause 400:led=0:led=1:pause 400:led=0:led=1:pause 400:led=0:led=1:pause 400:led=0:pause 400:led=0:led=1'KAYIT LIMITI DOLDU  
           GOTO BASLA
         ENDIF  
         KAYITSIRA=10+(KAYIT-1)*5 '(Kayıt=1-sıra=10),(Kayıt=2- sıra=15), Kayıt=3-Sıra=20).....(Kayıt=20-Sıra=105)
         'Önce okunan kart eski kayıtlar içinde varmıdır bakmak gerek.
         GOSUB KAYITBAK
         IF POZ=1 then
         pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
         goto basla 'bu kayıt var başa dön kayıt yapma
         endif
         write KAYITSIRA,A:PAUSE 10
         WRITE KAYITSIRA+1,B:pAUSE 10
         WRITE KAYITSIRA+2,C:pAUSE 10
         WRITE KAYITSIRA+3,D:pAUSE 10
         WRITE KAYITSIRA+4,e:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
         KAYIT=KAYIT+1
         WRITE 0,KAYIT
         GOTO BASLA

sil:
led=1:buzzer=1:role=1:pause 500:led=0:buzzer=0:role=0:pause 500:led=1:buzzer=1:role=1:pause 500:led=0:buzzer=0:role=0
goto basla

KAYITBAK:
       POZ=0 'KAYITLI DEĞİL
       For I=10 to 105 step 5
         read I,temp
         if TEMP=A then
            read I+1,temp
            IF TEMP=B then
               READ I+2,TEMP
                 IF TEMP=C THEN
                    READ I+3,TEMP
                      IF TEMP=d THEN
                        READ I+4,TEMP
                          IF TEMP=e THEN
                             POZ=1 'KAYITLI
                             RETURN
                          endif
                      endif        
                 endif
            endif
         endif
       next
   RETURN
End
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 15 Ocak 2010, 00:11:47
ETE ABİ SANIRIM BİRAZ ÇÖZDÜM OLAYI...AŞAĞIDAKİ ŞEKİLDE YAPTIĞIM ZAMAN AK İLE KARA KARIŞMIYOR...YANİ KART KARDETME KARIYLA KAYIT LABELİNE SİL KARTI İLE DE SİL LABELİNE DİĞER TÜM KARTLAR OKUTULDUĞUNDA İSE NORMAL OKUMA İŞLEMİ YAPIYOR...AMA SİZDE Bİ KONTROL EDERMİSİNİZ...BELKİ ÖNERİLERİNİZ VARDIR...HOCAM BİRDE BURAYA KADAR OLAN ÇALIŞMALARIMIZ GERÇEK DEVRE ÜZERİNDE DE ÇOK İYİ ÇALIŞTI :) FAKAT NEDENSE BAZEN VOLTAJ KESİP TEKRAR VERİĞİMDE OKUNAN KARTLARIN DEĞERLERİNİ TANIMIYO...SONRA DA TEKRAR DÜZELİP GÜZEL ÇALIŞMAYA BAŞLIYO...SANIRIM 20 MHZ İ DAHA DA BÜYÜTMEM GEREK..SİZCEDE BU TESPİTİM DOĞRUMUDUR? AŞAĞIYA KODLARI ATIYORUM ABİ.

aa=$1C:ba=$00:ca=$C7:da=$4F:ea=$72
ab=$1C:bb=$00:cb=$C7:db=$86:eb=$A2

basla:
led=1

hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
if a=ab and b=bb and c=cb and d=db and e=eb then
for u=0 to 1
pause 1000
GOTO sil
next
if a<>ab or b<>bb or c<>cb or d<>db or e<>eb then normalmod
endif

if a=aa and b=ba and c=ca and d=da and e=ea then
for u=0 to 1
pause 1000
GOTO kartkaydet
next
if a<>aa or b<>ba or c<>ca or d<>da or e<>ea then normalmod
endif


normalmod:
       
         gosub KAYITBAK
         IF POZ=1 then
           ROLE=1:led=1:buzzer=1:pause 200:buzzer=0:PAUSE 700:ROLE=0
           LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=1:BUZZER=1:PAUSE 100:LED=0:BUZZER=0:PAUSE 100:LED=0:PAUSE 100:LED=1
         ELSE
           ROLE=0
           buzzer=1:pause 500:buzzer=1:pause 500:buzzer=1:buzzer=1:pause 500:buzzer=1:buzzer=1:pause 500:buzzer=0
           ENDIF
             
         goto basla

kartkaydet:
         hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
         Read 0,KAYIT
         if KAYIT=255 THEN KAYIT=1
         IF KAYIT>20 then
           led=1:pause 400:led=0:led=1:pause 400:led=0:led=1:pause 400:led=0:led=1:pause 400:led=0:led=1:pause 400:led=0:pause 400:led=0:led=1'KAYIT LIMITI DOLDU  
           GOTO BASLA
         ENDIF  
         KAYITSIRA=10+(KAYIT-1)*5 '(Kayıt=1-sıra=10),(Kayıt=2- sıra=15), Kayıt=3-Sıra=20).....(Kayıt=20-Sıra=105)
         'Önce okunan kart eski kayıtlar içinde varmıdır bakmak gerek.
         GOSUB KAYITBAK
         IF POZ=1 then
         pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
         goto basla 'bu kayıt var başa dön kayıt yapma
         endif
         write KAYITSIRA,A:PAUSE 10
         WRITE KAYITSIRA+1,B:pAUSE 10
         WRITE KAYITSIRA+2,C:pAUSE 10
         WRITE KAYITSIRA+3,D:pAUSE 10
         WRITE KAYITSIRA+4,e:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
         KAYIT=KAYIT+1
         WRITE 0,KAYIT
         GOTO BASLA

sil:
led=1:buzzer=1:role=1:pause 500:led=0:buzzer=0:role=0:pause 500:led=1:buzzer=1:role=1:pause 500:led=0:buzzer=0:role=0
goto basla

KAYITBAK:
       POZ=0 'KAYITLI DEĞİL
       For I=10 to 105 step 5
         read I,temp
         if TEMP=A then
            read I+1,temp
            IF TEMP=B then
               READ I+2,TEMP
                 IF TEMP=C THEN
                    READ I+3,TEMP
                      IF TEMP=d THEN
                        READ I+4,TEMP
                          IF TEMP=e THEN
                             POZ=1 'KAYITLI
                             RETURN
                          endif
                      endif        
                 endif
            endif
         endif
       next
   RETURN
End

SEVGİLERLE[/B]
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 15 Ocak 2010, 08:09:49
Gülbey,

Programda bazı fazlalıklar yada lüzumsuz satırlar var onları çıkardım. Biraz sadeleştirdim.

Programın baş tarafına hemen değişken tanımlamalarından sonra
Pause 1000
şeklinde bir gecikme yaz. Bu programın ilk açılışta kendine gelmesini sağlar.
Genelde elektrik verilip kesilirse pic aptallaşır ve ardından dah atoparlamadan yenidenelektrik verirsen tamamen devre dışı kalabiliyor. Teknik bir izahatı var ama çok uzun açıklama. Öyle bil yeter. Bunu önlemek için baş tarafa büyükçe bir gecikme koyalım şimdilik.
Sigorta ayarlarından da yapılabilecekler var mesela brownout timer açılabilir. Kısaca pic in belirli voltaj seviyesine gelinceye kadar çalışmamasını sağlamalıyız. MCLR bacağına direncin yanı sıra MCLR ile GND arasına 220nf kondansatör bağla.

Bir de bazen oluyor dedğin durumlarda acaba senin hserin ile almaya çalıştığın kodlarmı gelmiyor?. Zira biz rastgele yerlere Hserin yazdık. Ya o anda bu 5 byte yeni verilmiş ve bir sonraki bekleniyor ise. Bu nedenle USART kesmesi kullanmak daha mı akllıca olurdu acaba. Bunu denemek gerek. Rfid kartından yollanan bu 5 byte ne sıklıkla yollanıyor biliyormusun. Sürekli bir şey yollanıyormu yoksa yalnızca kartı yaklaştırıncamı bir şey yollanıyor bunları belirlemek lazım. Normalde sürekli 5 adet sıfır yada $FF yollar kart yaklaşınca okur ve karta ait 5 byte yollanabilir. Yada bekleme konumunda hiç bir şey yollanmaz kart yaklaşınca okunur ve 5 byte yollanır gibi. Bunların hangisi geçerlidir.?

Neyse aşağıdaki şekilde bir çalıştır bakalım ne oluyor.

aa=$1C:ba=$00:ca=$C7:da=$4F:ea=$72
ab=$1C:bb=$00:cb=$C7:db=$86:eb=$A2

basla:
     led=1
     
     hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
     if a=ab and b=bb and c=cb and d=db and e=eb then
       pause 100
       GOTO sil
     else
       Goto Normalmod
     endif
     
     if a=aa and b=ba and c=ca and d=da and e=ea then
       pause 100
       GOTO kartkaydet
     endif

normalmod:

         gosub KAYITBAK
         IF POZ=1 then
           ROLE=1:led=1:buzzer=1
           pause 200
           BUZZER=0:PAUSE 700:ROLE=0
           For I=0 to 7
            BUZZER=1:LED=1
            PAUSE 100
            BUZZER=0:LED=0
            PAUSE 100
           NEXT            
         ELSE
           ROLE=0
           FOR I=o to 3
             Buzzer=1:pause 500
           next
           buzzer=0
         ENDIF    
         goto basla

kartkaydet:
           hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
           Read 0,KAYIT
           if KAYIT=255 THEN KAYIT=1
             IF KAYIT>20 then
             FOR I=0 to 5
               led=0:pause 400:led=1:pause 400
             NEXT
             led=1'KAYIT LIMITI DOLDU
             GOTO BASLA
           ENDIF
           KAYITSIRA=10+(KAYIT-1)*5 '(Kayıt=1-sıra=10),(Kayıt=2- sıra=15), Kayıt=3-Sıra=20).....(Kayıt=20-Sıra=105)
           'Önce okunan kart eski kayıtlar içinde varmıdır bakmak gerek.
           GOSUB KAYITBAK
           IF POZ=1 then
             pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
             goto basla 'bu kayıt var başa dön kayıt yapma
           endif
           write KAYITSIRA,  A:PAUSE 10
           WRITE KAYITSIRA+1,B:pAUSE 10
           WRITE KAYITSIRA+2,C:pAUSE 10
           WRITE KAYITSIRA+3,D:pAUSE 10
           WRITE KAYITSIRA+4,E
           buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
           KAYIT=KAYIT+1
           WRITE 0,KAYIT
           GOTO BASLA


daha hala sadeleşecek yerler var aslında bu led ve buzzer çıkışlarını bir alt programa versek lazım olunca oraya yollasak da fena olmayacak sanırım. Sıklıkla kullanılıyor. Ama bakıyorum de kullanım şekli bazen değişiyor. Mantığı anlamadığımiçin dokunmadım.
Bildiğim kendinden ses veren buzzer kullandınherhalde. O halde bir kere Buzzer=1 dedinmi buzzer ses vermeye başlar. Ardından yeniden buzzer=1 demen gerekmez. SOnradan yalnızca buzzeri kapatma komutunu buzzer=0 vermen yeterli olur.

Program satır takip eder. Çok kişinin yaptığı yanlışlığı sende yapıyorsun. Örnek vereyim.

IF A=5 then Goto Bak
IF A<>5 then Normal
Normal:
...
Şimdi burada programın çalışması açısından bir yanlışlık yok ama lüzümsuz komutlar var.
A=5 ise Bak isimli etikete gidilecek. A05 değil ise program zaten alttaki satıra atlayacak otomatikman. Orada sen bir ikinci if kullanman yersiz. Yani IF A<>5 then Normal  komutu orada son derece lüzumsuz. Bu komut olsada olmasada program zaten Norma isimili etikete geçecek.
Burada zaten iki şart vardır. Ya A=5 dir yada değildir. 5 ise Bakisimli etikete gidilecek değilse bir alttaki satır değerlendirilecektir. O halde orayada Normal isimli etiketi yazarsam kısa yoldan işim hallolur. Bu tür yanlışların var idi onları düzelttim.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 15 Ocak 2010, 19:34:25
hocam çok teşejkkürederim..sizden çok şey öğrendim!! hemen çalışmalarıma başlıyorumm

sevgilerle

gulbey
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 15 Ocak 2010, 20:07:03
hocam bu arada kartı bobine okuttuğunuz anda birkere yolluyo..1 saniyeden daha kısa süre kalıyo ve artık bilgi gönderilmiyo...yani 5 baytı sürekli yada uzun süre göndermiyor hocam...hocam dediğğiniz gibi programın başına pause 1000 ekliyip birazdaha üzerinde uraşıyım...ama 20 mhz zaten yeterlidir sanırım hocam...gerçi yarın için 20 mhz den büyük çeşitli değerlerde kristal sipariş ettim farklı kristallerlede deneyeceğim hocam...
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 17 Ocak 2010, 14:13:09
Alıntı yapılan: "ete"Biraz mantığını çalıştırınca hatanı kolaylıkla buldun.
Bir birini takip eden kayıtlarda adres değeride birer birer artmalı değilmi yoksa hep aynı yere kayıt yaparsın. Sende de öyle oluyor idi ve şimdi düzeldi.
Silme işinde benim aklıma gelen şöyle bir metod idi.
Silme yapılacak ise kartların tamamını silip yeniden kart kayıt etmek güzel olurdu diye düşünüyorum.
Ancak teker tekerde silme yapılabilir. Teker teker silme bayağı yüklü bir menü sistemi gerektirir. Senin düşündüğün ise okuttuğın kartın silinmesi şeklinde anlaşılan. Oda bir düşünce.

Okunan kartın silinmesi çok zor değil.
Ben adımları söyleyeyim sen yapmaya çalış bakalım yapabilecekmisin;
1. Önce kartı okut
2. Okunan kart mevcut kayıtlarda varmı bakılsın
3. Kart bulunursa hangi sırada olduğu tespit edilsin. (1-20) arasında hangi sırada olduğu bulunursa;  KAYITSIRA=10+(KAYIT-1)*5 formülü ile mevcut kayıdın silinmesi sağlanır.
Nasıl dersen
FOR I=0 to 4
write kayıtsıra+I,$ff
pause 10
next
komutları bu işi otomatik yapar. Ama bu konumda bir başka sorun ortaya çıkacak. Diyelimki ortadan bir kayıt sildik. Biz kayıt yaparken Kayıt değişkeninin sağladığı bilgiye göre kayıt yapıyorduk. Oda en son kayıt adresini göstereck idi. Bu durumda silinmiş kayıtlar için ayrıca bir kayıt tutmak gerekecek. Onuda şöyle düşündüm.
0 nolu adres yeni kayıt sıra numarası tutuyor
1 nolu adrese kaç tane silinmiş kayıt olduğunu yazarız.
2 nolu adresten itibaren 9 nolu adrese kadar da bu silinmişlerin adreslerini kayıt ederiz.
Bu nedenle yeni kayıt yaparken önce 1 nolu adrese bakarız. Şayet sıfır ise silinmiş kayıt yok demektir. O zaman 0 nolu adresteki kayıt sıra numarasını kullanırız. Ama 1 nolu adreste mesela 2 rakamı var ise 2 tane silinmiş kayıt var demektir. İlki 3 nolu adreste, ikinciside 4 nolu adrestedir.
Daima en sondakini alıp ona yeni kaydı koyarız. SOnrada silinmiş kayıt adedini bir azaltıp yeniden 1 nolu adrese kayıt ederiz. Olur biter.
Hadi kolları sıva sende bir şeyler düşün bakalım.

Ete


ETE HOCAM 2 GÜNDÜR BİRŞEYLER YAPMAYA ÇALIŞIYORUM AMA BU KONUDA BAYA Bİ EKSİĞİM OLDUĞUNU İYİCE ANLADIM...SÖYLEDĞİN ADIMLARDAN YOLA ÇIKARAK BİRŞEYLER YAPMAYA ÇALIŞTIM AMA SONUÇ ALAMADIM...YANİ BURADAKİ AMACIM KARTI OKUTTUĞUMDA OKUNAN KARTIN SİLİNMESİ VE TEKRAR PROGRAMIN NORMAL MODDA ÇALIŞMAYA BAŞLAMASI...DAHA SONRA BOŞALAN KART YERİNE DE YENİ KART KAYIT EDEBİLMEM...AMA BU DÜŞÜNCEMİ KOD OLARAK ORTAYA KOYAMADIM!! HOCAM SON OLARAK BUNUDA BANA YAZABİLİRMİSİN?BEN YİNEDE SENDEN CEVAP BEKLERKEN URAŞICAĞIM...SEVGİLERLE

GULBEY
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 17 Ocak 2010, 19:48:56
HOCAM DEVRE BAZEN SAPITIYOR DEMİŞTİM...ÇOK KISA SÜRELİ VOLTAJ KESİKLİĞİNDE SAPITIYOR...SANIRIM BUNUN SEBEBİ DE ŞU;

ATMEL KISMINDA DEVREYE İLK ENERJİ VERİLDİĞİNDE İLK OLARAK TASARLAYICININ ADI SOYADI SERİ OLARAK GÖNDERLİYO HOCAM...YANİ DEVEYE ENERJİ VERİLDİĞİNDE PİCE İKİ KELİME BİR YAZI GİRİYOR..SONRA DA BEKLEMEYE GEÇYOR..BİZ KARTI OKUTUNCA DA NORMAL ÇALIŞIYOR...ACABA BUNUN SEBEBİ BUMUDUR...SİZCE BUNU NASIL ENGELLEYEBİLİRİZ...ÇÜNKÜ ATMEL RFİD KISMININ KAYNAK KODLARI BİZDE YOK....SEVGİLERLE
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 17 Ocak 2010, 20:11:58
Gülbey84,
İstediklerine yarın bakabileceğim.

Programın sapıtmasına bir çözüm bulmak zor gerçekten.
Ancak sigorta ayarları ile oynayarak belki bir şeyler yapılabilir.
Her neyse yarın bakarım.
Bu arada Atmel tarafına müdahale şansımız yok tabiiki. Baştan yolladığı şeylerde önemli değil pic onları almayacaktır zaten. Alsa bir değerlendirmeyecektir.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 17 Ocak 2010, 21:49:51
çok sağolun ete hocam...sabırsızlıkla yarın olmasını bekleyeceğim....tabi bende yine uğraşıyorum hocam...sevgilerle
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 12:28:20
ete hcam hatırlatmak amacıyla yazdım bu mesajı.. :) sadece silme işlemini yapoamıyorum hocam...diğer problemler bence pek nemli değil...ona bi çözüm bulabiliriz...ama silme işlemi malum çok önemli..hocam birde 20 adet kayıt yapabiliyoruz demiştik ya...burada eproma (628a) maksimum kaç kayıt yapabiliriz? birde ben kayıt sınırını arttırmak istersem sadece mevcut yazılımdaki değerleri değiştirerek yapabilirmiyim? sevgilerle

gulbey
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 18 Ocak 2010, 13:32:50
628 eepromuna normalde 50 adet kart kayıt edebilirsin.

Kart kayıt kısmı ile uğraşacağım. Hatta kayıt + silme işini yeniden yapsak fena olmayacak.
Bu durumda varsayımları şöyle belirledim.
Bir adet sildirme kartı ve 1 adet ise yeni kayıt kartı var. Bunların haricindekiler ise normal çalışma ortamında okutuluna kartlar olacaktır.

İşlem şekli olarak da,
Yeni kayıt yapılacak ise önce kayıt kartı okutulacak.
Ardından ise kayıt edilecek kartın okutulması gerekir sanırım öyle değilmi?
Böylece ikinci gelen kart kayıt edilebilir.

Silme işleminde ise,
Önce sildirme kartı okutulacak sonra ardından silinecek kart okutulacaktır.
Böylece ikinci okunan kart kayıtlardan silinecektir.

Bunlara ekleyeceğin bir şey varsa yazarsın.

Kayıt ve silme ksımını açıkladığım şekle göre yeniden düzenledim.
Yeni sisteme göre kayıt sıra numarası tutmayacağız.
Boş olan kayıt da $ff,$ff,$ff,$ff kayıtları vardır düşüncesinden hareket ederek ilk yeni kaydı ilk okunan $ff kayıtlı yere kayıt edeceğiz.
Kartları silerkende mevcut değerleri yerine $ff yazacağız böylece o kayıt silinmiş boş kayıt hüviyetine kavuşacak.

Yeni şekil aşağıdadır. Bak bakalım çalışacakmı. Yalnız ufak bir durum var.
Normalde yeni kayıt yaparken, önce kayıt kartını okutuyorsun, bunu yapar yapmaz program hemen kayıt bölümüne geçip ikinci (kayıt edilecek kartın okutulmasını bekleyecek) orada komut sabit sen kartı okutmada gecikirsen ne yapacak program. Normalde Hserin komutunda bir kaç ms bekler ve bir şey gelmedi ise atlar geçer. Bu nedenle oraya bir komut ilave ettim ama sistem mantığını çok iyi bilmediğim için bu ilave sorunda yaratabilir.
İlave edilen kısım şöyle;
           A=0
           hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
           IF A=0 then KARTKAYIT  'henüz kart okunmadı ise
           GOSUB KAYITBAK
Önce A=0 dyoruz ve Hserin komutunu veriyoruz. Program orada bekliyor. Diyelimki sen kartı okutmada geciktin. Program bir şey okumadan atlayacak ve altta IF A=0 then KARTKAYIT komutunu görüp yeniden okumaya gidecektir.
Şayet kartları okumakta sıkıntı olur ise bu satırı (IF A=0 THEN KARTKAYIT) iptal edebiliriz. Benzeri Kartsil komutunda da yer alıyor.

Ete


aa=$1C:ba=$00:ca=$C7:da=$4F:ea=$72  'Yeni Kayıt kartı
ab=$1C:bb=$00:cb=$C7:db=$86:eb=$A2 'sildirme kartı

BASLA:
     led=1
   
     hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
     
     if a=aa and b=ba and c=ca and d=da and e=ea then KARTKAYIT      
     
     if a=ab and b=bb and c=cb and d=db and e=eb then KARTSIL

NORMALMOD:
'okunan kart silme veya kayıt kartı değilse normal okunan kart demektir. Ohalde program buraya gelir
         gosub KAYITBAK
         IF POZ=1 then 'kart kayıtlı ise
           ROLE=1:led=1:buzzer=1
           pause 200
           BUZZER=0:PAUSE 700:ROLE=0
           For I=0 to 7
            BUZZER=1:LED=1
            PAUSE 100
            BUZZER=0:LED=0
            PAUSE 100
           NEXT          
         ELSE  'kart kayıtlı değil ise
           ROLE=0
           FOR I=o to 3
             Buzzer=1:pause 500
           next
           buzzer=0
         ENDIF  
         goto basla

KARTKAYIT:
'KAYIT SİSTEMİNDE BOŞ OLAN KAYIT ARANMAKTADIR İLK BYTE $ff İSE O KAYIT BOŞTIR MANTIĞI GEÇERLİ
'VE HEM KART KAYITLIMI HEMDE BOŞ KAYIT VARMI DİYE BAKILMAKTADIR.
           A=0
           hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
           IF A=0 then KARTKAYIT  'henüz kart okunmadı ise
           GOSUB KAYITBAK
           IF POZ=1 then 'bu kayıt var başa dön kayıt yapma
             pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
             goto basla
           endif
           IF KAYIT=255 THEN
             FOR I=0 to 5
               led=0:pause 400:led=1:pause 400
             NEXT
             led=1'KAYIT LIMITI DOLDU
             GOTO BASLA
           ENDIF
           KAYITSIRA=10+(KAYIT-1)*5
           write KAYITSIRA,  A:PAUSE 10
           WRITE KAYITSIRA+1,B:pAUSE 10
           WRITE KAYITSIRA+2,C:pAUSE 10
           WRITE KAYITSIRA+3,D:pAUSE 10
           WRITE KAYITSIRA+4,E
           buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
           KAYIT=KAYIT+1
           WRITE 0,KAYIT
           GOTO BASLA
KAYITBAK:
       POZ=0:KAYIT=255 '
       For I=10 to 105 step 5
         read I,temp
         IF TEMP=$FF THEN KAYIT=I
         if TEMP=A then
           read I+1,temp
           IF TEMP=B then
             READ I+2,TEMP
             IF TEMP=C THEN
               READ I+3,TEMP
               IF TEMP=d THEN
                 READ I+4,TEMP
                 IF TEMP=e THEN
                   POZ=1 'KAYITLI
                   RETURN
                 endif
               endif
             endif
           endif
         endif
       next
       RETURN

KARTSIL:
       A=0
       hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
       IF A=0 then KARTSIL  'henüz kart okunmadı ise      
       FOR I=10 to 105
       read I,temp
         if TEMP=A then
           read I+1,temp
           IF TEMP=B then
             READ I+2,TEMP
             IF TEMP=C THEN
               READ I+3,TEMP
               IF TEMP=d THEN
                 READ I+4,TEMP
                 IF TEMP=e THEN
                   POZ=1:KAYITSIRA=I 'KAYITLI ve I sıra numarasında kayıtlı
                   RETURN
                 endif
               endif
             endif
           endif
         endif
       next
       temp=0
       RETURN
       IF POZ=0 then
         pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
         goto basla 'bu kart kayıtlı değilki silesin.
       endif
        A=$FF:B=$FF:C=$FF:D=$FF:E=$FF
        write KAYITSIRA,  A:PAUSE 10
        WRITE KAYITSIRA+1,B:pAUSE 10
        WRITE KAYITSIRA+2,C:pAUSE 10
        WRITE KAYITSIRA+3,D:pAUSE 10
        WRITE KAYITSIRA+4,E
        buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
        GOTO BASLA

   End        
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 19:17:56
Alıntı yapılan: "ete"

İşlem şekli olarak da,
Yeni kayıt yapılacak ise önce kayıt kartı okutulacak.
Ardından ise kayıt edilecek kartın okutulması gerekir sanırım öyle değilmi?
Böylece ikinci gelen kart kayıt edilebilir.

Silme işleminde ise,
Önce sildirme kartı okutulacak sonra ardından silinecek kart okutulacaktır.
Böylece ikinci okunan kart kayıtlardan silinecektir.

Bunlara ekleyeceğin bir şey varsa yazarsın.

 
[/code]

hocam aynen dediğiniz gibi...zaten şu anki mevcut sistemimizde bu şekilde çalışıyor...sadece silme işlemimiz yok idi....hemen şimdi yazdıklarınızı inceliyorum...tekrar size döneceğim hocamm...allah sizden yüzbinkere razı olsun!
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 20:08:51
ete hocam sanırım bir sorun var..normal mod güzel çalışıyor..ama kaydetme kısmında bir sorun var gibi...hocam ilk kartı okuttuğumda 12.adrese yazıyor(normal sayarsak 18.sıra. resimde altta) sanırım bikere yanlış yere kaydediyor...daha sonra 2.kartı kaydetmek istedğimde 1.kaydı siliyor onun üzerine yani yine 12.adrese yazıyor...zaten kaydedttğim kartı okuttuğumda da kayıtlı değil gösteriyor...sanırım burada bir sorun var hocam? ben inceliyorum ama baya karışık geldi...

[IMG]http://pic1.resimupload.com/r7/thumb_432819670.bmp[/IMG] (//www.resimupload.com/ds432819670_ads%C4%B1z.html)
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 18 Ocak 2010, 20:25:09
Sorunu buldum sanırım.

Kayıt kısmında

KAYITSIRA=10+(KAYIT-1)*5
WRITE KAYITSIRA,  A:PAUSE 10
WRITE KAYITSIRA+1,B:pAUSE 10

satırlarını bul ve
KAYITSIRA=10+(KAYIT-1)*5

satırı yerine;

KAYITSIRA=KAYIT
yaz.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 20:39:01
ete hocam kayıt işide tamam dediğinizi yaptım harika oldu...fakat sadece silme işlemi kaldı...sadece silme işlemi çalışmıyor hocam...size çok zahmet veriyorum farkındayım...ama buraya kadar gelipte projeyi bitirememek beni çok üzer hocam.... :( :)
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 18 Ocak 2010, 21:02:31
KARTSIL kısmında da hatamız varmış. Onuda buldum.

Aşağıdaki satırları bul

KARTSIL:
       A=0
       hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
       IF A=0 then KARTSIL  'henüz kart okunmadı ise      
       FOR I=10 to 105
       read I,temp
         if TEMP=A then
- A=0  satırını şöyle yaz:

 A=0:POZ=0

- FOR I=10 to 105 satırını şöyle yaz,

   FOR I=10 to 105 STEP 5

Dene bakalım düzelmesi lazım.
Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 21:11:02
KARTSIL:
       buzzer=1:pause 500:buzzer=0:pause 100:buzzer=1:pause 500:buzzer=0
       a=0:POZ=0
       hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'silinecek kartı okuduk
       IF A=0 then KARTSIL  'henüz kart okunmadı ise      
        FOR I=10 to 105 STEP 5
       read I,temp
         if TEMP=A then
           read I+1,temp
           IF TEMP=B then
             READ I+2,TEMP
             IF TEMP=C THEN
               READ I+3,TEMP
               IF TEMP=d THEN
                 READ I+4,TEMP
                 IF TEMP=e THEN
                   POZ=1:KAYITSIRA=I 'KAYITLI ve I sıra numarasında kayıtlı

hocam dediğiniz gibi düzenledim ama hiçbirşey değişmedi...acaba kaçırdığım küçük birşey varda ben mi göremiyorum? hiçbirşekilde kaydettiğim kartı silmiyo ete hocam?

sevgilerle

gulbey
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 18 Ocak 2010, 21:26:17
Bir kusur daha buldum.

KARTSIL kısmının tamamını  aşağıdaki satırlarla değiştir.

Ete


 
KARTSIL:
       A=0
       hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
       IF A=0 then KARTSIL  'henüz kart okunmadı ise      
       FOR I=10 to 105
       read I,temp
         if TEMP=A then
           read I+1,temp
           IF TEMP=B then
             READ I+2,TEMP
             IF TEMP=C THEN
               READ I+3,TEMP
               IF TEMP=d THEN
                 READ I+4,TEMP
                 IF TEMP=e THEN
                   POZ=1:KAYITSIRA=I 'KAYITLI ve I sıra numarasında kayıtlı
                   GOTO IKI
                 endif
               endif
             endif
           endif
         endif
       next
       temp=0

       IF POZ=0 then
         pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
         goto basla 'bu kart kayıtlı değilki silesin.
       endif
       
IKI:
        A=$FF:B=$FF:C=$FF:D=$FF:E=$FF
        write KAYITSIRA,  A:PAUSE 10
        WRITE KAYITSIRA+1,B:pAUSE 10
        WRITE KAYITSIRA+2,C:pAUSE 10
        WRITE KAYITSIRA+3,D:pAUSE 10
        WRITE KAYITSIRA+4,E
        buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
        GOTO BASLA
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 21:34:33
.-''''-.,.-''''-.
!    I LOVE   !             HOCAM ÇALIŞTI! :) sizi çok yordum hocam...hakkı
".   YOU   ."         nızı helal ediniz.... :) şimdi en baştan kodları okuyup
   '''-.,.-              bende anlamaya öğrenmeye çalışacağım...
.-''''-.,.-''''-.             çok ama çok sağolun hocam...allah bu vatanı sizsiz
!    I LOVE   !    bırakmasın!!
".   YOU   ."
   '''-.,.-

.-''''-.,.-''''-.
!    I LOVE   !
".   YOU   ."
   '''-.,.-

.-''''-.,.-''''-.
!    I LOVE   !
".   YOU   ."
   '''-.,.-
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 21:39:11
hocam birde son bi soru...sanırım bu programımızda kart kayıt sınırı belirlemedik...dolayısıyla yaklaşık 50 adet kart kayıtedilebilir ve silinebilir doğrumu hocam...zaten sınır olmaması daha iyi...50 de az değil sonuçta....
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: ete - 18 Ocak 2010, 21:39:57
Gözün aydın. Hadi geçmiş olsun.
Ne kadar çok sevindin!!.
Bezdirdi galiba. Ama sonu iyi oldu neyse. Bu gece rahat uyursun artık.

Ete
Başlık: !! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???
Gönderen: gulbey84 - 18 Ocak 2010, 21:44:11
:D hocam çok sağolun...bezmek olurmu hocam...pes etmek yakışmaz biz elektronikçilere....bezdirmedi ama gerçekten çok mutluyum hocam...çünkü takdir edersinizki bu üzerinde uğraştığımız proje öle her elektronikçinin uğraşacağı tipten bir proje değil! biraz şımardım galiba! :D:D hocam şaka bir yana da bu projenin çalışmasında en büyük pay sizin...çok sağolun çok varolun hocam..sevgilerle

gulbey