اطلاعیه

Collapse
No announcement yet.

یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

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

    یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

    کد:
    #include <mega64.h>
    #include <delay.h>
    void decimal2binary(unsigned char i);
    void main()                    
     {
      DDRA=0xff;
      while(1)
      { 
        
        int i;
         PORTA.4=1;
        for (i=0;i<255;i++)
        decimal2binary(i); 
      }
     }
    void decimal2binary(unsigned char i)
    {
      char array[7],index,index1;
      for (index=7;index>=0;index--)
      {
        array[index]=i%2;
        i= i/2;
        if(index==0)
        array[index]=i/2; 
      } 
      for (index1=0;index1<8;index1++)
      {
        PORTA.1=array[index]; 
        
        PORTA.2=0;
        PORTA.2=1;
        PORTA.2=0;
        
      } 
      
      PORTA.4=1;
       PORTA.4=0; 
       PORTA.4=1; 
      delay_ms(4);
    }
    یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

    #2
    پاسخ : یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

    قضیه این PORTx = 0 or 1 چیه
    چرا array 7 تایی است باید هشت تایی باشه

    اول این ها رو بفهمیم بعد بریم سراغ بقیه چیزها

    دیدگاه


      #3
      پاسخ : یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

      نوشته اصلی توسط ShahiMV
      قضیه این PORTx = 0 or 1 چیه
      این برا اینکه تو پروتئوس جوابو چک کنم داره میده به 595
      نوشته اصلی توسط ShahiMV
      چرا array 7 تایی است باید هشت تایی باشه
      دمت گرم بابا ارایه از صفر شروع میشه

      دیدگاه


        #4
        پاسخ : یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

        سلام
        این تابع رو تست کنین

        کد:
        void decimal2binary(unsigned char i)
        {
          char array[8],index;
        
        	for(index=0;index<8;index++)
        	{
        		array[index]=i%2;        
        		i=i/2;         
        	}
        
        	for(index=7;index>=0;index--)
          	{
            		PORTA.1=array[index]; 
           	 	PORTA.2=0;
           	 	PORTA.2=1;
           	 	PORTA.2=0;
          	 } 
          
          PORTA.4=1;
          PORTA.4=0; 
          PORTA.4=1; 
          delay_ms(4);
        }

        یادتون باشه شما اگر می خواین هشت تا داده بگیرین باید متغییر آرایه رو مقدار 8 بدین و چون داده ها از صفر شروع می شوند آخرین اندیس آرایه 7 هست
        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

        دیدگاه


          #5
          پاسخ : یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

          داداش گل تویه بلوک for دوم نگاه کن
          توی دستورات حلقه نوشتی index1 ولی تویی جاگداری برای خروجی نوشتی [ array[index خوب این خودش دچار مشکل میکنه
          باید اونم index1 بنویسی دیگه :biggrin:
          تنها غیر ممکن ، غیر ممکن است

          دیدگاه


            #6
            پاسخ : یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

            نوشته اصلی توسط Nakh0d4
            این برا اینکه تو پروتئوس جوابو چک کنم داره میده به 595دمت گرم بابا ارایه از صفر شروع میشه
            این که آرایه از صفر شروع میشه که توش حرفی نیست ولی برای تعریف آرایه مقداری که توی [ ] است تعداد char ها را نمایش میده
            یعنی وقتی شما مینویسید char arry [7]
            یعنی اینکه آرایه ای به طول 7 دارم که شماره های آن از 0 تا 6 است
            اوکی؟

            دیدگاه


              #7
              پاسخ : یه برنامه برای تبدیل دسیمال به باینریه می تونید بگید مشکل کجاست؟

              داداش مشکلت حل شد ، Nakh0d4 جان

              بعدشم دوست عزیزمون shahiMV راست میگه بابا ، برای تعریفش باید 8 تایی تعریف کنی مثل
              نوشته اصلی توسط baby_1
              سلام
              این تابع رو تست کنین

              کد:
              void decimal2binary(unsigned char i)
              {
                char array[8],index;
              
              	for(index=0;index<8;index++)
              	{
              		array[index]=i%2;        
              		i=i/2;         
              	}
              
              	for(index=7;index>=0;index--)
                	{
                  		PORTA.1=array[index]; 
                 	 	PORTA.2=0;
                 	 	PORTA.2=1;
                 	 	PORTA.2=0;
                	 } 
                
                PORTA.4=1;
                PORTA.4=0; 
                PORTA.4=1; 
                delay_ms(4);
              }

              یادتون باشه شما اگر می خواین هشت تا داده بگیرین باید متغییر آرایه رو مقدار 8 بدین و چون داده ها از صفر شروع می شوند آخرین اندیس آرایه 7 هست
              baby که تو کدش دقت کنی 8 تایی نوشته

              بعدشم اون چیزی رو که گفتم نگاه کردی؟ مشکلت رو حل کرد؟ برنامت درسته مشکلی نداره
              تنها غیر ممکن ، غیر ممکن است

              دیدگاه

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