|
السلام عليكم
اخي حسن الكود السابق يعمل على اطفاء و اضائة البورت بالكامل و لكن اخي اعتقد ان هناك خطأ بسيط في الكود ..فمثلا اذا كنت مضيئ 4 ليداد و طغطت على البور ما بينطفو للمره الاولى و لكن يضيئ باقي البورت كله(8 ليدات) ثم ضغطه ثانيه يطفئ جميع البورت(8 ليدات).. ثم بعد ذلك يعمل على الاطفاء و الاضائه بشكل سليم ..يمكن لك ان تتأكد من خلال المحاكاة على بروتس
|
اوكي أخي العزيز لو ضغطت على البور راح يتغير قيمه state_powe لتصبح 255 وبتالي راح يسبب أضاءه ليدات
الحل بسيط هو اما ان تجعل قيمه state_powe اوليه =255
كود:
sbit ir_in at RA0_bit; // Infrared receiver input
sbit ir_in_direction at TRISA0_bit; // Infrared receiver input
unsigned int retint; // general purpose integer
unsigned char ir_byte,COUNT,bouton;
unsigned char ir_result[3] ;
const char dvice_address=1;
unsigned char state_power=255;
او تقول كما في الكود
كود:
case 0: Portb.F0 = ~Portb.F0;Delay_ms(150);break; // button TV '0'
case 1: Portb.F1 = ~Portb.F1;Delay_ms(150);break; // button TV '1'
case 2: Portb.F2 = ~Portb.F2;Delay_ms(150);break; // button TV '2'
case 3: Portb.F3 = ~Portb.F3;Delay_ms(150);break; // button TV '3'
case 21: state_power= ~state_power;
if(state_power==255)portb=0;
else portb=255;
Delay_ms(150);
break;
default:break;
}