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

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

majdi jaber
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2006
الدولة: فلسطين
المشاركات: 142
نشاط [ majdi jaber ]
قوة السمعة:0
قديم 15-04-2012, 07:54 PM المشاركة 1   
افتراضي كيف استطيع ان اجعل جميع المخارج بورت واحد Twitter FaceBook Google+



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

اعلانات

keenan
:: مهندس ::
تاريخ التسجيل: Oct 2010
المشاركات: 23
نشاط [ keenan ]
قوة السمعة:0
قديم 15-04-2012, 09:37 PM المشاركة 2   
افتراضي


نجحت معي الطريقة التالية , طويلة شوي ولكن يمكن نسخها واستخدامها على شكل دالة
الطريقة على الشكل التالي : نقوم بتعريف متغير حجمه حسب عدد المنافذ التي تريد استخدامها
مثلاً اذا اردت استخدام منفذين سيكون الحجم 2 بايت ( نوع int )
اما اذا استخدمت 4 منافذ يجب ان تعرفه كـ ( long )
في مثالنا استخدمت متغير حجمه 2 بايت البايت الاول للبورت الاول والبايت الثاني للبورت الثاني وعند كل تغيير في قيمة المتغير ستتغير حالة المنافذ ولذلك يجب استدعاء الدالة بعد كل تغيير في قيمة المتغير
وعليه فان قيمة المتغير ستحدد حالة المنافذ
شرح البرنامج : باستخدام دالة if
اذا كانت قيمة البت الاول في المتغير الذي عرفناه تساوي الواحد ستكون الرجل الاولى في البوابة الاولى تساوي 1 والا ستساوي الصفر
واذا كانت قيمة البت الثانية في المتغير تساوي الواحد ستكون الرجل الثانية تساوي الواحد وهكذا الى ان نصل الى نهاية البورت الاول الان يجب الانتقال الى البورت الثاني ولكن يجب ان ننتبه الى ان المتغير الذي استخدمناه فيه 16 بت لانه من نوع int اما اذا اردت تعريف المنافذ كلها ستعرف المتغير كـ long وسيصبح عندك 32 بت
بقية البرنامج اذا كانت البت التاسعة في المتغير تساوي الواحد ستكون قيمة الرجل الاولى في البورت الثاني تساوي الواحد والا تساوي الصفر واذا كانت قيمة البت العاشرة في المتغير تساوي الواحد ستكون قيمة الرجل الثانية في البورت الثاني تسواي الواحد وهكذا حتى نكمل جميع الارجل

وهذا البرنامج الذي جربته : الازاحة مع تشغيل واطفاء اضواء البورتين وعمل بدون مشاكل على بورتين


كود:
int i=1;
porti (){
if(i&1)porta.b0=1;else porta.b0=0;if(i&2)porta.b1=1;else porta.b1=0;if(i&4)porta.b2=1;else porta.b2=0;if(i&8)porta.b3=1;else porta.b3=0;
if(i&16)porta.b4=1;else porta.b4=0;if(i&32)porta.b5=1;else porta.b5=0;if(i&64)porta.b6=1;else porta.b6=0;if(i&128)porta.b7=1;else porta.b7=0;
if(i&256)portc.b0=1;else portc.b0=0;if(i&512)portc.b1=1;else portc.b1=0;if(i&1024)portc.b2=1;else portc.b2=0;if(i&2048)portc.b3=1;else portc.b3=0;
if(i&4096)portc.b4=1;else portc.b4=0;if(i&8192)portc.b5=1;else portc.b5=0;if(i&16384)portc.b6=1;else portc.b6=0;if(i&32768)portc.b7=1;else portc.b7=0;
}
void main()
{

while(1){
porti();
delay_ms(500);
i<<=1;
if(i==0){i=43690;porti();delay_ms(1000);i=~i;porti();delay_ms(1000);
         i=43690;porti();delay_ms(1000);i=~i;porti();delay_ms(1000);i=1;}
        }
}

رابط الملفات مع المحاكاة
http://www.mediafire.com/?zlckljlzkkz8k4z

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

majdi jaber
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2006
الدولة: فلسطين
المشاركات: 142
نشاط [ majdi jaber ]
قوة السمعة:0
قديم 16-04-2012, 08:37 PM المشاركة 3   
افتراضي


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

إضافة رد

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

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

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


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

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