اطلاعیه

Collapse
No announcement yet.

طریقه نگه داشتن شمارش در یک ساعت و تنظیم آن

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

    طریقه نگه داشتن شمارش در یک ساعت و تنظیم آن

    با سلام خدمت عزیزان،من از سال 87 عضوم ولی این دمین پستمه :biggrin: و میخوام از این به بعد اینجا زیاد فعالیت کنم تا چیزای زیادی یاد بگیرم.یه سوالی داشتم
    من یه برنامه ساعت با کد ویژن و با استفاده از Timer 2 و قابلیت RTC نوشتم و میخوام قابلیت تنظیم هم بهش بدم.بدین صورت که وقتی یک کلید رو میزنی علاوه بر توقف شمارش ساعت به منوی تنظیم ساعت برییم.من با هیچکدوم اینها مشکل ندارم مگر متوقف کردن شمارش ساعت! بنابراین اولین سوال من اینه که من چطور یک شمارنده رو ( در این مثال ساعت) متوقف کنم؟
    سوال دومم اینه که اگر قرار باشه یک کلید راست پیما باشه،مثلا با یک باز زدن کلید، علامت -- به زیر دقیقه شمار و با زدن مجدد کلید علامت -- به زیر ثانیه شمار بره، من چطور کدش رو بنویسم؟ زیر دقیقه شمار و مشکلی نیست ولی ثانیه شمار و نمیدونم به کلید چی بدم که بره زیرش.ناگفته نماند که وقتی کلید توقف ساعت و شروع تنظیمات رو میزنیم همزمان -- زیر ساعت شمار میره.من برای بردن -- به زیر دقیقه شمار این کد رو نوشتم
    if(PINA.4==0)
    delay_ms(200);
    while(PINA.4==0);
    LCd_gotoxy(3,1);
    lcd_putsf("--"
    حالا چی بنویسم که با زدن مجدد همین کلید PINA.4 علامت -- بره زیر ثانیه شمار؟
    پیشاپیش از راهنماییهاتون ممنونم...

    #2
    پاسخ : طریقه نگه داشتن شمارش در یک ساعت و تنظیم آن

    برای متوقف کردن ساعت به شرطی که از وقفه ی دیگه ای استفاده نکرده باشین،میتونین رجیستر وقفه سراسری را غیر فعال کنین.بعد هر وقت دوباره خواستین ساعت بره جلو،فعالش کنین.
    کد:
    #asm ("cli")
    برای رفتن علامت خط تیره زیر دقیقه و ساعت هم میتونید یه متغیر مثل i تعریف کنین و بگین
    کد:
    lcd_gotoxy(3+i,1);
    حالا هربار دکمه زده میشه i را هم پلاس پلاس کنین.اگه هم میخواین دوتا دوتا بره جلو اینو بزنین
    کد:
    lcd_gotoxy(3+(2*i),1);
    آخر کار هم که تنظیم تموم شد i را دوباره صفرش کنین.
    آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

    دیدگاه


      #3
      پاسخ : طریقه نگه داشتن شمارش در یک ساعت و تنظیم آن

      نوشته اصلی توسط pooyan-shafiei
      برای متوقف کردن ساعت به شرطی که از وقفه ی دیگه ای استفاده نکرده باشین،میتونین رجیستر وقفه سراسری را غیر فعال کنین.بعد هر وقت دوباره خواستین ساعت بره جلو،فعالش کنین.
      کد:
      #asm ("cli")
      برای رفتن علامت خط تیره زیر دقیقه و ساعت هم میتونید یه متغیر مثل i تعریف کنین و بگین
      کد:
      lcd_gotoxy(3+i,1);
      حالا هربار دکمه زده میشه i را هم پلاس پلاس کنین.اگه هم میخواین دوتا دوتا بره جلو اینو بزنین
      کد:
      lcd_gotoxy(3+(2*i),1);
      آخر کار هم که تنظیم تموم شد i را دوباره صفرش کنین.
      ممنونم دوست عزیز

      دیدگاه

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