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

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

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:110
قديم 03-10-2014, 05:00 AM المشاركة 1   
افتراضي برجاء المساعدة من الاخوة الافاضل محتاج برنامج لتشغيل 10 ليد عن طريق 10 سوتشات Twitter FaceBook Google+



السلام عليكم ..
أرجو المساعدة من الاخوة الافاضل ..

محتاج برنامج لتشغيل 10 ليد عن طريق 10 سويتشات .. والمتحكم المستخدم 16F877A..

فكرة البرنامج يوجد عندى 10 ليدات أريد اختيار تشغيل الليد عن طريق الضغط على سويتش رقم واحد .. ولو عايز اشغل ليد أخر اضغط على سويتش رقم 2 وينطفئ الليد الاول .. وعند الضغط على سويتش رقم 3 يضوى الليد رقم 3 وينطفئ الليد رقم 2 ...



انا كتبت البرنامج دة بس مش عارف أكمل لأنى لسة مبتدأ فى فهم أمر الشرط ..

والتعامل مع السوتشات أو بمعنى اصح ادخال البينات للبيك..



} ()void main

:loop

;TRISD=0B00011111

; TRISB=0B0

(if(PORTD.f1==0

}
;PORTB.f0=1
{
;else PORTB.f0=0

;goto loop

{


وبعد ازنكم لو مثال صغير فى حالة تقليل عدد الليدات المستخدمة أو ذيادتهم ..

ولكم جزيل الشكر ....ز


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 03-10-2014 الساعة 05:11 AM
اعلانات

الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:0
قديم 03-10-2014, 08:16 AM المشاركة 2   
افتراضي


السلام
طيب وان ضغط على سوتش رقم 4 ينطفئ رقم 1 و 2 و 3

او ينطفء رقم 3

و هل عن الضغط المتواصل يشتعل اللي او ضغط فقط يشتغل و ينطفء

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

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 03-10-2014, 06:29 PM المشاركة 3   
افتراضي


هدا الكود مع ارجاع الزر الى حالته
كود:
void main() {
trisb=0;
trisd=0xff;
portb=portd=0;
for(;;){
if(rd0_bit==1){portb.f7=0;portb.f0=~portb.f0;delay_ms(500);}
if(rd1_bit==1){portb.f0=0;portb.f1=~portb.f1;delay_ms(500);         }
if(rd2_bit==1){portb.f1=0;portb.f2=~portb.f2;delay_ms(500);        }
if(rd3_bit==1){portb.f2=0;portb.f3=~portb.f3;delay_ms(500);        }
}}


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 03-10-2014, 10:25 PM المشاركة 4   
افتراضي


اتمنى ان يكون كما تريد





الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:110
قديم 04-10-2014, 04:05 AM المشاركة 5   
افتراضي


السلام
طيب وان ضغط على سوتش رقم 4 ينطفئ رقم 1 و 2 و 3

او ينطفء رقم 3

و هل عن الضغط المتواصل يشتعل اللي او ضغط فقط يشتغل و ينطفء
مشكور جداا أخى الكريم على الرد .. انا كنت محتاج الكود اللى تفضل أخى احمد معاطى بكتابتة .. مشكور مرة أخرى على اهتمامك ..


.................................................. .................................................. .............

هدا الكود مع ارجاع الزر الى حالته
كود:
void main() {
trisb=0;
trisd=0xff;
portb=portd=0;
for(;;){
if(rd0_bit==1){portb.f7=0;portb.f0=~portb.f0;delay_ms(500);}
if(rd1_bit==1){portb.f0=0;portb.f1=~portb.f1;delay_ms(500);         }
if(rd2_bit==1){portb.f1=0;portb.f2=~portb.f2;delay_ms(500);        }
if(rd3_bit==1){portb.f2=0;portb.f3=~portb.f3;delay_ms(500);        }
}}
الف شكر لك أخى الكريم انا هجرب الكود دة وهحاول افهمة ...

.................................................. .................................................. ......

فعلا هو دة اللى كنت محتاجة الف الف شكر ليك أخى الكريم ولكل من ساهم وتفاعل فى هذا الطلب مشكوريين جميعاا وذادكم الله من علمة ونفع بكم تحياتى لكم جميعااا ... ولى طلب أخى الكريم لو ممكن تشرح لى هذا الكود أصل انا محتاج افهم مش انسخ وخلاص تحياتى لك..........


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 04-10-2014 الساعة 04:13 AM

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:110
قديم 04-10-2014, 04:19 AM المشاركة 6   
افتراضي ارجو مساعدة


ياريت لو شرح للكود اللى كتبة أخونا احمد معاطى .. محتاج افهم الكود عشان افهم امر الشرط ... ومشكوريين جداااا وكل عام وأنتم طيبون .. عيد سعيد عليكم وعلى اسرة المنتدى






الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 04-10-2014, 08:31 PM المشاركة 7   
افتراضي


اخى عبدالله البرنامج بسيط جدا تلاحظ انه امر واحد مكرر مع تغير رقم البن بالبك
ومثال سناخذ الامر الاول
كود:
       if(portb.f0==0){portc=1;}
       if(portb.f0==0){portd=0;}
كود:
if(portb.f0==0)
if اداة شرط بمعنى اذا تحقق ما بين القوسين افعل الاتى
portb.f0 يرمز للبن الاول فى البورت b ويجب وضع علامة = مكرره
كود:
{portc=1;}
وهذا ما اريده ان يتحقق عندما البين الاولى فى البورت b تساوى صفر وهو جعل البين الاولى من البورت c تساوى 1

كود:
if(portb.f0==0){portd=0;}
وهذا الكود لجعل البورت d يساوى صفر وهو مكرر طالما الخرج على البورت c وعندما جعلنا الخرج على البورت d غيرنا الى
كود:
if(porta.f0==0){portc=0;}
وهكذا باقى البرنامج مع تغير رقم البين المستخدم للمفتاح ورقم البين المستخدم للخر ج ارجو ان تكون فكرة البرنامج واضحه واى نقطه غامضه اسئل و ان شاء الله ستجد الاجابه


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:110
قديم 05-10-2014, 06:36 AM المشاركة 8   
افتراضي


اخى عبدالله البرنامج بسيط جدا تلاحظ انه امر واحد مكرر مع تغير رقم البن بالبك
ومثال سناخذ الامر الاول
كود:
       if(portb.f0==0){portc=1;}
       if(portb.f0==0){portd=0;}
كود:
if(portb.f0==0)
if اداة شرط بمعنى اذا تحقق ما بين القوسين افعل الاتى
portb.f0 يرمز للبن الاول فى البورت b ويجب وضع علامة = مكرره
كود:
{portc=1;}
وهذا ما اريده ان يتحقق عندما البين الاولى فى البورت b تساوى صفر وهو جعل البين الاولى من البورت c تساوى 1

كود:
if(portb.f0==0){portd=0;}
وهذا الكود لجعل البورت d يساوى صفر وهو مكرر طالما الخرج على البورت c وعندما جعلنا الخرج على البورت d غيرنا الى
كود:
if(porta.f0==0){portc=0;}
وهكذا باقى البرنامج مع تغير رقم البين المستخدم للمفتاح ورقم البين المستخدم للخر ج ارجو ان تكون فكرة البرنامج واضحه واى نقطه غامضه اسئل و ان شاء الله ستجد الاجابه
السلام عليكم ورحمة الله ...

والله يعجز الليسان عن الشكر .. مشكور جدااا أخى الكريم ..
عندى سؤال بعد اذنك ؟؟؟؟؟

انا افهم امر الشرط if

ولكن تواجهنى مشكله وهيا مثلا .. لو انا عندى 10 سوتشات وعايز لما اضغط على سويتش معين يضوى الليد وعند رفع يدى من على السويتش يظل الليد يضوى .. وهذة النقطة لا افهما حيث انا كتبت برنامج أعلاة الموضوع وكتبت أمر الشرط .. عند نزول الفولت صفر فولت على البن porta .. يخرج 5 فولت على البن port b0...
والبرنامج اشتغل معاية تمام ولكن واجهتنى مشكله وهى عند الضغط على السويتش يضوى الليد وعند رفع يدى ينطفئ الليد .. السؤال .. كيف اكتب امر الشرط برمجياا أن يظل الليد يضوى حتى بعد رفع الليد من على السويتش ...
والسؤال الثانى كيف يتم استخدام امر الشرط .. مثلا زى البرنامج اللى حضرتك كاتبة .. بمعنى عند الضغط على سويتش معين يضوى الليد رقم 1 .. وعند الضغط على سويتش أخر ينطفى الليد رقم 1 ويضوى الليد رقم اثنين .. السؤال كيف يتم ذالك برمجيااا فى أمر الشرط ..

وسؤال أخر بعد اذنك أخى الكريم كيف أقوم بذيادة عدد السويتشات وأخليهم مستقلين بتنفيذ اوامر معينه بعيدااا عن ال 10 سوتشات الاولين .. بمعن انا عند ى10 ليدات وكتبت برنامج يضوى الليد حسب السويتش اللى ضغط عليه وال 10 سوتشات دول مربطين ببعض بمعنى لو ضغط على سويتش أخر ينطفئ الليد الاول ويضوى الليد الثانى ... السؤال .. اريد أن اذود 3 سوتشات أخرين يقوموو بضوى 3 ليداد ولكن منفصلين عن بعض .. بمعنى لو ضغط على السويتش رقم 1 يضوى الليد رقم 1 ولو ضغط على السويتش رقم 2 يظل الليد رقم 1يضوى وايضا يضوى الليد رقم 2 وايذا ضغط على السويتش رقم واحد مرة أخرة ينطفئ الليد رقم 1 ويظل الليد رقم 2 يضوى ... اريد معرفة طريقة فصل السيوتشات عن بعضهم ليقوم كل واحد بوظيفة معينة .....


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

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




ومشكورررررررررررر جدااااااااااا أخى الكرم واسف والله على كل هذة الاسئلة المملة جزاك الله عنى خير ... وكل عام وانت سعيد


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 05-10-2014 الساعة 06:47 AM
إضافة رد

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

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

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


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

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