بسم الله الرحمن الرحيم
أحب أن أحييكم على على هذه المحبة المتبادلة وهذا الشعور المتبادل.
وبما أنكم تحدثتم على
أسرع طريق لإحتراف برمجة الـ PIC بإستخدام MikroC
أنا متابع جيد لهذه الدورة.
وأود أن أطلب من الأستاذ زكى شاكر أن يقوم بمسح الردود التى لا تفيد الموضوع هناك حيث أنه فى 3 دروس فقط يوجد أكثر من 20 صفحة وعدد كبير من الردود. وكثرة هذه الردود تشعر من يدخل إلى الموضوع لأول مرة كأنه كبير جدا ومعقد.كما أن هذه كانت أحد شروط الدورة التى وضعها الأستاذ أحمد.
وعلى فكرة أنا إسمى محمد منصور
بالنسبة لبرنامجنا
هذا هو الكود النهائى "الحمد لله"
كود:
unsigned char B[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
unsigned char ones,tens,temp,tempones,temptens,int_flag;
void show()
{
portb=B[tens];
portc=B[ones];
delay_ms(1000);
}
void interrupt()
{
while(portb.f0){} // continue debounce
begin:
if(porta.f0)
{ delay_ms(250);
while(porta.f0){
if(ones!=9) { ones++;}
else { if (tens==9) {tens=0xff;} ones=0; tens++;}
show();}
}
else if (porta.f1)
{
delay_ms(250);
while(porta.f1){
if(ones!=0) {ones--;}
else{if(tens==0){tens=10;}ones=9; tens--;}
show();
}
}
else if (portb.f0)
{ delay_ms(500);
while (portb.f0) {}
int_flag=1;
tempones=ones;
temptens=tens;
INTCON.INTF=0;
return;
}
else {goto begin;}
}
void write()
{
int_flag=0;
EEprom_write(0x00,tempones);
delay_ms(25);
EEprom_write(0x01,temptens);
delay_ms(25);
}
void flasher()
{
porta.f2=0;
porta.f3=1;delay_ms(1000);
porta.f3=0;delay_ms(1000);
porta.f3=1;delay_ms(1000);
porta.f3=0;delay_ms(1000);
porta.f3=1;delay_ms(1000);
porta.f3=0;delay_ms(1000);
porta.f3=1;delay_ms(1000);
porta.f3=0;delay_ms(1000);
}
void main()
{
intcon.f7=1; intcon.INTE=1; //rb0 interrupt
adcon1=0x06; trisa=0x03; // porta 0,1 as switches
trisb=0x01; trisc=0;
temp=Eeprom_read(0x00);
delay_ms(25);
if(temp==0xff){temptens=1;tempones=5;}
else {tempones=temp;temp=Eeprom_read(0x01); delay_ms(25); temptens=temp;}
start:
ones=tempones;
tens=temptens;
porta.f2=1;
test:
if(int_flag==1){write(); goto start;}
show();
if(int_flag==1){write(); goto start;}
if(tens==0 && ones==0&&int_flag==0) {flasher(); goto start;}
if(ones==0&&int_flag==0) {tens--; ones=9 ;goto test;}
ones--;
goto test;
}
وفى هذا الرابط يوجد ملف البرنامج كامل مع ملف البروتس
ملاحظات:
لاحظ ..فى نهاية الدالة الرئيسية أقوم بإختبار الإنتربت عدة مرات.
بالنسبة لبرنامج البروتس :
لم أستطع الحصول على ال push button لم أجده.
أرهقنى جدا برنامج البروتس لكى أكمله حيث أنه كان يتوقف عن الإستجابة من دون أى سبب ولا يريد أن يحفظ ما فعلت .
فكنت بعد كل خطوة احفظ ما فعلت حتى إذا توقف البرنامج لا أبدأ من جديد.
هل يوجد سبب لذلك