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

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

الصورة الرمزية alsatel07
alsatel07
:: مهندس متميز ::
تاريخ التسجيل: Jun 2014
الدولة: Usa
المشاركات: 359
نشاط [ alsatel07 ]
قوة السمعة:0
قديم 22-01-2020, 07:27 AM المشاركة 1   
ha مساعدة في التعلم Twitter FaceBook Google+



السلام عليكم

مساعدة من الاخوا الكرام حول البيك

1 هل يستطيع البيك عمل عدة وضائف في نفس الوقت متال

ادا اردنا تشغيل لد من RA0 مدة الزمنية 1000MS الا ما لا النهاية وفي نفس الوقت تشغيل 3 لجات من RB0 .RB1.RB2 حيت لد RB0 يشتغل لد RB1وRB2 مطفى تم لد RB1 مشتعل لد RB0 و RB2 مطفى لد RB2 مشتعل لد RB0 وRB1 مطفى مدة الزمنية 250 MS الي ما لا النهاية
تم اللد RB3 RB4 يشتعل الاول تم التاني
3 مراحل هل ممكن وما هي سرعة QUARTZ اي المدبدب
افيدونا على علم استخدموا MIKROCPRO FOR PIC
افيدونا بارك الله فيكم

اعلانات

فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 22-01-2020, 02:17 PM المشاركة 2   
افتراضي


نعم اخي الكريم multi task ممكن ..
شوف هذا الكود :



char counter1=0;
char counter2=0;
char counter3=0;


void InitTimer1(){
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;
TMR1IE_bit = 1;
INTCON = 0xC0;
}

void Interrupt(){
if (TMR1IF_bit){
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;

counter1++;
counter2++;
counter3++;

if(counter1==200){counter1=0;
porta.f0=~porta.f0;
}

if(counter2==50) {portb.f0=1;portb.f1=0;portb.f2=0;}
if(counter2==100){portb.f0=0;portb.f1=1;portb.f2=0 ;}
if(counter2==150){portb.f0=0;portb.f1=0;portb.f2=1 ;counter2=0;}


if(counter3==150){portb.f3=1;portb.f4=0;}
if(counter3==200){portb.f3=0;portb.f4=1;counter3=0 ;}

}
}

void main() {
cmcon=7;
adcon1=7;
porta=0;
portb=0;
trisa=0;
trisb=0;
InitTimer1();

}

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

الصورة الرمزية alsatel07
alsatel07
:: مهندس متميز ::
تاريخ التسجيل: Jun 2014
الدولة: Usa
المشاركات: 359
نشاط [ alsatel07 ]
قوة السمعة:0
قديم 22-01-2020, 07:10 PM المشاركة 3   
افتراضي


الكود لم يعمل الاد RA0 شاعل ولا يعمل ام البقية ليس المطلوب اخي ارجوا المساعدة


الصورة الرمزية alsatel07
alsatel07
:: مهندس متميز ::
تاريخ التسجيل: Jun 2014
الدولة: Usa
المشاركات: 359
نشاط [ alsatel07 ]
قوة السمعة:0
قديم 22-01-2020, 07:19 PM المشاركة 4   
افتراضي


اعتذر اخي الكريم الخطئ مني الكود يعمل الخطئ كان المذبذب شكرا على الطود


الصورة الرمزية alsatel07
alsatel07
:: مهندس متميز ::
تاريخ التسجيل: Jun 2014
الدولة: Usa
المشاركات: 359
نشاط [ alsatel07 ]
قوة السمعة:0
قديم 22-01-2020, 07:22 PM المشاركة 5   
افتراضي


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


منى حسين
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2011
المشاركات: 97
نشاط [ منى حسين ]
قوة السمعة:0
قديم 22-01-2020, 07:33 PM المشاركة 6   
افتراضي


نعم اخي الكريم multi task ممكن ..
شوف هذا الكود :



char counter1=0;
char counter2=0;
char counter3=0;


void InitTimer1(){
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;
TMR1IE_bit = 1;
INTCON = 0xC0;
}

