اطلاعیه

Collapse
No announcement yet.

مشکل این برنامه چیه؟

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

    مشکل این برنامه چیه؟

    سلام
    میخام هر یک ثانیه،یکی ب عدد روی ال سی دی اضافه بشه.
    #include <mega16.h>
    #include <lcd.h>
    #include <stdio.h>
    #define xtal 1000000
    #asm
    .equ __lcd_port=0x1B ;PORTA
    #endasm
    void main(void)
    {
    unsigned char lcd_buff[10];
    unsigned char n,m;
    lcd_init(16);
    while (1)
    {
    TCCR0=0x02;
    TCNT0=0x06;
    if(TIFR&0x02){
    TCNT0=0x06;
    TIFR=TIFR|0x02;
    m++;}
    if(m==500){
    n++;
    lcd_clear();
    lcd_gotoxy(0,0);
    sprintf(lcd_buff,"%d",n);
    lcd_puts(lcd_buff);
    m=0;
    }
    ;
    }
    }
    با تشکر
    مرحبا همت قومی که چو دلبر گیرند
    بجـز از دلبـر خود از همه دل بر گیرند

    #2
    پاسخ : مشکل این برنامه چیه؟

    اگه امکانش هست راهنمایی کنید.
    مرحبا همت قومی که چو دلبر گیرند
    بجـز از دلبـر خود از همه دل بر گیرند

    دیدگاه


      #3
      پاسخ : مشکل این برنامه چیه؟

      اگه یک ثانیه دقیق می خوای یه کریستال ساعت وصل کن به پایه های TOSC1,2 و تایمر رو در مد اسنکرون با prescale 128 قرار بده. در وقفه تایمر که هر یک ثانیه اتفاق میوفته یکی به مقدار متغییر اضافه کن و در while اصلی نمایش بده.
      اگر هم می خوای با همین تایمر صفر کار کنی بگو تا راهنماییت کنم.
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #4
        پاسخ : مشکل این برنامه چیه؟

        ضمن تشکر از شما
        اگه اشکال همین برنامه رو بگید ممنون میشم.
        مرحبا همت قومی که چو دلبر گیرند
        بجـز از دلبـر خود از همه دل بر گیرند

        دیدگاه


          #5
          پاسخ : مشکل این برنامه چیه؟

          اشکالات برنامتون :
          1- متغیر نوع char که شما تعریف کردید نهایتا میتونه مقدار 255 بگیره نه 500
          2- ovf ثبات TIMSK تو بیت صفر نه یک در ضمن دستور شرطی هم که داخل if بکار برده بودید به اون شکل اشتباهه
          3- همیشه اول ثبات شمارنده رو پیکربندی میکنن بعد ثبات کنترل (اول TCNT0 بعد TCCR0)

          برنامه تصحیح شده:

          کد:
          #include <mega16.h>
          #include <lcd.h>
          #include <stdio.h>
          #define xtal 1000000
          #asm
            .equ __lcd_port=0x1B ;PORTA
          #endasm
          void main(void)
          {
          unsigned char lcd_buff[10];
          unsigned int n=0,m=0;
          lcd_init(16);
          TCNT0=0x06;
          while (1)
             {   
             TCCR0=0x02;  
             while(!TIFR&0x01);
             TCCR0=0x00;   
             TCNT0=0x06;
             TIFR=TIFR|0x01;
             m++;
             if(m == 500)
             {
             n++;
             lcd_clear(); 
             lcd_gotoxy(0,0);
             sprintf(lcd_buff,"%d",n);
             lcd_puts(lcd_buff);
             m=0;
             }
             }
          }

          دیدگاه


            #6
            پاسخ : مشکل این برنامه چیه؟

            پروژه کد ویژن به همراه فایل پروتئوسhttp://s2.picofile.com/file/7589086341/Timer.rar.html

            دیدگاه

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