اطلاعیه

Collapse
No announcement yet.

counter

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

    counter

    با سلام من یه برنامه نوشتم که به صورت باینری بشماره وخروجی را روی پورتa میریزه وروی led نشون میده اما led وقتی روشن میشه دیگه خاموش نمیشه از دوستان خواهش میکنم راهنمایی کنند اینم برنامم ممنون#include<AT91SAM7X256.h>
    #include<lib_AT91SAM7X256.h>
    #include<delay.h>
    unsigned int a=0;

    int main(void){
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,0x3FFFFFFF);
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA,0x3FFFFFFF);
    while(1)
    {
    a=a++;
    //AT91F_PIO_CfgOutput( AT91C_BASE_PIOB,a);
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,a);
    delay_ms(20);
    //if(a==0x4e20)
    //a=0;
    }
    }

    #2
    پاسخ : counter

    اقای زوار عزیز سلام
    اگه اشتباه نکرده باشم شما امده اید و با صفر کردن خروجی led رو روشن کردید . خوب برای اینکه بعد از روشن کردن در دفعه بعد خاموش شود باید که مقدار داخل متغییر a را که در تابع صفر کننده که در اصل داخل رجیستر *AT91C_PIOA_CODR می ریزید را یک بار دیگر و به صورت نات ان را در داخل رجیستر *AT91C_PIOA_SODR قرار دهید یا همان تابع یک کننده خروجی . به عنوان نمونه تکه برنامه زیر را ببینید .

    *AT91C_PIOA_SODR|= (port_dac & number );
    *AT91C_PIOA_CODR|= (port_dac & (~number));
    که در اینجا میزان داخل متغییر number در داخل پورت قرار می گیرد و هر بیتی که صفر باشد در خروجی صفر و هر کدام که یک باشد در خروجی یک است .

    دیدگاه


      #3
      پاسخ : counter

      من با keil کار مکنم اما این دستور را نمیشناسهport_dac

      دیدگاه


        #4
        پاسخ : counter

        اون هم مربوط به قسمتی از برنامه خودم بود و اهمیت نداره .

        دیدگاه


          #5
          پاسخ : counter

          من اینجوری نوشتم اما بازم ارور میده
          AT91C_PIOA_SODR|= ( number );
          AT91C_PIOA_CODR|= ((~number))

          دیدگاه


            #6
            پاسخ : counter

            دقیقا همین جوری بنویس .

            کد:
              ;AT91C_PIOA_SODR|= number *  
              ; AT91C_PIOA_CODR|= ~number *
            نمی دونم که چرا ولی هر کاری که می کنم نمی شه کد نوشت یا خراب می شه . قبل از اینکه از رجیسترها استفاده کنی چون از نوع پوینتر است باید از * استفاده کنی .

            دیدگاه

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