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

أدوات الموضوع

mustafaibraheem
:: مهندس ::
تاريخ التسجيل: Jun 2014
الدولة: Baghdad
المشاركات: 8
نشاط [ mustafaibraheem ]
قوة السمعة:0
قديم 14-07-2014, 02:19 PM المشاركة 1   
افتراضي المفاتيح بالمايكروسي Twitter FaceBook Google+



السلام عليكم
اخوتي الكرم لقد نفذة الكود التالى بالمايكروسي والكود هو عباره عن اضائة ليد بواسطة مفتاح بش بوتن . عند الضغط على المفتاح يعمل الليد ويبقى متوهج وعند الضغط على المفتاح مره اخرى ينطفىء اليد .. كيف ازيد من عدد المفاتيح واليدات يعني اريد مثلا ان اضيف اربعه او خمس مفاتيح وليدات ويعملون بنفس المبدء

كود:
#define SW PORTA.F0 #define LED PORTC.F0  void main() { CMCON=0X07; TRISA.F0=1; TRISC.F0=0; PORTC=0; while(1) {if(SW==0){Delay_ms(130); if(SW==0) { LED=~LED; } } }  }


اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 14-07-2014, 03:58 PM المشاركة 2   
افتراضي


السلام عليكم
اخوتي الكرم لقد نفذة الكود التالى بالمايكروسي والكود هو عباره عن اضائة ليد بواسطة مفتاح بش بوتن . عند الضغط على المفتاح يعمل الليد ويبقى متوهج وعند الضغط على المفتاح مره اخرى ينطفىء اليد .. كيف ازيد من عدد المفاتيح واليدات يعني اريد مثلا ان اضيف اربعه او خمس مفاتيح وليدات ويعملون بنفس المبدء

كود:
#define SW PORTA.F0 #define LED PORTC.F0  void main() { CMCON=0X07; TRISA.F0=1; TRISC.F0=0; PORTC=0; while(1) {if(SW==0){Delay_ms(130); if(SW==0) { LED=~LED; } } }  }

السلام عليكم
يمكن ذلك ولكن يجب أستخدام انتربت لماذا لانك اذا اضغط على سويج وتستخدمت امر delay فأنه سوف يبقى مايكرو مشغول بتنفيذ امر ديلي وبتالي حتى وان ضغطت على سويج ثاني فأنه لاينفذ حتى انتهاء من امر ديلي
اما انتربت فانه مايكرو يستطيع تنفيذ كل اوامر ولايشغله اي شيئ
ويعني اقصد نولد ازمنه بأستخدام تايمر 0
سوف اكتبلك كود لترى نتيجه وسوف أستخدم 16f628a
رمضان كريم وصيام مقبول بمشيئه الله

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 14-07-2014, 05:32 PM المشاركة 3   
افتراضي


السلام عليكم
يمكن ذلك ولكن يجب أستخدام انتربت لماذا لانك اذا اضغط على سويج وتستخدمت امر delay فأنه سوف يبقى مايكرو مشغول بتنفيذ امر ديلي وبتالي حتى وان ضغطت على سويج ثاني فأنه لاينفذ حتى انتهاء من امر ديلي
اما انتربت فانه مايكرو يستطيع تنفيذ كل اوامر ولايشغله اي شيئ
ويعني اقصد نولد ازمنه بأستخدام تايمر 0
سوف اكتبلك كود لترى نتيجه وسوف أستخدم 16f628a
رمضان كريم وصيام مقبول بمشيئه الله
السلام عليكم
تفضل هذا مشروع
http://up.top4top.net/downloadf-top4...606d1-rar.html

كود:
sbit sw1 at RA0_bit;
sbit sw2 at RA1_bit;
sbit sw3 at RA2_bit;
sbit sw4 at RA3_bit;

sbit led1 at RB0_bit;
sbit led2 at RB1_bit;
sbit led3 at RB2_bit;
sbit led4 at RB3_bit ;

char flag_sw1=0,flag_sw2=0,flag_sw3=0,flag_sw4=0;
unsigned int time_sw1,time_sw2,time_sw3,time_sw4;
//Timer0
//Prescaler 1:32; TMR0 Preload = 100; Actual Interrupt Time : 4.992 ms

//Place/Copy this part in declaration section
void InitTimer0()
{
  OPTION_REG         = 0x84;
  TMR0                 = 100;
  INTCON         = 0xA0;
}

void Interrupt()
{
  if (TMR0IF_bit)
                 {
                  TMR0IF_bit         = 0;
                  TMR0                 = 100;
                  //Enter your code here
                  if(flag_sw1==1)time_sw1++;
                  if(flag_sw2==1)time_sw2++;
                  if(flag_sw3==1)time_sw3++;
                  if(flag_sw4==1)time_sw4++;
                 }
}
//*****************************************************************//
void main()
{
 cmcon=7;
 trisa=0xFF;
 trisb=0;
 portb=0;
 InitTimer0();
 while(1)
        {
          if(sw1==0)flag_sw1=1;
          if(sw2==0)flag_sw2=1;
          if(sw3==0)flag_sw3=1;
          if(sw4==0)flag_sw4=1;
          
          if(time_sw1>50)// mean time >50x5=250ms
                       {
                        time_sw1=0;
                        flag_sw1=0;
                        led1=~led1;
                       
                       }
          if(time_sw2>50)// mean time >50x5=250ms
                       {
                        time_sw2=0;
                        flag_sw2=0;
                        led2=~led2;
                       }
         if(time_sw3>50)// mean time >50x5=250ms
                       {
                        time_sw3=0;
                        flag_sw3=0;
                        led3=~led3;
                       }
         if(time_sw4>50)// mean time >50x5=250ms
                       {
                        time_sw4=0;
                        flag_sw4=0;
                        led4=~led4;
                       }
        }
}
تحياتي


mustafaibraheem
:: مهندس ::
تاريخ التسجيل: Jun 2014
الدولة: Baghdad
المشاركات: 8
نشاط [ mustafaibraheem ]
قوة السمعة:0
قديم 17-07-2014, 04:22 PM المشاركة 4   
افتراضي


المبدع الاستاذ حسن هادي كل كلمات الشكر لا تفيك حقك
باركك الله وجزاك خيرا فى هذا الشهر الفضيل
وكتب الله لك حسنه في كل حرف كتبته


إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025