void Interrupt(){
if (TMR1IF_bit){
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;

counter1++;
counter2++;
counter3++;

if(counter1==200){counter1=0;
porta.f0=~porta.f0;
}

if(counter2==50) {portb.f0=1;portb.f1=0;portb.f2=0;}
if(counter2==100){portb.f0=0;portb.f1=1;portb.f2=0 ;}
if(counter2==150){portb.f0=0;portb.f1=0;portb.f2=1 ;counter2=0;}


if(counter3==150){portb.f3=1;portb.f4=0;}
if(counter3==200){portb.f3=0;portb.f4=1;counter3=0 ;}

}
}

void main() {
cmcon=7;
adcon1=7;
porta=0;
portb=0;
trisa=0;
trisb=0;
InitTimer1();

}
كود:

char counter1=0;
char counter2=0;
char counter3=0;


void InitTimer1(){
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;
TMR1IE_bit = 1;
INTCON = 0xC0;
}

void Interrupt(){
if (TMR1IF_bit){
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;

counter1++;
counter2++;
counter3++;

if(counter1==200){counter1=0;
porta.f0=~porta.f0;
}

if(counter2==50) {portb.f0=1;portb.f1=0;portb.f2=0;}
if(counter2==100){portb.f0=0;portb.f1=1;portb.f2=0 ;}
if(counter2==150){portb.f0=0;portb.f1=0;portb.f2=1 ;counter2=0;}


if(counter3==150){portb.f3=1;portb.f4=0;}
if(counter3==200){portb.f3=0;portb.f4=1;counter3=0 ;}

}
}

void main() {
cmcon=7;
adcon1=7;
porta=0;
portb=0;
trisa=0;
trisb=0;
InitTimer1();

}


فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 23-01-2020, 07:25 AM المشاركة 7   
افتراضي


char counter1=0; // هنا قمنا بتعريف متغيرات 3 كي تقوم بالعد[LEFT]
char counter2=0;
char counter3=0;


void InitTimer1(){ هنا عملنا تهيئه للتايمر 1 وضبط اعدادات التايمر1 كي يقوم بالمقاطعه كل 5 مل //
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;
TMR1IE_bit = 1;
INTCON = 0xC0;
}

void Interrupt(){ هنا كتبنا البرنامج في برنامج المقاطعة //
if (TMR1IF_bit){
TMR1IF_bit = 0;
TMR1H = 0xD8;
TMR1L = 0xF0;

counter1++; هنا المتغيرات تبدأ بالعد .كل 5مل تزيد المتغيرات بمقدار واحد//
counter2++;
counter3++;

if(counter1==200){counter1=0; هنا اذا وصل العد الى 200 فهذا يعني انه انقضى من الوقت 1000مل يعني ثانيه واحده بعد ذلك قمنا بتصفير المتغير لكي يعد من جديد ويعمل الليد او ينطفيء//
porta.f0=~porta.f0; // هنا عملنا توجل أي نعكس حاله الليد
}
// هنا كذلك قمنا بنفس العمليه في الاعلى ولكن نقصنا العد الى 50 كي ينقضي من الوقت ربع ثانيه 250مل
if(counter2==50) {portb.f0=1;portb.f1=0;portb.f2=0;}
if(counter2==100){portb.f0=0;portb.f1=1;portb.f2=0 ;} هنا اضفنا 250مل//
if(counter2==150){portb.f0=0;portb.f1=0;portb.f2=1 ;counter2=0;} هنا ايضا//


if(counter3==150){portb.f3=1;portb.f4=0;} هنا ايضا نفس التعليمات بالاعلى//
if(counter3==200){portb.f3=0;portb.f4=1;counter3=0 ;}

}
}

void main() {
cmcon=7; // stop cmparetors
adcon1=7; // put all ports as digital
porta=0; // porta 0v
portb=0; // portb 0v
trisa=0; //porta output
trisb=0; //portb output
InitTimer1(); // Initiating of Timer1

}


فيصل الريامي
:: مهندس ::
تاريخ التسجيل: Dec 2018
المشاركات: 36
نشاط [ فيصل الريامي ]
قوة السمعة:0
قديم 23-01-2020, 07:29 AM المشاركة 8   
افتراضي


شكرا للتعديل

إضافة رد

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

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

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


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

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