كود الارسال
========
كود:
// Initialize Transmitter:
sbit MANTXPIN at RC0_bit;
sbit MANTXPIN_Direction at TRISC0_bit;
// Initialize switches
sbit sw1 at RB0_bit;
sbit sw2 at RB1_bit;
sbit sw3 at RB2_bit;
sbit sw4 at RB3_bit;
sbit sw5 at RB4_bit;
sbit sw6 at RB5_bit;
sbit sw7 at RB6_bit;
sbit sw8 at RB7_bit;
// End Manchester module connections
char x;
const char device_address=10;
char led_on[10] , code_data[]={device_address, ~device_address,0,0};
void send_data(char data1);
void main()
{
ADCON1 = 6; // Configure AN pins as digital I/O
trisB=0xFF;
for(x=0;x<10;x++)led_on[x]=0;
Man_Send_Init(); // Initialize transmitter
for(x=0;x<100;x++)Man_Send(0);
while (1) {
/////////////// led1 ///////////////////
if(sw1==0 && led_on[0]==0) //led1=on
{
send_data(1);
led_on[0]=1;
delay_ms(250);
}
else if(sw1==0 && led_on[0]==1) //led1=off
{
send_data(11);
led_on[0]=0;
delay_ms(250);
}
/////////////// led2 ///////////////////
if(sw2==0 && led_on[1]==0) //led2=on
{
send_data(2);
led_on[1]=1;
delay_ms(250);
}
else if(sw2==0 && led_on[1]==1) //led2=off
{
send_data(21);
led_on[1]=0;
delay_ms(250);
}
/////////////// led3 ///////////////////
if(sw3==0 && led_on[2]==0) //led1=on
{
send_data(3);
led_on[2]=1;
delay_ms(250);
}
else if(sw3==0 && led_on[2]==1) //led1=off
{
send_data(31);
led_on[2]=0;
delay_ms(250);
}
/////////////// led4 ///////////////////
if(sw4==0 && led_on[3]==0) //led2=on
{
send_data(4);
led_on[3]=1;
delay_ms(250);
}
else if(sw4==0 && led_on[3]==1) //led2=off
{
send_data(41);
led_on[3]=0;
delay_ms(250);
}
/////////////// led5 ///////////////////
if(sw5==0 && led_on[4]==0) //led1=on
{
send_data(5);
led_on[4]=1;
delay_ms(250);
}
else if(sw5==0 && led_on[4]==1) //led1=off
{
send_data(51);
led_on[4]=0;
delay_ms(250);
}
/////////////// led6 ///////////////////
if(sw6==0 && led_on[5]==0) //led2=on
{
send_data(6);
led_on[5]=1;
delay_ms(250);
}
else if(sw6==0 && led_on[5]==1) //led2=off
{
send_data(61);
led_on[5]=0;
delay_ms(250);
}
/////////////// led7 ///////////////////
if(sw7==0 && led_on[6]==0) //led1=on
{
send_data(7);
led_on[6]=1;
delay_ms(250);
}
else if(sw7==0 && led_on[6]==1) //led1=off
{
send_data(71);
led_on[6]=0;
delay_ms(250);
}
/////////////// led8 ///////////////////
if(sw8==0 && led_on[7]==0) //led2=on
{
send_data(8);
led_on[7]=1;
delay_ms(250);
}
else if(sw8==0 && led_on[7]==1) //led2=off
{
send_data(81);
led_on[7]=0;
delay_ms(250);
}
}
}
//********************************************//
void send_data(char data1)
{
code_data[2]=data1;
code_data[3]=~data1;
for(x=0;x<4;x++)
{
Man_Send(code_data[x]);
delay_ms(10);
}
}
=================================================
كود:
// Initialize Transmitter:
sbit MANTXPIN at RC0_bit;
sbit MANTXPIN_Direction at TRISC0_bit;
هذا الكود لتعريف طرف الارسال للمانشيستر كود على بورت c بن رقم 0
//// راجع مانشيستر كود في مايكروسي ///////
=============================================
تعريف سويجات
كود:
sbit sw1 at RB0_bit;
sbit sw2 at RB1_bit;
sbit sw3 at RB2_bit;
sbit sw4 at RB3_bit;
sbit sw5 at RB4_bit;
sbit sw6 at RB5_bit;
sbit sw7 at RB6_bit;
sbit sw8 at RB7_bit;
=======================================
جعل الاطراف كلها ديجيتل
كود:
ADCON1 = 6; // Configure AN pins as digital I/O
جعل بورت b كله مداخل
=============================
تصفير مصفوفه وهي تعبر عن اي ليد في حاله on or off
كود:
for(x=0;x<10;x++)led_on[x]=0;
=====================================
تعريف كود ارسال للمانشيستر كود ---- راجع ملف مساعده في مليكروسي خاص بمانشيستر كود
كود:
Man_Send_Init(); // Initialize transmitter
===============================================
ارسال 0 الى مستقبل وهذا ارسال فقط لاختبار دائره بين مرسل ومستقبل فأذا أضاء ليد أخضر لحظه تشغيل يعني دائره مرسل ومستقبل تعمل بشكل الصحيح
كود:
for(x=0;x<100;x++)Man_Send(0);
=============================================
ندخل الان في لوب ستمر لاختبار السويجات
مثلا اذا اضغطنا على سويج 1 وكان ليد1 (led_on[0]==0) في حاله OFF
هنا سوف نرسل رقم 1 لاحظ كود لون أحمر
led_on[0]=1 وهذا يعني أصبح ليد1 في حاله ON
كود:
if(sw1==0 && led_on[0]==0) //led1=on
{
send_data(1);
led_on[0]=1;
delay_ms(250);
}
=============================================
مثلا اذا اضغطنا على سويج 1 وكان ليد1 (led_on[0]==1) في حاله On
هنا سوف نرسل رقم 11 لاحظ كود لون أحمر
led_on[0]=0 وهذا يعني أصبح ليد1 في حاله Off
كود:
else if(sw1==0 && led_on[0]==1) //led1=off
{
send_data(11);
led_on[0]=0;
delay_ms(250);
}
وهكذا لبقيه السويجات
=========================================
ولكن مامهمه داله send_data
مهمتها ارسال الكود بمانشيستركود
كود:
void send_data(char data1)
{
code_data[2]=data1;
code_data[3]=~data1;
for(x=0;x<4;x++)
{
Man_Send(code_data[x]);
delay_ms(10);
}
}
هنا يتم ارسال الكود كتالي
في بدايه الكود تم التعريف التالي
كود:
const char device_address=10;
char led_on[10] , code_data[]={device_address, ~device_address,0,0};
code_data تعني شفره التي سوف يتم ارسالها وهي تتكون من 4 بايتات
الاول device_address هذا يعني عنوان جهاز لانه اذا كان لدينا اكثر من جهاز فلابد من كل جهاز له عنوان لكي لايحدث تداخل بين الاجهزه
بايت الثاني هو معكوس بايت الاول
اما الثالث هو شفره تشغيل او اطفاء
اما الرابع هو معكوس بايت الثالث
وبتالي سوف يتم ارسال هذا الكود عبر داله send_data