قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-03-2012, 09:27 PM المشاركة 17   
افتراضي



البرنامج :

يتلخص البرنامج فيما يلى :
  • تعريف كل طرف ميكروكونترولر يتصل بمفتاح باسم هذا المفتاح باستخدام موجه التعريف , على سبيل المثال # define KEY1 PORTB.B0 للمفتاح المتصل بالطرف RB0 .
  • فى بداية الدالة الرئيسية main يتم إعلان ثلاثة متغيرات لكل مفاتيح متغير لحفظ حالته وتخصيص الصفر له كحالة ابتدائية , على سبيل المثال unsigned state_key1= 0 .
  • كما يتم جعل جميع الأطراف التماثلية أطراف رقمية للدخل / الخرج الرقمى عن طريق السجل ADCON1 = 6 .
  • وإعداد المنفذ PORTD كمخارج TRISD=0وتصفيره PORTD = 0و المنفذ PORTB كمداخل TRISB=0XFF ( على الرغم من أن حالته الافتراضية مداخل) والمنفذ PORTA كمداخل أيضا TRISA =0XFF.
  • تمكين الرفع لأعلى داخليا عن طريق OPTION_REG.B7= 0 لتوفير استخدام مقاومات رفع خارجية .
  • الغرض من تلك الإعدادات التعرف على التقنيات المختلفة .
الآن يأتى دور حلقة البرنامج اغير منتهية وفيها :
  • يتم كشف الضغط على المفتاح (كشف تحول حالة الطرف للحالة المنخفضة) عن طريق استخدام دالة المفتاح , وعند تحقق الضغط يتم وضع الحالة 1 بمتغيره :
if (button (& portb, 0, 25, 0)) state_key1= 1
  • ثم كشف تحريره بعد ضغطه عن طريق إجراء عملية "و" AND بين حالة الضغط و حالة التحرير:
if (state_key1&& button(&portb, 0, 25, 1))
  • عند تحقق ذلك يتم تنفيذ العبارات المطلوبة منه وفى النهاية يتم تصفير متغيره للحالة الابتدائية تجهيزا للضغطة التالية state_key1= 0.

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-03-2012, 09:30 PM المشاركة 18   
افتراضي



البرنامج :

كود:
/*
Reading program key.
This program aims to read the state of a button on / off an LED.
*/

# define KEY1 PORTB.B0 // assign the name KEY1 to pin RB0
# define KEY2 PORTB.B1  // assign the name KEY2 to pin RB1
# define KEY3 PORTA.B5  // assign the name KEY3 to pin RA5

void main () {                         // main function of the program

unsigned state_key1= 0 ;       // set variables status flags for the keys
unsigned state_key2= 0 ;
unsigned state_key3= 0 ;

ADCON1 = 6;                        // set all pins A / D and I / O General purpose
TRISD=0;
TRISA =0XFF;
TRISB=0XFF;
PORTD = 0;
OPTION_REG.B7= 0;   // enable the internal resistors for PORTB pull-up pic

while(1) {

if (button (& portb, 0, 25, 0)) state_key1= 1;
if (button (& portb, 1, 25, 0)) state_key2= 1;
if (button (& porta, 5, 25, 0)) state_key3= 1;

if (state_key1&& button(&portb, 0, 25, 1)) {
PORTD = 0b10101010;
Delay_ms (200);
state_key1= 0;
}

if (state_key2&& button(&portb, 1, 25, 1)) {
PORTD = 0b01010101;
Delay_ms (200);
state_key2 = 0;
}

if (state_key3&& button(&porta, 5, 25, 1)) {
PORTD = 0b11111111;
Delay_ms (200);
state_key3= 0;
}
}
}



اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 09-03-2012, 09:35 PM المشاركة 19   
افتراضي


النتائج :














الصورة الرمزية محمود جابر
محمود جابر
:: مهندس متواجد ::
تاريخ التسجيل: May 2007
الدولة: مصر
المشاركات: 61
نشاط [ محمود جابر ]
قوة السمعة:
قديم 09-03-2012, 10:31 PM المشاركة 20   
افتراضي


هذا ما تعودنا عليه منك يا بشمهندس
بارك الله فيك ورزقك العلم النافع


matrixstar
:: مهندس ::
تاريخ التسجيل: Mar 2011
المشاركات: 26
نشاط [ matrixstar ]
قوة السمعة:
قديم 14-03-2012, 08:27 PM المشاركة 21   
افتراضي


جيد جدا ومجهود كويس



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:39 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)