You are on page 1of 3

11 Eyll 2007; 22:48:36

Yukardaki izimde araya modller girecek. Sadaki modl alan soldaki modl ise yollayan taraf. Alm interrupt ile oluyor ancak yollama ksmnda polling metodu ile porta y tarayarak srekli yollama yaptm. Devre ok basit ancak rf reniimine katk salyacan dnyorum. Dier yazdm kodlar biraz kark eer istek olursa ve toparlayabilirsem buradan onlar da paylaabilirim. Umarm yardmc olur Alc kodu: #include <pic.h> //header dosyalar #include <delay.c> __CONFIG (INTIO & WDTDIS & PWRTEN & MCLRDIS & BOREN & LVPDIS & UNPROTECT); //configurasyon ayarlamalar unsigned char a,b,c; //variables void main(void) { TRISA = 0; //Porta = output CMCON = 0X07; //comparator disable TRISB = 0X02; //Portb alm pini input PORTA = PORTB = 0; RCIE=1; //receive interrupt enable PEIE=1; //peripheral interrupt enable GIE=1; //global interrupt enable SPBRG = 51; //baud rate for 600baud/sec = 103 (best speed for rf module we use) BRGH = 0; //Low speed baud rate SPEN = 1; //Serial Port enable CREN = 1; //Continuous data receive enable TXEN = 1; //Transmit enable for(;;) //sonsuz dngde interrupt bekle { } } void interrupt kes(void) //interrupt alt fonksiyonu

{ if(RCIF) //receive interrupt ise { b = RCREG; //gelen veriyi al if(c == 1) //"0xff" verisinden sonra gelen veri ise { PORTA = b; //veriyi porta ya ykle c = 0; //yeni veriden nce 0xff beklemek iin kontrol deikenini sfrla } if(b == 0xff) //0xff geldi ise soraki deeri almak iin kontrol deikenini 1 yap c = 1; } RCIF = 0; //clear receive flag } Verici kodu: #include <pic.h> //header files #include <delay.c> #define ST1 0X55 // prembles for rf modules #define ST2 0x00 #define ST3 0xFF __CONFIG (INTIO & WDTDIS & PWRTEN & MCLRDIS & BOREN & LVPDIS & UNPROTECT); //configuration unsigned char a; //variable void send(unsigned char t); //function prototype void main(void) { TRISA = 0X02; //Porta ya 0xff yklenerek btn piner giri yaplabilir CMCON = 0X07; //comparator disable TRISB = 0; PORTA = PORTB = 0; SPBRG = 51; //baud rate for 600baud/sec = 103 (best speed for rf module we use) BRGH = 0; //Low speed baud rate SPEN = 1; //Serial Port enable TXEN = 1; for(;;) //Sonsuz dngde PORTA nn ieriini gnder { a = PORTA; send(a); } } void send(unsigned char t)

{ unsigned char k; for(k=0;k<5;k++) //preamble iin 5 kez 0x55 yolla { TXREG = ST1; //load value to the transmit register while(TRMT!=1); //wait while not send } for(k=0;k<5;k++) //senkron iin 5 kez 0x00 yolla { TXREG = ST2; //load value to the transmit register while(TRMT!=1); //wait while not send } TXREG = ST3; //load value to the transmit register while(TRMT!=1); //wait while not send TXREG = t; //yollamak istediimiz veriyi yollama register na koy while(TRMT!=1); //wait while not send }

You might also like