اطلاعیه

Collapse
No announcement yet.

برنامه 7segment

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

    برنامه 7segment

    سلام بچه ها
    برنامه زیرو نوشتم:
    کد:
    #include <mega32.h>
    #include <delay.h>
    
    char segment[]={64,121,36,48,25,18,2,120,0,16,8,3,70,33,6,14};
    void main(void){
    int a;
    DDRD=0b11111111;
    DDRA=0b11111111;
    
    
       while(1){
       for (a=0;a<16;a++) {
       PORTD=segment[a];
       delay_ms(800);
                 }
              
       PORTA.2=0;
       delay_ms(500);
       PORTA.2=1;}
                
       
    }
    برنامه ساده و به این شکله که از 0 تار f رو میشماره و در آخر یه بازر رو به صدا در میاره و دوباره 0 میشه. برنامه درست کارمیکنه فقط واسه همون اول که برق مدار وصل میشه بازر صدا میده تا یه بار تا f بشماره و از اون به بعد درست کار میکنه.
    حالا میخواستم ببینم مشکلش چیه که اینطوری میشه؟؟؟؟


    #2
    پاسخ : برنامه 7segment

    oo:نگا نگا تو تگ کد بزارید لطفا :agree:

    اینطور که کدتون رو دیدم بازرتو رو پین 2 پورت a هست و active low عمل میکنه شما قبل از حلقه while باید PORTA.2=1 بنویسید و بهتره کاری کنید بازر با یک شدن عمل کنه که در اینصورت فقط باید در حلقه while جای PORTA.2=0 و PORTA.2=1 رو عوض کنید.
    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

    دیدگاه


      #3
      پاسخ : برنامه 7segment

      ممنون از پاسختون. آره active low عمل میکنه ولی خوب واسه چی باید از PORTA.2=1 قبل از while استفاده کرد؟ ینی پورت A به عنوان خروجی انتخاب شده ولی هنوز که دستوری مبنی بر 0 یا 1 بودن آن داده نشده پس چرا روش 0 است و بازر فعال میشه؟؟؟
      اگه میشه لطف کن کمی در این مورد توضیح بده.

      دیدگاه


        #4
        پاسخ : برنامه 7segment

        نوشته اصلی توسط armay
        ممنون از پاسختون. آره active low عمل میکنه ولی خوب واسه چی باید از PORTA.2=1 قبل از while استفاده کرد؟ ینی پورت A به عنوان خروجی انتخاب شده ولی هنوز که دستوری مبنی بر 0 یا 1 بودن آن داده نشده پس چرا روش 0 است و بازر فعال میشه؟؟؟
        اگه میشه لطف کن کمی در این مورد توضیح بده.
        ببنید رجیسترها یک مقدار اولیه ای دارند که رجیستر های مربوط به پورت ها مقدار اولیشون صفر هست و شما در این برنامه چون بازرتون active low بسته شده اگر مقدار اولیه روی پین 2 پورت a را 1 نکنید و صفر بمونه از همون اول صدا بازرتون در میاد چون مقدار رو پین صفره همون اول
        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

        دیدگاه

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