تعريف سويجات
كود:
sbit IR_send at RB3_bit;
sbit IR_send_dir at TRISB3_bit;
sbit sh_cp at RB5_bit;
sbit sh_cp_dir at TRISB5_bit;
sbit ds at RB6_bit;
sbit ds_dir at TRISB6_bit;
sbit st_cp at RB7_bit;
sbit st_cp_dir at TRISB7_bit;
sbit sw_load1 at RA0_bit;
sbit sw_load2 at RA1_bit;
sbit sw_load3 at RA2_bit;
sbit sw_load4 at RA3_bit;
sbit sw_load5 at RA4_bit;
sbit sw_load6 at RA5_bit;
sbit sw_load7 at RA6_bit;
sbit sw_load8 at RA7_bit;
sbit sw_All_load_on at RB0_bit;
sbit sw_All_load_off at RB1_bit;
sbit sw_no_room at RB2_bit;
=========================================
تهيئه مايكروكنترولر وتعريف مداخل ومخارج وضبط تردد pwm على 38khz
كود:
CMCON=0x07;
TRISA=255;
TRISB=7;
portb=0;
IR_send_dir=0;
IR_send=0;
PWM1_Init(38000);
PWM1_Set_Duty(127);
==========================================
اختيار اي غرفه نريد التحكم بها حيث لدينا متغيرين الاول cont وهو مهم في توليد الشفره لكل الغرفه والثاني rooms وهو متغير لغرض عرض رقم الغرفه على سفن سكمنت
كود:
if (sw_no_room==0)
{
cont +=10;
rooms++;
if(cont==30){cont=0;rooms=0;}
for (x=0;x<8;x++)
{
if(Check_bit(segment[rooms],7-x))DS=1;
else DS=0;
sh_cp = 0; sh_cp = 1;
}
st_cp=0; st_cp=1;
delay_ms(250);
}
=========================================
عند الضغط على اي سويج فانه سوف يولد شفره معينه ترسل الى مستقبل ليتم فكها
كود:
if (sw_load1==0)
{
send_data(address_dvice,1+cont);//11 21 31 ..
}
if (sw_load2==0)
{
send_data(address_dvice,2+cont);//12 22 32 ..
}
if (sw_load3==0)
{
send_data(address_dvice,3+cont);//13 23 33 ..
}
if (sw_load4==0)
{
send_data(address_dvice,4+cont);//14 24 34 ..
}
if (sw_load5==0)
{
send_data(address_dvice,5+cont);//15 25 35 ..
}
if (sw_load6==0)
{
send_data(address_dvice,6+cont);//16 26 36..
}
if (sw_load7==0)
{
send_data(address_dvice,7+cont);//17 27 37 ..
}
if (sw_load8==0)
{
send_data(address_dvice,8+cont);//18 28 38..
}
if (sw_All_load_on==0)
{
send_data(address_dvice,101+cont);//111 121 131 ..
}
if (sw_All_load_off==0)
{
send_data(address_dvice,100+cont);//110 120 130 ..
}
على سبيل مثال
كود:
if (sw_load1==0)
{
send_data(address_dvice,1+cont);//11 21 31 ..
}
حيث اذا كنا مختارين غرفه رقم 1 فأن متغير count=10 وبتالي راح يرسل 11 واذا كانت غرفه رقم 2 فأن count=20 وبتالي راح يرسل 21 واذا كانت غرفه رقم 3 راح يرسل 31 وهكذ
طبعا يمكنك خلق اي كود ولكن عليك وضع جدول معين تعرف كل كود بماذا يقابله وبتالي تلاحظ قللت الكود عن طريق متغير count فكل 10 تمثل غرفه معينه لان كل غرفه لها 8 مخارج اذن احتاج 8 اكواد لغرفه واحده
ومن ثم نقوم بأرسال الشفره وفق البرتوكول سوني وحسب داله