سلام عليكم
اخي تفضل هذا الكود بالميكروسي و انت حوله للفلوكود
كما ذكرت سابقا ضع مخارج الايسي الاربعة في البورت فليكن البورت د بترتيب
portd.f0 = 8870 Q 1
portd.f1 = 8870 Q 2
portd.f2 = 8870 Q 3
portd.f3 = 8870 Q 4
اما الخرج رقم 5 والذي يحمل اسم STD
يمكنك عمله كرجل لاختبار لانه عند اتصال بهاتف المربوط ب 8870 و الضغط على اي رقم يخرج هذا الرجل 5 فولت لمدة قليلة جدا
لهذا يمكن القول في الكود
if(portd.f7==1){
هنا الكود الذي يلي اختبار الضغط على ازرار في الهاتف
..... اعمل كذا و كذا .......
}
و بهذا نصل لنهاية بهذا الكود
كود:
while(1){
if(porte.f0==1){
if(porte.f0=0){
switch (portd){
case 1:portb.f0=~portb.f0;delay_ms(65);
case 2:portb.f1=~portb.f1;delay_ms(65);
case 3:portb.f2=~portb.f2;delay_ms(65);
case 4:portb.f3=~portb.f3;delay_ms(65);
case 5:portb.f4=~portb.f4;delay_ms(65);
case 6:portb.f5=~portb.f5;delay_ms(65);
case 7:portb.f6=~portb.f6;delay_ms(65);
case 8:portb.f7=~portb.f7;delay_ms(65);
case 9:porta.f0=~porta.f0;delay_ms(65);
case 10:porta.f1=~porta.f1;delay_ms(65);
case 11:portb=0;porta=0;delay_ms(65);
default:break;
}
}
}
}
اذن الكود هنا ماذا يقول لاحظ جيدا
1- جملة while لتكرار الكود بينه
2- جملة IF لاختبار كما قلنا الضغط على اي زر على الهاتف
3- جملة IF الثانية و هي اذا اصبحت رجل اختبار ازرار تساوي صفر بعدها نفذ الكود
الذي يليه
4 - SELECT CASE جعلت اسمه سويتش يمكنك تغيره بعد اعلان عنه في بداية الكود و يقتبر هنا بورت د و هو بورت الذي تضع فيه Q1.Q2.Q3.Q4
5 - نصل للاهم اختبار و هو قيمة البورت اذا كانت تساوي واحد يعني 00000001
ماذا يفعل اجعل PORTB.F0=1 بواحد يعني يشغل مثلا ليد و اذا قمت بضغط مرة اخرى
يجعل عكس حالة PORTB.F0=0 و هكذا لنهاية الكود حسب كل زر من ازرار
و انت طوره و غير ما تريد في مشروعك
في الاخير ارجو انني وصلت لك فكرة العمل و بالتوفيق للجميع
وسلام عليكم