Bu komutları bana açıklayabilir misiniz?

Başlatan WorldWideWeb, 09 Şubat 2014, 01:48:22

WorldWideWeb

#byte PORTA=0x05 
#byte TRISA=0x85 


#bit OUT=PORTA.0 


#byte CHD=0 
#bit  CHD0=CHD.0 
#bit  CHD1=CHD.1 
#bit  CHD2=CHD.2 
#bit  CHD3=CHD.3 
#bit  CHD4=CHD.4 
#bit  CHD5=CHD.5 
#bit  CHD6=CHD.6 
#bit  CHD7=CHD.7

MrDarK

#byte PORTA=0x05


Bu adres tanımlamasıdır.

#bit OUT=PORTA.0


Buda ilgili registerın bitsel olarak tanımlamasıdır.

yukarıdaki kodun CCS örneği  ;

#define OUT pin_A0
Picproje Eğitim Gönüllüleri ~ MrDarK

LukeSkywalker

0x05 isimli adrese PORTA ismini vermiş. Aslında 0x05 adresini PORTA diye tanımlamış desek daha doğru olur.

Daha sonra  0x85 adresini de TRISA olarak tanımlamış

PORTA'nın 0. bitini OUT olarak tanımlamış.

CHD isimli bir byte tanımlamış 0x00 adresinde. Daha sonra da bu byte'ın bitlerini tek tek tanımlamış.


Salih

Alıntı yapılan: MrDarK - 09 Şubat 2014, 12:31:38
#byte PORTA=0x05


Bu adres tanımlamasıdır.

#bit OUT=PORTA.0


Buda ilgili registerın bitsel olarak tanımlamasıdır.

yukarıdaki kodun CCS örneği  ;

#define OUT pin_A0


CCS'de
#bit OUT=PORTA.0
tanımlaması ile
#define OUT pin_A0
tanımlaması eşdeğer değildir!

MrDarK

salih ;

Dikkat ettiysen senin söylediğin gibi "eşdeğerdir" diye bir tabir kullanmadım.

CCS'de bununla ilgili bir örnektir dedim. Ünlemli cümlelere gerek yoktu (=

Saygılar

Picproje Eğitim Gönüllüleri ~ MrDarK

WorldWideWeb

Herkese yorumları için çok ama çok teşekkür ederim. Aklımda en azından bir şeyler canlandırdınız. Elimde 2 adet kod var ve bunların yazılım dili, c olmasına rağmen ben CCS C'de öğrendiğim için tam olarak anlıyamıyorum.

Eğer "OUT" PORT_a'nın  0'ıncı piniyse. Kodlardan anladığım kadarıyla bu sahıs, porta_'NIN 0'inci pinini. 8 kere açıp kapatıyor. Yani 8 bitlik bir veri oluşturuyor. 1 adette start biti olduğu için 9 bitlik bir veri oluşturuyor. BU veriyi CCS C'de okuyup, diiğer Pic'e nasıl gönderirim?
Kısa yoldan göndersem olur mu "0b11011100"(220); porta'nın 0'ıncı pininden çıkan sonuçlar bunlar. Bu sonuçları nasıl okuyabilirim?  ben bu veriyip daha kolay yoldan, şu şekilde gönderebiliyorum fakat universal protokol olduğu için bu sadece benim yazdığım master slave programlarını okuyabilecek. Yani bir nevi kendi protokolüm uzerinden gitmiş olacağım. "Putc(0b11011100)"

Şayet anladığım doğruysa, porta.0 pinini  8 kere low-high yapıyorsa. BU veriyi slave'e nasıl okuturum? Kodlar aşşağıda

int1 b1; //bit 1 
int1 b2; //bit 2 
int1 b3; //bit 3 
int1 b4; //bit 4 
int1 b5; //bit 5 
int1 b6; //bit 6 
int1 b7; //bit 7 
int1 b8; //bit 8 
int8 bitcount; 

void xmit(b1,b2,b3,b4,b5,b6,b7,b8) 
{ 
   if(bitcount==0) // 
   { 
      DMXOUT=1; //start bit? 
      bitcount++; 
   } 
   else if(bitcount==1) 
   { 
      DMXOUT=b1; 
   } 
   else if(bitcount==2) 
   { 
      DMXOUT=b2; 
   } 
   else if(bitcount==3) 
   { 
      DMXOUT=b3; 
   } 
   else if(bitcount==4) 
   { 
      DMXOUT=b4; 
   } 
   else if(bitcount==5) 
   { 
      DMXOUT=b5; 
   } 
   else if(bitcount==6) 
   { 
      DMXOUT=b6; 
   } 
   else if(bitcount==7) 
   { 
      DMXOUT=b7; 
   } 
   else if(bitcount==8) 
   { 
      DMXOUT=b8; 
   } 
   else if(bitcount==9) 
   { 
      DMXOUT=0; //stop bit? 
      delay_us(XXX); 
      bitcount=0; 
   } 

   bitcount++; 
   delay_us(3); 
}




#include <16F876A.h> 
#fuses XT,NOWDT,PUT,NOBROWNOUT,PROTECT 
#use delay(clock=4000000) 

#byte PORTA=0x05 
#byte TRISA=0x85 
#bit DMXOUT=PORTA.0 
#byte CH1=255 
#byte CH2=150 


int i; 

void main() 
{ 
set_tris_a(0x00); 
PORTA=0xFF; 

   while(1){ 
      DMXOUT=1; 
      delay_us(3);       
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=0; 
      delay_us(101); 
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=0; 
      delay_us(3); 
      delay_us(35); 
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=0; 
      delay_us(3); 
      for(i=0; i<=7; i++) 
      { 
         DMXOUT=1; 
         delay_us(1); 
         DMXOUT=0; 
         delay_us(1); 
      } 
      DMXOUT=1; 
      delay_us(3);    
      DMXOUT=1; 
      delay_us(3); 
      DMXOUT=1; 
      delay_us(3); 
      delay_us(3); 

       
    
} 
}





Bütün takıldığım nokta bu. Yardımcı olursanız sevinirim.

Salih

Alıntı yapılan: MrDarK - 09 Şubat 2014, 20:42:59
salih ;

Dikkat ettiysen senin söylediğin gibi "eşdeğerdir" diye bir tabir kullanmadım.

CCS'de bununla ilgili bir örnektir dedim. Ünlemli cümlelere gerek yoktu (=

Saygılar

Mrdark,
ünlem işareti sadece dikkat çekmek amacıyla idi.
Eğer benim bilmediğim başka manaları da varsa, belirteyim benim öyle bir niyetim yok.
Örnektir derken sanki aynı şekilde kullanılabilir diye anlamıştım.
Saygılar benden. :)




yldzelektronik

@WorldWideWeb

Portb0 interrupt ile gelen veriyi rahatlıkla okuyabilirsin.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.