اطلاعیه

Collapse
No announcement yet.

متغیر

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

    متغیر

    با سلام. در متغیر ها نهایتا unsigned long int هست که تا 32 بیت جا داره.آیا دستوری هست که دوتا unsigned long int رو به هم وصل کرد و یک متفیر 64 بیتی داشت؟البته با double و long double کاری ندارم.

    #2
    پاسخ : متغیر

    سلام
    تو کد ویژن یه همچین چیزی نیست .
    حتی double هم 32 بیتیه
    واسه چه کاری می خوایی بگو شاید تونستیم کمکت کنیم

    دیدگاه


      #3
      پاسخ : متغیر

      برای کنتری led ها.مثلا 60 تا led داریم که به شیفت رجیستر وصلن.میکرو متفیر رو میخونه و با توجه به متفیر به شیفت رجیستر پالس میده.تو برنامه نویسی مشکلی ندارم .مشکل من تو تعداد led هاست که از 32 تا بیشتر بشه دیگه نمیشه کاری کرد.چون هر بیت در متغیر ما کنترل کننده یک led هست.یک کاری کردم که بیام بقیه led ها رو با یک متغیر دیگه کنترل کنم ولی وقتی که نوبت به متغیر دومی میشه بقیه led هایی که با متغیر اولی کنترل میشن واسه خودشون روشن میشن.نمیدونم چرا؟روش ماتریسی هم نمیشه استفاده کرد.

      دیدگاه


        #4
        پاسخ : متغیر

        کدهاتو بزاری بهتر میشه کمک کرد
        از آرایه استفاده کن.
        گذشت خصلت مردان است

        دیدگاه


          #5
          پاسخ : متغیر

          #include <mega8.h>
          #include <delay.h>
          /************************************/
          #define Data PORTB.0
          #define Clk PORTB.1
          #define Reset PORTB.2
          #define OE PORTB.4
          /************************************/
          void write_led1(unsigned long int input);

          void main(void){

          unsigned long int i=0,j=0,m,t=0,u,w=0;
          unsigned char counter=0;

          DDRB=0x3F;
          PORTB=0x00;

          OE=1;
          Clk=1;
          Data=0;

          Reset=1;
          delay_ms(100);
          Reset=0;

          start:i=1;j=0;t=0;
          /******
          این قسمت ال ای دی ها رو یکی یکی از بالا شیفت میده میاد پایین
          for(j=0;j<1;j++){
          i=1;
          while(counter<=60){
          write_led1(i);
          delay_ms(100);
          m=i<<1;
          i=m;
          counter++;
          }
          counter=0;
          }//end of for

          j=0;
          goto start;

          }//end of main
          این قسمت هم فانکش برنامه هست.هر بیت از متغیر که یک بشه این فانکشن یک میکنه
          /*************************************/
          void write_led1(unsigned long int input){

          unsigned char k=0;
          unsigned long int temp=0;
          OE=0;

          for(k=0;k<46;k++){
          temp=0x01;
          temp&=input>>k;
          Data=temp;
          Clk=0;
          #asm("nop"
          //delay_us(2);
          Clk=1;
          #asm("nop"
          //delay_us(2);
          }

          OE=1;
          }

          دیدگاه


            #6
            پاسخ : متغیر

            میشه در مورد استفاده از آرایه ها بیشتر توضیح بدید.

            دیدگاه


              #7
              پاسخ : متغیر

              نیازی به آرایه نیست بنظر من

              کد:
              #include <io.h>
              #include <delay.h>
              
              #define DATA  PORTB.0
              #define CLOCK PORTB.1
              #define RESET PORTB.2
              #define OE   PORTB.4
              
              void write_led1(unsigned char n) {
               unsigned char i;
               
               OE = 0;
               
               for (i = 0; i < 46; i++) {
                if (i == n) {
                 DATA = 1;
                }
                else {
                 DATA = 0;
                }
                CLOCK = 0;
                CLOCK = 1;
               }
               
               OE = 1;
              }
              
              void main(void) {
               unsigned char i;
               unsigned char j;
               
               DDRB = ~0;
               PORTB = 0;
               
               OE = 1;
               CLOCK = 1;
               DATA = 0;
               
               RESET = 1;
               delay_ms(100);
               RESET = 0;
               
               while (1) {
                for (i = 0; i < 1; i++) {
                 for (j = 0; j <= 60; j++) {
                  write_led1(j);
                  delay_ms(100);
                 }
                }
               }
              }
              گذشت خصلت مردان است

              دیدگاه


                #8
                پاسخ : متغیر

                تشکر از اینکه وقتتو برای ما میزاری برادر.ممنون.این تابعی که نوشتید کاملا درسته و لی فکر کنم فقط واسه یه اسلاید.ولی من یک تابع میخوام که با اون اسلایدهای مختلف بدم.

                دیدگاه

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