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

   

محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 229
نشاط [ محمد إلياس ]
قوة السمعة:
قديم 27-07-2017, 10:42 AM المشاركة 9   
افتراضي



بارك الله فيكم إخواني على الرد ....
أجل أقصد المتحكم من نوع بك و بالضبط PIC18F452
إذا كان هذا ممكن أرجو أن ترفق الإجابة بمثال عن كيفية تفعيل مؤقتين معا و شكرا مسبقا
أخي الكريم رغم كثير من البحث في النت لم أعثر إلا على طريقة صالحة للمتحكم Pic16F877A والمتحكمات التي تتضمن مسجلات خاصة بمقاطعة التايمرات مماثلة لما يتضمنه.
لو تحب تجرب عليه ممكن أرفع لك مثال + الطريقة ..

اعلانات

walid nadim
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2015
المشاركات: 92
نشاط [ walid nadim ]
قوة السمعة:
قديم 27-07-2017, 10:26 PM المشاركة 10   
افتراضي


السلام عليكم
تم الحل و الحمد لله الأمر في غاية البساطة و لا يحتاج لشرح .... هنا مثال لطريقة تشغيل ثلاث تايمرات
لاحظت شيء في غاية الأهمية و قد يحدث مع كثير منا .... أنا أعمل من حاسوبين في مكانين مختلفين أحدهما مجهز بالنت و الثاني لا عندما أجلس أمام الحاسوب المجهز بالنت و تواجهني مشكلة ما لا أسعى لحلها بل أبحث في النت و نادرا ما أجد الحل أما عند جلوسي أمام الحاسوب الذي لا يحتوي نت و مع قليل من الجهد و التركيز أحل أغلب مشاكلي في وقت وجيز
void InitTimers(){

T0CON = 0xC4;
TMR0IF_bit = 0x00;
TMR0L = 0xD1;
TMR0IE_bit = 0x01;
//-------------------
T1CON = 0x01;
TMR1IF_bit = 0x00;
TMR1H = 0xAE;
TMR1L = 0xD1;
TMR1IE_bit = 0x01;
//-------------------
T2CON = 0xFF;
TMR2IF_bit = 0x00;
TMR2 = 0xF0;
TMR2IE_bit = 0x01;
INTCON = 0xC0;
}
//================================================== ============================
void Interrupt(){
if(TMR0IF_bit){
TMR0IF_bit = 0x00;
TMR0L = 0xD1;
PORTB.F0 = ~PORTB.F0;
}

if(TMR1IF_bit){
TMR1IF_bit = 0x00;
TMR1H = 0xAE;
TMR1L = 0xD1;
PORTB.F1 = ~PORTB.F1;
}

if(TMR2IF_bit){
TMR2IF_bit = 0x00;
TMR2 = 0xF0;
PORTB.F2 = ~PORTB.F2;
}
}
//================================================== ============================
void main() {
TRISB = 0;
PORTB = 0;

InitTimers();


while(1){

}
}


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

محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 229
نشاط [ محمد إلياس ]
قوة السمعة:
قديم 28-07-2017, 01:20 AM المشاركة 11   
افتراضي


السلام عليكم
تم الحل و الحمد لله الأمر في غاية البساطة و لا يحتاج لشرح .... هنا مثال لطريقة تشغيل ثلاث تايمرات
لاحظت شيء في غاية الأهمية و قد يحدث مع كثير منا .... أنا أعمل من حاسوبين في مكانين مختلفين أحدهما مجهز بالنت و الثاني لا عندما أجلس أمام الحاسوب المجهز بالنت و تواجهني مشكلة ما لا أسعى لحلها بل أبحث في النت و نادرا ما أجد الحل أما عند جلوسي أمام الحاسوب الذي لا يحتوي نت و مع قليل من الجهد و التركيز أحل أغلب مشاكلي في وقت وجيز
void InitTimers(){

T0CON = 0xC4;
TMR0IF_bit = 0x00;
TMR0L = 0xD1;
TMR0IE_bit = 0x01;
//-------------------
T1CON = 0x01;
TMR1IF_bit = 0x00;
TMR1H = 0xAE;
TMR1L = 0xD1;
TMR1IE_bit = 0x01;
//-------------------
T2CON = 0xFF;
TMR2IF_bit = 0x00;
TMR2 = 0xF0;
TMR2IE_bit = 0x01;
INTCON = 0xC0;
}
//================================================== ============================
void Interrupt(){
if(TMR0IF_bit){
TMR0IF_bit = 0x00;
TMR0L = 0xD1;
PORTB.F0 = ~PORTB.F0;
}

if(TMR1IF_bit){
TMR1IF_bit = 0x00;
TMR1H = 0xAE;
TMR1L = 0xD1;
PORTB.F1 = ~PORTB.F1;
}

if(TMR2IF_bit){
TMR2IF_bit = 0x00;
TMR2 = 0xF0;
PORTB.F2 = ~PORTB.F2;
}
}
//================================================== ============================
void main() {
TRISB = 0;
PORTB = 0;

InitTimers();


while(1){

}
}

السلام عليكم
أخي الكريم كل مجهول صعب وكل معلوم سهل وبسيط
ولكل شيء أسباب وأجل
والحمد لله الذي هداك إلى الحل .
وشكرا لك لأنك أحطتنا علما بما توصلت إليه.
هذا رابط الطريقة التي سبق لي الإشارة إليها.
هي على Pic16F877A لكنها تقبل إن شاء الله التطبيق على بيكات أخرى لمن له إلمام بالبرمجة انطلاقا من داتا شيت المتحكم الذي يعمل عليه:
http://eng-serve.com/pic/pic_timer.html
إن شاء الله تنفع كل باحث عن كيفية استخدام تايمر واحد أو اثنين أو ثلاث.


walid nadim
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2015
المشاركات: 92
نشاط [ walid nadim ]
قوة السمعة:
قديم 28-07-2017, 03:41 AM المشاركة 12   
افتراضي


السلام عليكم
أخي الكريم كل مجهول صعب وكل معلوم سهل وبسيط
ولكل شيء أسباب وأجل
والحمد لله الذي هداك إلى الحل .
وشكرا لك لأنك أحطتنا علما بما توصلت إليه.
هذا رابط الطريقة التي سبق لي الإشارة إليها.
هي على Pic16F877A لكنها تقبل إن شاء الله التطبيق على بيكات أخرى لمن له إلمام بالبرمجة انطلاقا من داتا شيت المتحكم الذي يعمل عليه:
http://eng-serve.com/pic/pic_timer.html
إن شاء الله تنفع كل باحث عن كيفية استخدام تايمر واحد أو اثنين أو ثلاث.
بارك الله فيك أخي موقع جميل حقا شكرا لك



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