ثالثا : العملية المنطقية XOR ورمزها " ^" : "أو الحصرية أو المنفردة"
تقوم التعليمة بالمقارنة بين زوج من البتات وتكون النتيجة بواحد إذا كانت الخانتان متكاملتان أو متتامتان أى أحدهما بواحد والأخرى بصفر , وإلا كانت نتيجة المقارنة بصفر .
البرنامج :
كود:
/*
* Project name:
"XOR logic operator "|"
* MCU: PIC16f877A
Oscillator: 4 MHz
*/
sbit OUT0 at PORTD.B0; // this is where OUTPUT OUT0 is fully defined
sbit OUT1 at PORTD.B1; // this is where OUTPUT OUT1 is fully defined
sbit OUT2 at PORTD.B2; // this is where OUTPUT OUT2 is fully defined
sbit OUT3 at PORTD.B3; // this is where OUTPUT OUT3 is fully defined
sbit OUT4 at PORTD.B4; // this is where OUTPUT OUT4 is fully defined
sbit OUT5 at PORTD.B5; // this is where OUTPUT OUT5 is fully defined
sbit OUT6 at PORTD.B6; // this is where OUTPUT OUT6 is fully defined
sbit OUT7 at PORTD.B7; // this is where OUTPUT OUT7 is fully defined
sbit IN0 at PORTC.B0; // this is where INPUT IN0 is fully defined
sbit IN1 at PORTC.B1; // this is where INPUT IN1 is fully defined
sbit IN2 at PORTC.B2; // this is where INPUT IN2 is fully defined
sbit IN3 at PORTC.B3; // this is where INPUT IN3 is fully defined
sbit IN4 at PORTC.B4; // this is where INPUT IN4 is fully defined
sbit IN5 at PORTC.B5; // this is where INPUT IN5 is fully defined
sbit IN6 at PORTC.B6; // this is where INPUT IN6 is fully defined
sbit IN7 at PORTC.B7; // this is where INPUT IN7 is fully defined
void main(){
TRISD = 0; // set PORTD as Output
TRISC = 0XFF; // PORTC as Inputs
PORTD = 0 ; //Clear Outputs
while (1) { // endless Loop
if(IN0^IN1) OUT0=1; else OUT0=0;// if input0 "XOR" input1 Is ON , output0 will be ON else OFF
}
}
معلومات هامة :
الوظيفة (أو ألبوابة) ألمنطقية "أو ألحصرية" أو المنفردة أو المخصصة "(XOR)
البوابة OR تعطى خرج إذا كان (أى من الدخلين أو كلاهما = 1 ) . فى بعض الأحيان نحتاج إلى بوابة تعطى " خرج عندما يكون أى من الدخلين = 1 " و( لا تعطى خرج عندما عندما يكون كلاهما = 1 " أى يكون لها جدول الحقيقة المبين بالشكل .
فى حالة "عدم وجود الدخل A و الدخل B يكون الخرج = 0 ".
عندما "يعمل الدخل A فقط" " يكون الخرج = 1" .
عندما "يعمل الدخل B فقط" " يكون الخرج = 1" .
عندما " يعمل كل من الدخل A والدخل B" "لا يوجد خرج " .
فى هذا المثال من البوابات المنطقية يكون للدخل A وللدخل B مجموعتان من التلامسات بالدائرة , أحدهما يكون مفتوح عادى NO والآخر يكون مغلق عادى NC .
فى برمجة المتحكم القابل للبرمجة PLC مسموح أن يكون للدخل عدد من التلامسات حسب الحاجة .