اطلاعیه

Collapse
No announcement yet.

چند sampile بسیار ابتدایی برای iar و at91sam7sxx

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

    #31
    پاسخ : چند sampile بسیار ابتدایی برای iar و at91sam7sxx

    یعنی این تابعی که شما نوشتید یعنی
    (delay_ms(5000
    ؟

    توی IAR هم همین تابع جواب میده یا اونجا یه چیز دیگه ای میشه ؟


    منبع آموزش فارسی نداره ؟
    بگو که گل نفرستد کسی به خانه من
    که عطر یاد تو پر کرده آشیانه من

    دیدگاه


      #32
      پاسخ : چند sampile بسیار ابتدایی برای iar و at91sam7sxx

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


      این برنامه یه چشمک زن هست:

      /************************************************** ****************************/
      /* BLINKY.C: LED Flasher */
      /************************************************** ****************************/
      /* This file is part of the uVision/ARM development tools. */
      /* Copyright (c) 2005-2006 Keil Software. All rights reserved. */
      /* This software may only be used under the terms of a valid, current, */
      /* end user licence from KEIL for a compatible version of KEIL software */
      /* development tools. Nothing else gives you the right to use this software. */
      /************************************************** ****************************/

      #include <AT91SAM7S64.H> /* AT91SAMT7S64 definitions */
      #include <lib_AT91SAM7S64.h>
      #include "..\Board.h"

      #define SPEED (MCKKHz/10)

      const int led_mask[] = { LED1, LED2, LED3, LED4 };

      unsigned int LEDSpeed = 50*SPEED;


      /*
      * Change Speed depending on SW1 and SW2
      */

      void change_speed (void) {
      if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & SW1_MASK) == 0) {
      if (LEDSpeed > SPEED) LEDSpeed -= SPEED;
      }
      if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & SW2_MASK) == 0) {
      if (LEDSpeed < MCK) LEDSpeed += SPEED;
      }
      }


      /*
      * Wait Function (SW Waiting Loop)
      * Waiting Time defined by global variable LEDSpeed
      */

      void wait (void) {
      unsigned int n;

      change_speed();
      for (n = 0; n < LEDSpeed; n++);
      }


      /*
      * Main Program
      */

      int main (void) {
      int i;

      // Enable the Clock of the PIO
      AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);

      // Configure the PIO Lines corresponding to LED1..LED4 as Outputs
      AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, LED_MASK);

      // Clear the LED's. On the Board we must apply a "1" to turn off LEDs
      AT91F_PIO_SetOutput(AT91C_BASE_PIOA, LED_MASK);

      // Loop forever
      for (; {
      for (i = 0; i < NB_LED {

      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[1]);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[2]);
      wait();
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[1]);
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[2]);
      wait();


      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[0]);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[3]);
      wait();
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[0]);
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[3]);
      wait();





      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[0]);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[1]);
      wait();
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[0]);
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[1]);
      wait();


      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[2]);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, led_mask[3]);
      wait();
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[2]);
      AT91F_PIO_SetOutput (AT91C_BASE_PIOA, led_mask[3]);
      wait();
      }

      }
      }

      اگه دقت کنی تو سطرهای اول یه متغیر speed بر حسب کلاک تعریف شده خوب حالا تو یه عدد داری برحسب کلاک که میتونی باهاش شرط حلقه رو تعریف کنی خوب یه حلقه for میخوای که داخل یه تابع مثلا به اسم wait تعریف میشه تا هر وقت این تابع رو فراخوندی به مقداری که تعریف کردی تاخیر ایجاد کنه.
      حالااگه برنامه رو با دقت بخونی خودت بهتر از من میفهمی.
      It's nice to be important but it's important to be nice!

      از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

      دیدگاه


        #33
        پاسخ : چند sampile بسیار ابتدایی برای iar و at91sam7sxx


        مرسی ،

        شما میتونید دقیقا اون برنا مه ای که من واسه code vision نوشتم رو برای IAR بنویسید ؟
        بگو که گل نفرستد کسی به خانه من
        که عطر یاد تو پر کرده آشیانه من

        دیدگاه

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