pic asm ile bin2bcd

Başlatan mesmert, 19 Eylül 2005, 18:25:07

mesmert

arkadaşlar pic ile 5 digit için bin2bcd çeviren program lazım ben microchipin sitesinden bu tür örnekler var ama çalıstıramadım forumda aratırdım bulamadım. ben asm kullanıyorum yardımcı olursanız sevinirim.

herkese kolay gelsin

HEXF2

Arkadaşım sana basit bir mantık söyliyeyim kendin yaz.BIRLER,ONLAR,YÜZLER ve BINLER olarak değişkenler ata daha sonra elde ettiğin yani Bİn2BCD ye çevirmek istediğin sayısan "0" kalana kadar yani STATUS,C = 0 olana kadar 1000 çıkar her çıkarma işleminde eğer "0" kalmadıysa BINLER değişkenini bir arttır "0" kaldığında aynı sayısan yine "0" kalan kadar 100 çıkar."0" kalmadığı sürece YUZLER'i de bir arttır.En son olarak birleri olduğu gibi yaz olay bu misal 1024 - 1000 = 24 (BINLER bsamağı bir arttı ve değeri "1" oldu) 24 - 1000 = 0 (STATUS C= 0 oldu) sonra 24 - 100 (STATUS C = 0 oldu)YUZLER değişkeninin değeri 0 olarak kaldı daha sonra 24-10 = 14 (ONLARIN değeri "1" oldu)
14-10 = 4 (ONLARIN değeri "2" oldu) 4 - 10 = (STATUS C= 0) oldu en son kalan rakam ise birlerdir zaten yani "4"'üde BIRLER e yazdık şimdi bunu bir LCD'ye gönderirsek

BINLER = 1, YUZLER = 0 , ONLAR = 2 , BIRLER = 4

1024

Kolay gelsin

mesmert

Alıntı yapılan: "HEXF2"Arkadaşım sana basit bir mantık söyliyeyim kendin yaz.BIRLER,ONLAR,YÜZLER ve BINLER olarak değişkenler ata daha sonra elde ettiğin yani Bİn2BCD ye çevirmek istediğin sayısan "0" kalana kadar yani STATUS,C = 0 olana kadar 1000 çıkar her çıkarma işleminde eğer "0" kalmadıysa BINLER değişkenini bir arttır "0" kaldığında aynı sayısan yine "0" kalan kadar 100 çıkar."0" kalmadığı sürece YUZLER'i de bir arttır.En son olarak birleri olduğu gibi yaz olay bu misal 1024 - 1000 = 24 (BINLER bsamağı bir arttı ve değeri "1" oldu) 24 - 1000 = 0 (STATUS C= 0 oldu) sonra 24 - 100 (STATUS C = 0 oldu)YUZLER değişkeninin değeri 0 olarak kaldı daha sonra 24-10 = 14 (ONLARIN değeri "1" oldu)
14-10 = 4 (ONLARIN değeri "2" oldu) 4 - 10 = (STATUS C= 0) oldu en son kalan rakam ise birlerdir zaten yani "4"'üde BIRLER e yazdık şimdi bunu bir LCD'ye gönderirsek

BINLER = 1, YUZLER = 0 , ONLAR = 2 , BIRLER = 4



1024

Kolay gelsin


arkadaşım 8 bitlik işlemciyi 1000 kadar nasıl saydıracağız.

oziant

5 digit dedigine göre sayma işleminin tamammı
benim kullandıgım yol
1.digit
2.digit
3.digit
4.digit
5.digit
ramda tanımla
sonra saydır 1 digit 10 olunca (1.digiti sıfırla) 2 digiti 1 artır
2.digitte 10 olunca (2.digiti sıfırla) 3.digiti 1 arttır
böylelikle istedigin kadar  haneli sayıcı yapabilirsin
MPLAB 5.62 ASM PROPİC 2

elektromer

Alıntı yapılan: "mesmert"arkadaşlar pic ile 5 digit için bin2bcd çeviren program lazım ben microchipin sitesinden bu tür örnekler var ama çalıstıramadım forumda aratırdım bulamadım. ben asm kullanıyorum yardımcı olursanız sevinirim.

herkese kolay gelsin

Merhaba mesmert,

Karşılaştığın probleme kısmi (belkide tam) çözüm olabilecek bilgileri,
PicProje Forum Ana Sayfası -> --PIC Assembly-- -> 10 bit veri ile desimal bulma işlemi.... başlığı altında ASM kodları ile adı geçen sayfada yanıtlamıştım. Dilerim işini görür...

Sayfanın linki :
https://www.picproje.org/main/modules.php?name=Forums&file=viewtopic&p=23030#23030

