السلام عليكم ورحمه الله
انا بصدد عمل ماكينة قطاعة ...عجين الخبر ...
وانجزت 60% من الكود ... ولكن واجهتنى بعض المتاعب والصعاب فى بناء الكود ...
المشاكل اللتى واجهتنى ... عند كل مرة يتم تحقق شرط قطع الحساس .. بيقفل خاصية الملتى بليكسنج ....
و مشكلة قطع التيار عن الدائرة تبدأ العمل من جديد عايز استخدم ذاكرة الابروم..
فكرة الكود أو عمل الماكينة ..
هو .... بستخدام اربع 7 سيجمنت و اربع سوتشات .. بوش بوطن .. للتحكم فى تغيير الارقام المعروضة على ال 7 سيجمنت ... وحساس ضوئى ....
الفكرة هى ادخال اربع ارقام من خلال اربع سوتشات على ال 7سيجمنت .. وليكن مثلا 9123.... ويوجد سوتش لبداية تشغيل الرنامج ويوجد حساس ضوئى عند قطع الحساس يتم العد التنازلى عند كل مرة يتم فيها قطع الحساس الى ان يتم تصفيير الاربع 7 سيجمنت ويتوقف البرنامج عن العمل ...
ملحوظة اريد اضافة سوتش لوقف البرنامج توقف مؤقط واستئناف العمل...
ملف المشروع
http://www.mediafire.com/download/4p...0/7segment.rar
..
كود:
unsigned short mask(unsigned short num);
unsigned char a1=0,m1=0,e1=0,w1=0;
void main() {
trisb=0; portb=0;
trisd=0; portd=0;
trisc=1; portc=0;
trisa=0; porta=0;
for(;;){
if(portc.f0==1){delay_ms(200);m1++;} if(m1==10){m1=0;}
if(portc.f1==1){delay_ms(200);a1++;} if(a1==10){a1=0;}
if(portc.f2==1){delay_ms(200);e1++;} if(e1==10){e1=0;}
if(portc.f3==1){delay_ms(200);w1++;} if(w1==10){w1=0;}
if(portc.f4==1){portb.f7=1; delay_ms(500);portb.f7=0;a1--;if(a1==0,m1==9){m1--;a1=9;} if(m1==0){e1--;m1=9;}if(e1==0){w1--;e1=9;} }
portb=1;
portd=mask(a1);
delay_ms(5);
portb=2;
portd=mask(m1);
delay_ms(5);
portb=4;
portd=mask(e1);
delay_ms(5);
portb=8;
portd=mask(w1);
delay_ms(5);
}
}
unsigned short mask(unsigned short num){
switch (num){
case 0 : return 0xC0;
case 1 : return 0xF9;
case 2 : return 0xA4;
case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x82;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;
}
}