اطلاعیه

Collapse
No announcement yet.

تفاوت این دو برنامه برای GPIO میکرو LPC1768

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

    تفاوت این دو برنامه برای GPIO میکرو LPC1768



    کد:
    #include "LPC17xx.H"
    
    void delay (unsigned long tick) { 
    unsigned long dly = tick*300;
    	while(dly--);
    }
    
    void main() 
    {
     	LPC_GPIO0->FIODIR = 0x00000001;  
    	while (1) {
    		LPC_GPIO0->FIOSET = 0x01;
    		delay(1000);
    		LPC_GPIO0->FIOCLR = 0x01;
    		delay(1000);	
    	} 
    }
    
    
    ================================
    
    #include <LPC17xx.h>
    void wait(void)
    {
    long int i;
    For (i=0;i<4000000;i++);
    }
    int main(void);
    {
    FIO0DIR =1;
    FIO0SET = 1;
    wait();
    FIO0CLR = 1;
    wait();
    }


    در برنامه ی اول با خود رجیسترها کار شده ، سوال من مربوط به برنامه ی دومه
    چرا از دستورهای FIO0DIR; FIO0SET ; FIO0CLR استفاده شده در صورتی که کامپایلر keil هنگام کامپایل کردن اینها رو نمیشناسه؟
    Reveng will surely come... Your hard time are ahead
    // - - - - - - - - - -
    برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
    // - - - - - - - - - -
    اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
    // - - - - - - - - - -

    #2
    پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

    بر میگرده به کتابخونه LPC17xx.H که توی برنامه اول به اون شکل تعریف شده و توی برنامه دوم به شکل دیگری تعریف شده!
    برای این که متوجه بشی روی دستور کلیک راست go to definition of... کلیک کن و ببین ریشه اون به کجا وصله!
    برای این که این گزینه کار کنه باید batch file هم روشن باشه!!!
    انجام پروژه هاي برنامه نويسي اندرويد
    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    دیدگاه


      #3
      پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

      دقیقاً از tick*300 منظور چیه؟

      من وقتی برنامه ی دوم را مینویسم با error مواجه میشم و میگه این دستورها (دستوراتی که در بالا نوشتم) ناشناس اند.
      من بعد از اینکه سوالمو مطرح کردم باز جستجو زدم و فهمیدم که باید فایل هدر قرار بدم، اما این فایل هدر را از کجا باید بیارم؟
      سوال بعدی اینکه چرا در پرانتز While دوتا خط فاصله قرار داده؟به این صورت ===>>> (--dly)

      برنامه ی اول برنامه های نمونه برای هدربورد lpc1768 موجود در سایت است
      Reveng will surely come... Your hard time are ahead
      // - - - - - - - - - -
      برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
      // - - - - - - - - - -
      اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
      // - - - - - - - - - -

      دیدگاه


        #4
        پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

        نوشته اصلی توسط سعید خیری
        دقیقاً از tick*300 منظور چیه؟

        من وقتی برنامه ی دوم را مینویسم با error مواجه میشم و میگه این دستورها (دستوراتی که در بالا نوشتم) ناشناس اند.
        من بعد از اینکه سوالمو مطرح کردم باز جستجو زدم و فهمیدم که باید فایل هدر قرار بدم، اما این فایل هدر را از کجا باید بیارم؟
        سوال بعدی اینکه چرا در پرانتز While دوتا خط فاصله قرار داده؟به این صورت ===>>> (--dly)

        برنامه ی اول برنامه های نمونه برای هدربورد lpc1768 موجود در سایت است
        این که میبینی یه تابع هست
        void delay (unsigned long tick) {
        unsigned long dly = tick*300;
        while(dly--);
        }

        حالا این تابع رو باید فراخوانی کنی و یه مقدار بفرستی بهش که اون مقدار میشه مدت زمان تاخیر.
        delay(400);//zzz

        اون دوتا خط تیره یعنی ماینس ماینس که توی برنامه نویسی یعنی یه واحد از متغیری که که جلوش ماینس ماینس هست کم کن!!

        این هم تابع تاخبر
        [url=http://vip.eca.ir/sharing/uploads/13525219911.rar]delay/
        انجام پروژه هاي برنامه نويسي اندرويد
        [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
        http://cafebazaar.ir/app/?id=com.atxdroid

        دیدگاه


          #5
          پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

          فرمایشات شما درست
          1- tick*300 چه نقشی داره؟
          2- چرا 300؟
          3- tick به چه معناست؟

          4- وقتی تابع را فراخوانی میکنیم ، تابع فراخوانی شده به خط dly ماینس ماینس می رسه و دو واحد از عدد تاخیر کم میشه، خوب بعدش چی میشه؟ آیا تابع توی لوپ میوفته تا مقدار عدد تاخیر صفر بشه؟
          Reveng will surely come... Your hard time are ahead
          // - - - - - - - - - -
          برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
          // - - - - - - - - - -
          اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
          // - - - - - - - - - -

          دیدگاه


            #6
            پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

            tisk رو اسم از یک زمان تا زمان دیگه گذاشتن مثل تیک تیک ساعت که هر تیک رو یک ثانیه میگیرن!
            توی این برنامه از این اسم متغیر استفاده شده تا خوانا تر باشه وگرنه چیز خاصی نیست!!!
            اون 300 هم اگر عدد 300 رو در 1 ضرب کنیم برای سی پی یو میشه 1 میلی ثانیه یا بهتره بگیم این مقدار معتل کردن cpu یک میلی ثانیه میشه!!!
            و یه چیز دیگه این که اون عدد رابطه مستقیم با فرکانس کاری میکرو داره یعنی اگه فرکانس رو کم یا زیاد کردی این مقدار دیگه دقیق نیست البته عدد 300 هم دقتش بالا نیست!!

            اره دیگه شما یه مقدار میفرستی و اون در 300 ضرب میشه بعد مبره توب حلقه و تند تند ماینس ماینس میشه تا موقعی 0 بشه بعد دیگه ریترن میخوره!!!
            انجام پروژه هاي برنامه نويسي اندرويد
            [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
            http://cafebazaar.ir/app/?id=com.atxdroid

            دیدگاه


              #7
              پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

              نوشته اصلی توسط سعید خیری

              تابع فراخوانی شده به خط dly ماینس ماینس می رسه و دو واحد از عدد تاخیر کم میشه
              به ازای هر2تا ماینس یک واحد از عدد تاخیر کم نمیکرد؟

              دیدگاه


                #8
                پاسخ : تفاوت این دو برنامه برای GPIO میکرو LPC1768

                نوشته اصلی توسط raashin
                به ازای هر2تا ماینس یک واحد از عدد تاخیر کم نمیکرد؟
                من نمیدونم دقیقاً ، اما احتمالاً همینطور باید باشه ، چون دستوری بنام ++i از متغیر i یک واحد کاهش میده. :nice:
                Reveng will surely come... Your hard time are ahead
                // - - - - - - - - - -
                برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
                // - - - - - - - - - -
                اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
                // - - - - - - - - - -

                دیدگاه

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