Saygılarımla...
Her şey gönlünüzce olsun..

HEXF2

Dostum bu kadarını da sen düşün 16 bitlik işlemlerde iki register kullanacaksın alt byte ve üst byte ben yukarıda sana yazdığım şekilde bir çok programımda kullandım.Anlaşılması daha kolay

mesmert

ARKADAŞLAR ASLINDA BENİM YAPMAK İSTEDİĞİM EEPROMA KAYDETTİĞİM VERİYİ OKUYUP DECİMALE ÇEVİRMEKTİ FİKİRLERİNİZİ BEKLİYORUM.

CaFFeiNe

eeproma kaydettiğin veri için bir örnek verebilirmisin byte tipindemi word tipindemi nasıl bir şekilde

elektromer

Merhaba Arkadaşlar,
Alıntı yapılan: "mesmert"ARKADAŞLAR ASLINDA BENİM YAPMAK İSTEDİĞİM EEPROMA KAYDETTİĞİM VERİYİ OKUYUP DECİMALE ÇEVİRMEKTİ FİKİRLERİNİZİ BEKLİYORUM.

Sayın mesmert,
öncelikle özel olarak vurgulamak istediğin bir bölüm yoksa forumda büyük harf kullanma.... Bu internet ortamında bağırmak anlamına gelir.

İkinci olarak, yanlış anlama ama hazır bir program yazılarak eline verilmesini bekliyorsun..!!!?

Yukarıda oziant, HEXF2 ve benim sana sunduğumuz 3 önerimiz var.
yazdıklarından anladığım kadarıyla dikkatlice inceleme gereği duymamışsın. Benim verdiğim linkte ise açık kodlar da mevcut.


Bu noktada sana şunu sormak istiyorum,
PIC'in (veya harici) EEPROM'una veri yazıp okuyabiliyormusun?
Eğer bunu yapıyorsan. Yukarıdaki açıklamaları ve verdiğim linki tekrar incele.. Buralarda anlamadığın bir konu olursa onunla ilgili sorularını bekliyoruz.

Saygılarımla...
Her şey gönlünüzce olsun..

HEXF2

Evet dostum neden yazdıklarımızı dikkate almıyorsun hazır kod bekliyorsan zor yani yapacağın EEPROM'dan veriyi okuyup yukardaki yöntemlerden birini kullanıp decimale çevrime okuduğun veriyi bir yazmaca alıp yapacaksın işte

mesmert

arkadaşlar öncelikle büyük harf kullandığım için hepinizden özür diliyorum bu bana bir ders oldu. yardımlardan dolayı hepinize ayrı yarı teşekkür ederim.
herkese kolay gelsin...

Petek

googledan bin2bcd3, bin3bcd4 anahtar kelimelerini araştır. Sana 2 stack alanına malolacak rutinler var (rutinler Jal procedure formatında ama işlemler assemblerda, MPLAB için ufak düzeltmeler yapman gerekebilir). bin3bcd4, bcd4bin3, bcd3bin2 uyarlamaları tarafımdan geliştirilmiştir (bin2bcd3 esas alınarak).
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

mesmert

arkadaşlar forumda bin2 bcd ile ilgili daha önce forumda sormuştum ve sizin verdiğiniz fikirlere göre yaptım ama şöyle bir sorun eepromdan okunan değerler sayı_1-sayı_5 değerlerin içinde normalde herhangi bir sorun yok değerlerin hepsi ekranda 00000 ama aradan biraz süre geçtiği zaman yani sistemi kapatıp açınca burdaki değerler değişiyor örneğin 05000,09800 şeklinde değişik sayılar atıyor aşağıya yazdığım bin2bcd rutini koydum bu konuda yardım cı olursanız sevinirim   herkese kolay gelsin

call eeprom_oku
call BIN2BCD
.....
.....
GOTO ANADONGU


BIN2BCD
   MOVLW   D'246'
   ADDWF   SAYI_1,W
   BTFSS   STATUS,C
   GOTO   B_1
   CLRF   SAYI_1
B_1
   MOVLW   D'246'
   ADDWF   SAYI_2,W
   BTFSS   STATUS,C
   GOTO   B_2
   CLRF   SAYI_2
B_2
   MOVLW   D'246'
   ADDWF   SAYI_3,W
   BTFSS   STATUS,C
   GOTO   B_3
   CLRF   SAYI_3

B_3
   MOVLW   D'246'
   ADDWF   SAYI_4,W
   BTFSS   STATUS,C
   GOTO   B_4
   CLRF   SAYI_4

B_4
   MOVLW   D'246'
   ADDWF   SAYI_5,W
   BTFSS   STATUS,C
   GOTO   B_5
   CLRF   SAYI_5
   
   RETURN