اطلاعیه

Collapse
No announcement yet.

ایجاد یک تایمر ساده (ثانیه شمار) با میکرو Mega8

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

    #16
    پاسخ : ایجاد یک تایمر ساده (ثانیه شمار) با میکرو Mega8

    خوب بلخره تونستم یه ساعت دقیق درست کنم ( از همه دوستان ممنون هستم )

    برای این که اون دوستانی که بعدا با جستجو به این صفحه می رسن دست خالی نمونن گفتم یه نمونه بزارم

    خوب میکرو : Mega8L
    کریستال ساعت 32768 هرتزه
    محیط : کدویژن

    خوب قسمت سخت افزاری کار :
    پایه های کریستال ساعت رو به پایه های شماره 9 و 10 میکرو Mega8L لحیم می کنیم

    خوب قسمت نرم افزاری کار :


    کد:
    #include <mega8.h>
    #include <stdio.h>
    #include <alcd.h>
    
    unsigned char h,m,s;
    
    void show(void)
    {
    char str1[32];
    sprintf(str1,"time= %d:%d:%d",h,m,s);
    lcd_clear();
    lcd_puts(str1);
    }
    
    interrupt [TIM2_OVF] void timer2_ovf_isr(void)
    {
    if(s==59)
      {
        s=0;
        if(m==59)
          {
           m=0;
           h++;
           if(h==24)h=0; 
          }
        else
          m++;
      }
    else
      s++;  
    show();
    }
    
    void main(void)
    {
    ASSR=0x08;
    TCCR2=0x05;
    TCNT2=0x00;
    OCR2=0x00;
    
    TIMSK=0x40;
    
    lcd_init(16);
    
    #asm("sei")
    
    while (1);
    }

    امیدوارم که مفید بوده باشه :nice:
    ندن ساقی صفا اهلی ، غم دنیادن آیریلماز ** گتیر دولدور گینه جامی ، بالیخ دریادن آیریلماز
    غنیمتدیر بو دم ساقی ، گتیر دولدور گنه جامی ** جهاندا رسمدور عاشق ، می و مینادن آیریلماز

    دیدگاه


      #17
      پاسخ : ایجاد یک تایمر ساده (ثانیه شمار) با میکرو Mega8

      دیدگاه


        #18
        پاسخ : ایجاد یک تایمر ساده (ثانیه شمار) با میکرو Mega8

        ادامه while چی؟

        دیدگاه


          #19
          پاسخ : ایجاد یک تایمر ساده (ثانیه شمار) با میکرو Mega8

          نوشته اصلی توسط reza611 نمایش پست ها
          ادامه while چی؟
          سلام.
          while خالی هست، هر کدی بخواین میتونین توش بنویسین.
          توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
          همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
          https://www.youtube.com/@aKaReZa75​

          دیدگاه


            #20
            پاسخ : ایجاد یک تایمر ساده (ثانیه شمار) با میکرو Mega8

            نوشته اصلی توسط ele_sav نمایش پست ها
            خوب بلخره تونستم یه ساعت دقیق درست کنم ( از همه دوستان ممنون هستم )

            برای این که اون دوستانی که بعدا با جستجو به این صفحه می رسن دست خالی نمونن گفتم یه نمونه بزارم

            خوب میکرو : Mega8L
            کریستال ساعت 32768 هرتزه
            محیط : کدویژن

            خوب قسمت سخت افزاری کار :
            پایه های کریستال ساعت رو به پایه های شماره 9 و 10 میکرو Mega8L لحیم می کنیم

            خوب قسمت نرم افزاری کار :


            کد:
            #include <mega8.h>
            #include <stdio.h>
            #include <alcd.h>
            
            unsigned char h,m,s;
            
            void show(void)
            {
            char str1[32];
            sprintf(str1,"time= %d:%d:%d",h,m,s);
            lcd_clear();
            lcd_puts(str1);
            }
            
            interrupt [TIM2_OVF] void timer2_ovf_isr(void)
            {
            if(s==59)
              {
                s=0;
                if(m==59)
                  {
                   m=0;
                   h++;
                   if(h==24)h=0; 
                  }
                else
                  m++;
              }
            else
              s++;  
            show();
            }
            
            void main(void)
            {
            ASSR=0x08;
            TCCR2=0x05;
            TCNT2=0x00;
            OCR2=0x00;
            
            TIMSK=0x40;
            
            lcd_init(16);
            
            #asm("sei")
            
            while (1);
            }

            امیدوارم که مفید بوده باشه :nice:
            شما باید تایع showرا در داخل حلقه while قرار بدید.
            اهمیت این مموضوع به دقیق شدن برنامه شما بسیار کمک خواهد کرد.شما در داخل تابع showیک دستورسنگین sprintfرو فراخوانی کرددید که زمان زیادی رو و رو در داخل خودوقفه rtc تلف میکنه.درسته که شما خازج از وقفه rtcزمان یک ثانیه را ساختید اما با این شرایط زمانی که درداخل حلقه هستیدممکن کلاک یاید را از دست خواهید داد.
            eshop-hodhod.ir

            دیدگاه

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