اطلاعیه

Collapse
No announcement yet.

مشکل در نوع متغیر در codevision

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در نوع متغیر در codevision

    سلام
    من یه برنامه نوشتم و توی proteus جواب گرفتم ولی حالا که اومدم و متغیرم رو از نوع 2بایتی تعریف کردم ارور نمیگیره ولی تو شماتیک خروجی ندارم
    باید چیکار کنم؟؟ :angry:

    #2
    پاسخ : مشکل در نوع متغیر در codevision

    نوشته اصلی توسط shahbazy
    سلام
    من یه برنامه نوشتم و توی proteus جواب گرفتم ولی حالا که اومدم و متغیرم رو از نوع 2بایتی تعریف کردم ارور نمیگیره ولی تو شماتیک خروجی ندارم
    باید چیکار کنم؟؟ :angry:
    سلام
    منظورتون از متغییر از نوع دو بایتی چیه ؟
    برنا متون رو بزارید کمکتون می کنم.
    نیا باران . . . زمین جای قشنگی نیست !
    من از اهل زمینم خوب می دانم که
    گل در عقد زنبور است ولی سودای بلبل دارد و پروانه را هم دوست می دارد . . .

    دیدگاه


      #3
      پاسخ : مشکل در نوع متغیر در codevision

      نوشته اصلی توسط davood 00
      سلام
      منظورتون از متغییر از نوع دو بایتی چیه ؟
      برنا متون رو بزارید کمکتون می کنم.
      #include <mega16.h>
      const unsigned char ECG_DATA[]= //ECG wave
      {
      73,74,75,75,74,73,73,73,73,72,71,69,68,67,67,67,
      68,68,67,65,62,61,59,57,56,55,55,54,54,54,55,55,
      55,55,55,55,54,53,51,50,49,49,52,61,77,101,132,
      169,207,238,255,254,234,198,154,109,68,37,17,5,
      0,1,6,13,20,28,36,45,52,57,61,64,65,66,67,68,68,
      69,70,71,71,71,71,71,71,71,71,72,72,72,73,73,74,
      75,75,76,77,78,79,80,81,82,83,84,86,88,91,93,96,
      98,100,102,104,107,109,112,115,118,121,123,125,
      126,127,127,127,127,127,126,125,124,121,119,116,
      113,109,105,102,98,95,92,89,87,84,81,79,77,76,75,
      74,73,72,70,69,68,67,67,67,68,68,68,69,69,69,69,
      69,69,69,70,71,72,73,73,74,74,75,75,75,75,75,75,
      74,74,73,73,73,73,72,72,72,71,71,71,71,71,71,71,
      70,70,70,69,69,69,69,69,70,70,70,69,68,68,67,67,
      67,67,66,66,66,65,65,65,65,65,65,65,65,64,64,63,
      63,64,64,65,65,65,65,65,65,65,64,64,64,64,64,64,
      64,64,65,65,65,66,67,68,69,71,72,73
      };
      unsigned int BPM=60,Cntr=0;
      interrupt [TIM0_COMP] void timer0_comp_isr(void)
      {
      if(++Cntr>((BPM*256)/60))
      {
      Cntr=0;
      T0_flag=1;
      }
      }
      void wave (void)
      {
      static unsigned char ECGCntr;
      if(T0_flag)
      {
      T0_flag=0;
      ECGcntr++;
      PORTA=ECG_DATA[ECGCntr];

      }
      void main(void)
      {
      while (1)
      {
      wave();
      }
      }


      برنامه به هیچی ارور نمیگیره ولی خروجی wave که روی پورت a تعریف شده یه خط هست ولی اگر به جای فرمول BPM*256/60 یه عدد بذارم خروجی دارم

      دیدگاه


        #4
        پاسخ : مشکل در نوع متغیر در codevision

        نوشته اصلی توسط shahbazy
        #include <mega16.h>
        const unsigned char ECG_DATA[]= //ECG wave
        {
        73,74,75,75,74,73,73,73,73,72,71,69,68,67,67,67,
        68,68,67,65,62,61,59,57,56,55,55,54,54,54,55,55,
        55,55,55,55,54,53,51,50,49,49,52,61,77,101,132,
        169,207,238,255,254,234,198,154,109,68,37,17,5,
        0,1,6,13,20,28,36,45,52,57,61,64,65,66,67,68,68,
        69,70,71,71,71,71,71,71,71,71,72,72,72,73,73,74,
        75,75,76,77,78,79,80,81,82,83,84,86,88,91,93,96,
        98,100,102,104,107,109,112,115,118,121,123,125,
        126,127,127,127,127,127,126,125,124,121,119,116,
        113,109,105,102,98,95,92,89,87,84,81,79,77,76,75,
        74,73,72,70,69,68,67,67,67,68,68,68,69,69,69,69,
        69,69,69,70,71,72,73,73,74,74,75,75,75,75,75,75,
        74,74,73,73,73,73,72,72,72,71,71,71,71,71,71,71,
        70,70,70,69,69,69,69,69,70,70,70,69,68,68,67,67,
        67,67,66,66,66,65,65,65,65,65,65,65,65,64,64,63,
        63,64,64,65,65,65,65,65,65,65,64,64,64,64,64,64,
        64,64,65,65,65,66,67,68,69,71,72,73
        };
        unsigned int BPM=60,Cntr=0;
        interrupt [TIM0_COMP] void timer0_comp_isr(void)
        {
        if(++Cntr>((BPM*256)/60))
        {
        Cntr=0;
        T0_flag=1;
        }
        }
        void wave (void)
        {
        static unsigned char ECGCntr;
        if(T0_flag)
        {
        T0_flag=0;
        ECGcntr++;
        PORTA=ECG_DATA[ECGCntr];

        }
        void main(void)
        {
        while (1)
        {
        wave();
        }
        }


        برنامه به هیچی ارور نمیگیره ولی خروجی wave که روی پورت a تعریف شده یه خط هست ولی اگر به جای فرمول BPM*256/60 یه عدد بذارم خروجی دارم
        این عبارت به یک متغییر صحیح اساین کن و بجای عبارت از متغییر استفاده کن اینطوری شاید درست بشه در ضمن چون عمل ضرب وتقسیم از چپ براست انجام میشه اگر اول تقسیم و بعد ضرب انجام بشه از لحاظ احتمال رخ ندادن سرریز بهتره البته در c استاندرد محاسبات میانی با دقت double انجام میشه ولی در codevision ممکنه اینطور نباشه.

        دیدگاه

        لطفا صبر کنید...
        X