CCS C de bit kopyalama

Katılım
27 Mar 2008
Mesajlar
35
Puanları
1
Yaş
40
ben bir degiskenin herangi bir bitini baska bir degiskeniin herhangi bir bitine kopyalamak istiyorum ama bunu bulamadım bir turlu bu konuda biligisi olan arkadasların yardımına ıhtıyacım var.
microc de bu ısı su sekılde yapabılıyordum

sonuc.f1=sayi.f3;

yani sayi nın 3. bitini sonuc un 1. bitine koplaya gibi...
bu olayı ccs c de nasıl yapıyoruz??

sımdıden herkeze tsk.ıyı calısmalar
 
ben bir degiskenin herangi bir bitini baska bir degiskeniin herhangi bir bitine kopyalamak istiyorum ama bunu bulamadım bir turlu bu konuda biligisi olan arkadasların yardımına ıhtıyacım var.
microc de bu ısı su sekılde yapabılıyordum

sonuc.f1=sayi.f3;

yani sayi nın 3. bitini sonuc un 1. bitine koplaya gibi...
bu olayı ccs c de nasıl yapıyoruz??

sımdıden herkeze tsk.ıyı calısmalar
Birçok yolu var. En basiti structure tanımlamandır. Her bir bite bir isim vererek bir structure oluştur ve bu yapı ile sonuc ve sayi değişkenlerini tanımla. aynı yukarıda gösterdiğin gibi kullanabilirsin.

struct bitler {int f1:1;
int f2:1;
int f3:1;
int f4:1;
int f5:1;
int f6:1;
int f7:1;} sonuc, sayi;
...
sonuc.f1=sayi.f3;
 
yapmaya calıstım ama olmadı.baska bı yolu yokmu.ayrıca bu ornekte sayac 8 bit sonuc 16 bit...benım yapmak ıstedıgım de 10 bıt lık bılgıyı 8 bıt gonderıp dıger pıc de bunu tekrar 10 bite cevırecem..yanı 10 bıtı 2 ye parcalıyıp 8-8 sonra dıger tarafta bırlestırecem..
nedense 877 dıyle okudum 10 bıt lık analog bılgıyı rs232 ıle 10 bıt gonderemedım bende bu yolu deneyım dedım.
ayrıca ben analogtan okuma yapıyorum pot her %25 dusute ekranda 0-5 V deger goruyorum.yanı %100 de 5 V ıken %75 de tekrar 5 V a gecıyor.

sıze yapmaya calıstıgım projeyı buraya koyuyorum eger ımkanınız olursa bı bakabılırmısınız neden doru calısmıyor..
Ekli dosyayı görüntüle proje_den.rar
 
Son düzenleme:
Yarın hemen bir adet : Serdar Çiçek hocanın "CCS C ile pic programlama" kitabı edin.
---------------------

y=bit_test(değişken ismi,bit numarası);

----------------------------------------

make8() ve make16() make32() komutlarını araştırmalısın.
 
kardeş bu programı size zahmet pic-c den hexe çevirebilirmisiniz compile edemiorumda ben hata verio tanımsız diye))))
#include<pic.h>
#include<delay.c>
#include<stdio.h>
#include<serial.c>


main(void)
{
TRISB=0xFF;
if(RB1==1)
{
printf("AT+CMFG=1\r");
DelayMs(200);
printf("AT+CMGS=\"05338389612\"\r");
DelayMs(200);
printf("kapı alarm aktif\x1A");
DelayMs(200);
}
else if(RB2==1)
{
printf("AT+CMFG=1\r");
DelayMs(200);
printf("AT+CMGS=\"05338389612\"\r")
DelayMs(200);
printf("lazer alarm aktif\x1A");
DelayMs(200);
}
else if(RB3==1)
{
printf("AT+CMFG=1\r");
DelayMs(200);
printf("AT+CMGS=\"05338389612\"\r")
DelayMs(200);
printf("yangın alarm aktif\x1A");
DelayMs(200);
}
else if(RB4==1)
{
printf("AT+CMFG=1\r");
DelayMs(200);
printf("AT+CMGS=\"05338389612\"\r")
DelayMs(200);
printf("hareket alarm aktif\x1A");
DelayMs(200);
}
else if(RB5==1)
{
printf("AT+CMFG=1\r");
DelayMs(200);
printf("AT+CMGS=\"05338389612\"\r")
DelayMs(200);
printf("gaz alarm aktif\x1A");
DelayMs(200);
}
}
 
Kodları aldığınız yerde :
delay.c - stdio.h - serial.c
olması lazım.
Çalışma dosyalarınızı tam verse idiniz denerdim.
 
o kodlar pic-c nin kütüphanesindeymiş öle yazıodu 2 günüm kaldı usta
 
yapmaya calıstım ama olmadı.baska bı yolu yokmu.ayrıca bu ornekte sayac 8 bit sonuc 16 bit...benım yapmak ıstedıgım de 10 bıt lık bılgıyı 8 bıt gonderıp dıger pıc de bunu tekrar 10 bite cevırecem..yanı 10 bıtı 2 ye parcalıyıp 8-8 sonra dıger tarafta bırlestırecem..
nedense 877 dıyle okudum 10 bıt lık analog bılgıyı rs232 ıle 10 bıt gonderemedım bende bu yolu deneyım dedım.
ayrıca ben analogtan okuma yapıyorum pot her %25 dusute ekranda 0-5 V deger goruyorum.yanı %100 de 5 V ıken %75 de tekrar 5 V a gecıyor.

sıze yapmaya calıstıgım projeyı buraya koyuyorum eger ımkanınız olursa bı bakabılırmısınız neden doru calısmıyor..
Ekli dosyayı görüntüle 7277

O zaman union yapısını kullanacaksınız. 16 bitlik bir değişkene 2 tane 8 bitlik değişken ile ulaşacaksınız. Başka bir forumdaki arkadaşların tercüme ettikleri Nigel Gardner'in kitabının son sayfalarına yakın bir yerde kullanımını bulabilirsin.

Veya göndermek istediğiniz 16 bitlik değişkenin önce düşük sonra yüksek değerli baytlarını göndermek için:

putc(*(&sonuc));
putc(*(&sonuc+1));

alıcı tarafında da

getc(*(&sonuc));
getc(*(&sonuc+1));
şeklinde gelen sayıyı alacaksınız.
 
Yarın hemen bir adet : Serdar Çiçek hocanın "CCS C ile pic programlama" kitabı edin.
---------------------

y=bit_test(değişken ismi,bit numarası);

----------------------------------------

make8() ve make16() make32() komutlarını araştırmalısın.

bu kıtaptan bende var ama arastırdım bulamamıstım demekkı gozumden kacmıs.tekrardan bakarım tsk
 
arksım ben indirip baktım ama projenın hatasını cozemedım..eger bırılerı bakıpda cozerse bende cok merak ettım hatayı..gorunuse bakılırsa yapabılen yada ılgılenen yok gıbı...
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Çevrimiçi üyeler

Geri
Üst