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

أدوات الموضوع

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 10-08-2018, 03:25 PM المشاركة 1   
yel مامشكلة هذا الكود ؟؟ Twitter FaceBook Google+



السلام عليكم ورحمة الله

كتبت برنامج بسيط عداد تصاعدى تنازلى من 0 الى 1000 ولاكن لم يعمل ولم اعرف اين اخطات ؟؟
كود:
#define    sw1       porta.b7
#define    sw2       porta.b6
#define    is        ==
unsigned int x=0;
unsigned char y=0;
bit flag1;
bit flag2;
const char seg_data[]={63,6,91,79,102,109,125,7,127,111};

void InitTimer0(){
  OPTION_REG         = 0x82;
  TMR0                 = 5;
  INTCON         = 0xA0;
}

void Interrupt(){
  if (TMR0IF_bit){
    TMR0IF_bit         = 0;
    TMR0                 = 5;
    y++;
    if(y is 1) {porta=1;portb=seg_data[x/1000];}
    if(y is 2)  portb=0;
    if(y is 3) {porta=2;portb=seg_data[x%1000/100];}
    if(y is 4)  portb=0;
    if(y is 5) {porta=4;portb=seg_data[x%1000%100/10];  }
    if(y is 6)  portb=0;
    if(y is 7) {porta=8;portb=seg_data[x%1000%100%10];      }
    if(y is 8)y=0;
  }
}

void _init()
   {
    cmcon=7;
    porta=0;
    portb=0;
    trisb=0;
    trisa=0b11000000;

   }


void main() 
{
  _init();
  InitTimer0();
  while (1)
           {
            if(sw1 is 0 && x!=1001 && flag1 is 0)
            {
             delay_ms(50);
             x++;
             flag1=1;

             }
            if(sw1 is 1)flag1=0;

            if(sw2 is 0 && x!=0 && flag2 is 0)
             {
              delay_ms(50);
              x--;
              flag2=1;

              }
            if(sw2 is 1)flag2=0;

           }

  }
[IMG][/IMG]

ارجو المساعدة مع جزيل الشكر


https://www.4shared.com/rar/egzz2yN9ee/CUNTER_1000.html

اعلانات

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 10-08-2018, 03:57 PM المشاركة 2   
افتراضي


[IMG][/IMG]

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

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 11-08-2018, 06:02 AM المشاركة 3   
افتراضي


معذرة لست خبيرا فى لغة السى لكن كلمة is هذه فى لغة بيزك أو بايثون و لم أجدها فى لغة C و لا اعلم أى مترجم تستخدم


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 11-08-2018, 06:52 PM المشاركة 4   
افتراضي


شكرا لك استاذ ماجد

هو لغة مايكرو سى

بعد التدقيق وجد الكود لايوجد به مشكلة المشكلة كان فى عدم استخدامى للترانزستورات على الاطراف D1 D2 D3 D4



الكود بدون الترانزستورات فقط للمحاكات
كود:
#define    sw1       porta.b7
#define    sw2       porta.b6
#define    is        ==
#define    dl        delay_ms(50)
unsigned int x=0;
unsigned char y=0;
bit flag1;
bit flag2;
const char seg_data[]={63,6,91,79,102,109,125,7,127,111};

void InitTimer0(){
  OPTION_REG         = 0x82;
  TMR0                 = 5;
  INTCON         = 0xA0;
}

void Interrupt(){
  if (TMR0IF_bit){
    TMR0IF_bit         = 0;
    TMR0                 = 5;
    y++;
    if(y is 0)  portb=0;
    if(y is 1) {porta=0B11111110;portb=seg_data[x/1000];    }
    if(y is 2)  portb=0;
    if(y is 3) {porta=0B11111101;portb=seg_data[x%1000/100];}
    if(y is 4)  portb=0;
    if(y is 5) {porta=0B11111011;portb=seg_data[x%100/10];  }
    if(y is 6)  portb=0;
    if(y is 7) {porta=0B11110111;portb=seg_data[x%10];      }
    if(y is 8)  y=0;
  }
}

void _init()
   {
    cmcon=7;
    porta=0;
    portb=0;
    trisb=0;
    trisa=0b11000000;

   }


void main() 
{
  _init();
  InitTimer0();
  while (1)
           {
            if(sw1 is 0 && x!=1001 && flag1 is 0)
            {
             dl;
             x++;
             flag1=1;

             }
            if(sw1 is 1)flag1=0;

            if(sw2 is 0 && x!=0 && flag2 is 0)
             {
              dl;
              x--;
              flag2=1;

              }
            if(sw2 is 1)flag2=0;

           }


  }

[IMG][/IMG]


الصورة الرمزية Rwad_Abujazia
Rwad_Abujazia
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2016
الدولة: Libya
المشاركات: 62
نشاط [ Rwad_Abujazia ]
قوة السمعة:0
قديم 21-11-2018, 10:29 AM المشاركة 5   
افتراضي


اعتقد ان كلمة is خطأ في هذه الجملة if(sw1 is 1)flag1=0;
يمكن استخدام التعبير التالي if(sw1 == 1)flag1=0;
او يمكن استخدام التعبير المنطقي التالي if(sw1 )flag1=0;
هذا و الله اعلم

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025