هذا الدرس يحتوي على تسع تجارب مختلفة .. وأحب أن أخبركم أن هذا الدرس يحتوي على نوعية مختلفة من الشرح فقد ارتقينا من مستوى المبتدئين لمستوى أعلى .. ففي هذا الدرس تم نقاش الكود بطريقة مختلفة تنشط العقل أكثر وأكثر (خصوصا التجربة رقم 12).. فالهدف من هذا الدرس الفهم الأقوى لما ينفذه البك خطوة خطوة .. وكيف يمكننا التعديل في ترتيب الأوامر ..
أيضا في هذا الدرس تم استخدام عنصر إلكتروني جديد ::
ففي الدروس السابقة استخدمنا الليدات led والسويتشات push button أما في هذا الدرس فسنستخدم عناصر إضافية وهي السفن سيجمنت ومفكك الترميز 7447 وتم استخدام السفن سيجمنت بطريقة معينة .. وفي دروس قادمة سيكون هناك تفصيل أكثر وأكثر ,, بالإضافة إلى العديد من الطرق والأوامر البرمجية وسأشير بإذن الله إلى كيفية استخدام أكثر من سفن سيجمنت بالعديد من الطرق وسأشرحها بتفصيل أكثر إن شاء الله ..
|
السؤال الأول :: لدينا أربع ليدات موصلين بالبك عن طريق B0,B1,B2,B3 المطلوب عمل عداد يقوم بالعد من صفر إلى 15 ثم يقوم بتكرار ذلك العد مرة أخرى من صفر إلى 15 وهكذا باستمرار ...( طبعا العد سيكون بالثنائي لأنه عن طريق الليدات ) .
الحل
كود:
void main()
{
char x;
trisb=0;
lop:
portb=0;
delay_ms(500);
for(x=0;x<15;x++)
{
portb++;
delay_ms(500);
}
goto lop;
}
حل آخر
كود:
void main()
{
trisb=0;
portb=0;
while(1)
{
for(portb=0;portb<=15;portb++)
delay_ms(500);
}
}
السؤال الثاني :: لدينا أربع ليدات موصلين بالبك عن طريق B0,B1,B2,B3 المطلوب عمل عداد يقوم بالعد من 15 إلى صفر ثم يعود مرة أخرى إلى 15 ويعد تنازلياً إلى أن يصل للصفر وهكذا باستمرار ..
الحل1
كود:
void main()
{
char x;
trisb=0;
while(1)
{
portb=15;
delay_ms(500);
for(x=0;x<15;x++)
{
portb--;
delay_ms(500);
}
}
}
حل آخر
كود:
void main()
{
trisb=0;
portb=0;
while(1)
{
for(portb=15;portb>=0;portb--)
delay_ms(500);
}
}
السؤال الثالث :: لدينا خمس ليدات موصلين بالبك عن طريق B0,B1,B2,B3,B4 المطلوب عمل عداد يقوم بالعد من 10 إلى 31 ثم يبدأ العد من جديد من 10 إلى 31 وهكذا باستمرار ..
الحل
كود:
void main()
{
trisb=0;
portb=0;
while(1)
{
for(portb=10;portb<=31;portb++)
delay_ms(500);
}
}
السؤال الرابع :: لدينا أربع ليدات موصلين بالبك عن طريق B0,B1,B2,B3 المطلوب هنا عمل عداد يقوم بالعد من 0 إلى 15 وعند وصول العداد إلى الرقم 15 يقوم بالعد تنازليا 15 ثم 14 ثم 13 ثم .. وهكذا إلى أن يصل إلى الصفر . وعند وصوله للصفر يبدأ بالعد تصاعديا من جديد إلى أن يصل إلى 15 .. وبالطبع عند وصوله لـ 15 يبدأ بالعد التنازلي إلى أن يصل للصفر .. وهكذا باستمرار .
الحل
كود:
void main()
{
char x;
trisb=0;
lop:
portb=0;
delay_ms(500);
for(x=0;x<15;x++)
{
portb++;
delay_ms(500);
}
for(x=0;x<14;x++)
{
portb--;
delay_ms(500);
}
goto lop;
}