Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

udea manc. code ?

Başlatan armsistem, 10 Eylül 2011, 08:53:50

armsistem

Arkadaşlar selam , aşağıdaki kodu udea'dan indirdim manc. code ile ilgili güzel bir örnek , hepsi tamamda bir satırı anlamadım mainde aşağıda ,ISYNC diye bir şey tanımlanmamış benimmi tanımlamam gerekiyor byte olarak tam olarak anlamadım. Yardımlarınız için şimdiden teşekkür ederşm.
do{
ISYNC = CHECKSENC();
}while(!ISYNC);




/****************************************************************************/
/* Uygulama Notu UN-12M01v01
/* MANCHESTER MODUL YAZILIM NOTU
/* File: UN-12M01v01.c
/*
/* Microcontroller: Microchip PIC16F876
/*
/* Bu yazilim UTR-C12M ve UTR-C10M modülü kullanilarak
/* RF data göndermek ve almak için yazilmis basit bir
/* C code (HI-TECH) uygulama notudur.
/* Kullanici bu yazilimi derlemeden önce kendi kullanimina göre
/* uyarlamalar yapmalidir.
/*
/* Yazan: Fatih DEMIRLIÇAKMAK, UDEA
/*
/* Contact: UDEA Elektronik 0.312.395 68 75
/* info@udea.com.tr
/****************************************************************************/
void SEND(BYTE Data);
void SNCGONDER();
BYTE BAKSENC();
BYTE DATAOKURF();
/**************************************
; Modül TX konumunda olmalidir.
; SEND 1 Byte (8 bit) bilginin
; modüle verilmesi için kullanilir.
; microcontrolunuzun modülün
; DIO pinine bagli pini OUTPUT olmalidir.
; DCLK = 0 iken data belirlenir.
; DCLK = 1 iken data modül'e verilir.
;***************************************/
void SEND(BYTE RF1)
{
BYTE DATABIT = 0x08;
BYTE TestBit;
do {
while (DCLK);
TestBit = RF1 & 0x80;
RF1 = RF1 << 1;
if (TestBit == 0x80)
DIO = 1;
else
DIO = 0;
while(!DCLK);
} while (--DATABIT);
}
/**************************************************************
; Modül TX konumunda olmalidir.
; SNCSEND Transmitter Konumdaki modül ile
; Receiver Konumundaki modülün sencronize olmasi için
; asil data'nin önünde gönderilmelidir.
; microcontrolunuzun modülün
; DIO pinine bagli pini OUTPUT olmalidir.
; ilk 5 byte (0x55) preamble data olarak gönderilir.
; sonraki 10 byte senkronizasyon için gönderilir.
;**************************************************************/
void SNCSEND()
{
SEND(0x55);
SEND(0x55);
SEND(0x55);
SNED(0x55);
SEND(0x55);
SEND(0x00);
SEND(0x00);
SEND(0x00);
SEND(0x00);
SEND(0x00);
SEND(0xFF);
SEND(0xFF);
SEND(0xFF);
SEND(0xFF);
SEND(0xFE);
}
/****************************************************************
; Modül RX konumunda olmalidir.
; microcontrolunuzun modülün
; DIO pinine bagli pini INPUT olmalidir.
; TX konumundaki modülden
; SNCSEND() ile RF gönderilen data
; RX konumundaki modülden okunmaldir.
; 5 byte 0x00 = 40 ad. LOW
; 4 byte 0xFF ve 1 byte 0xFE = 39 byte HIGH
;****************************************************************/
BYTE CHECKSENC()
{
BYTE counthigh=0, countlow=0, SAY,iSay;
for(iSay =0; iSay < 2; iSay++) {
SAY = 0;
do {
while(!DCLK);
SAY++;
if (!DIO) {
if ((counthigh > 37) && (countlow > 38)) {
while(DCLK);
return(1);
}
counthigh = 0;
countlow++;
}
UDEA WIRELESS TECHNOLOGIES Uygulama Notu
PSF-UN-03 4 OCAK 2004
else {
if (countlow < 38) {
countlow = 0;
return(0);
}
counthigh++;
}
while(DCLK);
} while(SAY != 250);
}
return (0);
}
/****************************************************************
; Modül RX konumunda olmalidir.
; microcontrolunuzun modülün
; DIO pinine bagli pini INPUT olmalidir.
; TX modülünden SENCSEND sonrasi gönderdiginiz
; data RX konumunda modülden CHECKSENC sonrasi okunur.
; DCLK = 1 iken DIO okunur
; 8 bit data 1 byte olarak RF0 içinde saklanir.
;****************************************************************/
BYTE DATAOKURF()
{
BYTE DATABIT = 0x08;
BYTE RF0=0;
do {
while(!DCLK);
RF0 = RF0 << 1;
if (DIO)
RF0 = RF0 | 0x01;
else
RF0 = RF0 & 0xFE;
while(DCLK);
} while(--DATABIT);
return(RF0);
}
UDEA WIRELESS TECHNOLOGIES Uygulama Notu
PSF-UN-03 5 OCAK 2004
/****************************************************************
; TX tarafindan "X" adet data göndermek ve bu datalari
; RX tarafindan almak için kullanilacak yazilim.
; CH ½ her iki tarafta ayni konumda olmalidir.
;****************************************************************/
void MAIN()
{
if(RX) {
TXRX = 0;
DelayMs(100);
do{
ISYNC = CHECKSENC();
}while(!ISYNC);
for(count=0; count < x ; count++)
{
RFBuffer[count] = DATAOKURF();
}
}
//;********************************************************/
if(TX){
TXRX = 1;
DelayMs(100);
{
SNCSEND();
SEND(DATA1);
SEND(DATA2);
SEND(DATA3);
.
.
.
SEND(DATAX);
}
}
//;*********************************************************/
}

bymrz

Evet, ISYNC; CHECKSENC fonksiyonundan geri dönen bir parametre. Kullandığın yere göre local bir değişken yada global bir değişken(byte) olabilir.


Tabi burada ifaden illa ISYNC olmayabilir...
Mesela:

unsigned char Senkronize_Alindimi;

do{
Senkronize_Alindimi= CHECKSENC();
}while(!Senkronize_Alindimi);

.....
....
...