 |
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
|
|
نشاط [ عبدالله حجازى ]
قوة السمعة:
|
|
17-05-2015, 04:37 AM
المشاركة 18
|
|
تفضل اخى هذا برنامج عداد يتم التحكم فى الوقت من خلال الكود
السلام عليكم ورحمه الله
تفضل اخى الكريم هذا برنامج كتبتهولك بالغة السى
فكرة البرنامج هو عداد تصاعدى اربع خانات ... وعند وصول العداد الى رقم ..9999... هيتم ايقاف البرنامج وهيضيئ ليد احمر للدلاله على توقف البرنامج ...
ملاحظات هامة حول البرنامج ...
الليد الاخضر للدلاله على ان البرنامج يعمل...
الليد الاحمر للدلاله على انتهاء عمل البرنامج .....
لإعادة تشغيل البرنامج ...
1 _ يجب عليك بتصفير العدادات بالضغط على مفتاح TEMR 0,0,0,0,0....
2_ بعد تصفير العدادات يجب عليك بأدخال الرقم السرى المكون من اربع ارقام .. وهم من اليمن الى الشمال .. 2 5 1 7 ....
3_ بعد ادخال الرقم السري اضغط على مفتاح .. استارت ليتم تشغيل البرنامج
ملحوظه .. يمكنك تغيير الرقم السرى المكون من اربع ارقام من خلال الكود فقط ..
ملحوظه يمكنك ضبط البرنامج على ان يتوقف بعد فطرة زمنية معينه ضبط الوقط بيتم من خلال الكود فقط ...
صور الدائرة الالكترونية على برنامج المحاكاة

كودالبرنامج
كود:
unsigned short mask(unsigned short num);
unsigned int a1=0,m1=0,e1=0,w1=0;
void interrupt(){
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);
INTCON=0b00100000;
TMR0=0;
}
void main() {
int m=9;
int a=9;
int e=9;
int w=9;
int x=0;
OPTION_REG=0b10000101;
INTCON=0b10100000;
TMR0=217;
trisb=0; portb=0;
trisd=0; portd=0;
trisc=1; portc=0;
trisa=0; porta=0;
trise=0; porte=0;
/*eeprom_write(0,0);
eeprom_write(1,0);
eeprom_write(2,0);
eeprom_write(3,0);
eeprom_write(4,0);
eeprom_write(5,0);
eeprom_write(6,0);
eeprom_write(7,0);*/
a1 = eeprom_read(0);delay_ms(10);
m1 = eeprom_read(1);delay_ms(10);
e1 = eeprom_read(2);delay_ms(10);
w1 = eeprom_read(3);delay_ms(10);
delay_ms(500);
loop:
for(;;){
if(x==0){goto loop1;};
if(a1==2&&m1==5&&e1==1&&w1==7&&portc.f4==1)
{x=0;portc.f1=1; a1=0;m1=0;e1=0;w1=0;};
if(portc.f6){a1=0;m1=0;e1=0;w1=0;};
if(portc.f0==1){a1++; delay_ms(300);};
if(portc.f1==1){m1++; delay_ms(300);};
if(portc.f2==1){e1++; delay_ms(300);};
if(portc.f3==1){w1++; delay_ms(300);};
if(a1==10){a1=0;};
if(m1==10){m1=0;};
if(e1==10){e1=0;};
if(w1==10){w1=0;};
}
loop1:
porta.f1=1;
for(;;){
/*delay_ms(1);*/
a1++;
eeprom_write(0,a1); delay_ms(10);
if(a1==10){m1++;a1=0; eeprom_write(1,m1); delay_ms(10);};
if(m1==10){e1++;m1=0; eeprom_write(2,e1); delay_ms(10);};
if(e1==10){w1++;e1=0;eeprom_write(3,w1); delay_ms(10);};
if(a==a1&&m==m1&&e==e1&&w==w1){x=1;porta.f1=0; porta.f0=1;
eeprom_write(0,0); delay_ms(10);
eeprom_write(1,0); delay_ms(10);
eeprom_write(2,0); delay_ms(10);
eeprom_write(3,0); delay_ms(10);
eeprom_write(4,0); delay_ms(10);
eeprom_write(5,0); delay_ms(10);
eeprom_write(6,0); delay_ms(10);
eeprom_write(7,0); delay_ms(10);
goto loop;}
}
}
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;
}
}
هذة الجزئيه من الكود هى المسؤله عن الوقت وبالاخص امر
loop1:
porta.f1=1;
for( {
delay_ms(1000);
a1++;
eeprom_write(0,a1); delay_ms(10);
|
غدااا هرفعلك ملف المحاكاة ان شاء الله
تحياتى لك
التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 17-05-2015 الساعة 05:10 AM
|